diff --git a/DEPS b/DEPS
index bc000ff..7d66e721e 100644
--- a/DEPS
+++ b/DEPS
@@ -40,7 +40,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': 'ec8f8b064340b030fc4ce10f6cbbc3d6f63b946f',
+  'skia_revision': 'e6c210ae01137b283ba7c55b3b197771f425eb74',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
@@ -48,11 +48,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
-  'swarming_revision': 'e6fc9383ad7c38b3464141989b7bc498391e57e4',
+  'swarming_revision': 'a941a089ff1000403078b74cb628eb430f07d271',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': 'b4cf5656260cc6a7a0bff2543c5c29310d05bb02',
+  'angle_revision': '82830edeacade1dd52ba8bc2338ecb195641c5e3',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling build tools
   # and whatever else without interference from each other.
@@ -96,7 +96,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '59e58189c55d9c5cc0e8e30bad254b7eb2e99634',
+  'catapult_revision': '1ff6ffc1f618848b6a3755daad304ad5839cf182',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn
index 7ba1756..cb2c49d 100644
--- a/android_webview/BUILD.gn
+++ b/android_webview/BUILD.gn
@@ -36,128 +36,6 @@
   }
 }
 
-source_set("native") {
-  deps = [
-    ":native_jni",
-    "//android_webview:generate_components_strings",
-    "//android_webview/common:version",
-    "//base",
-    "//base/third_party/dynamic_annotations:dynamic_annotations",
-    "//cc:cc",
-    "//components/autofill/content/browser:browser",
-    "//components/spellcheck:build_features",
-    "//components/web_contents_delegate_android:web_contents_delegate_android",
-    "//content/public/common",
-    "//media",
-    "//net",
-    "//skia",
-    "//storage/browser",
-    "//storage/common",
-    "//third_party/boringssl",
-    "//ui/base",
-    "//ui/gfx",
-    "//ui/gfx/geometry:geometry",
-  ]
-
-  include_dirs = [
-    "//skia/config",
-    "//third_party/protobuf",
-  ]
-
-  sources = [
-    "browser/address_parser.cc",
-    "browser/address_parser.h",
-    "browser/address_parser_internal.cc",
-    "browser/address_parser_internal.h",
-    "browser/android_protocol_handler.cc",
-    "browser/android_protocol_handler.h",
-    "browser/android_webview_jni_registrar.cc",
-    "browser/android_webview_jni_registrar.h",
-    "browser/aw_autofill_client.cc",
-    "browser/aw_autofill_client.h",
-    "browser/aw_contents.cc",
-    "browser/aw_contents.h",
-    "browser/aw_contents_background_thread_client.cc",
-    "browser/aw_contents_background_thread_client.h",
-    "browser/aw_contents_client_bridge.cc",
-    "browser/aw_contents_client_bridge.h",
-    "browser/aw_contents_io_thread_client_impl.cc",
-    "browser/aw_contents_io_thread_client_impl.h",
-    "browser/aw_contents_lifecycle_notifier.cc",
-    "browser/aw_contents_lifecycle_notifier.h",
-    "browser/aw_contents_statics.cc",
-    "browser/aw_contents_statics.h",
-    "browser/aw_debug.cc",
-    "browser/aw_debug.h",
-    "browser/aw_devtools_server.cc",
-    "browser/aw_devtools_server.h",
-    "browser/aw_form_database.cc",
-    "browser/aw_form_database.h",
-    "browser/aw_gl_functor.cc",
-    "browser/aw_gl_functor.h",
-    "browser/aw_http_auth_handler.cc",
-    "browser/aw_http_auth_handler.h",
-    "browser/aw_locale_manager_impl.cc",
-    "browser/aw_locale_manager_impl.h",
-    "browser/aw_media_url_interceptor.cc",
-    "browser/aw_media_url_interceptor.h",
-    "browser/aw_metrics_log_uploader.cc",
-    "browser/aw_metrics_log_uploader.h",
-    "browser/aw_metrics_service_client_impl.cc",
-    "browser/aw_metrics_service_client_impl.h",
-    "browser/aw_pdf_exporter.cc",
-    "browser/aw_pdf_exporter.h",
-    "browser/aw_picture.cc",
-    "browser/aw_picture.h",
-    "browser/aw_quota_manager_bridge_impl.cc",
-    "browser/aw_quota_manager_bridge_impl.h",
-    "browser/aw_renderer_priority_manager.cc",
-    "browser/aw_renderer_priority_manager.h",
-    "browser/aw_resource.cc",
-    "browser/aw_settings.cc",
-    "browser/aw_settings.h",
-    "browser/aw_web_contents_delegate.cc",
-    "browser/aw_web_contents_delegate.h",
-    "browser/aw_web_contents_view_delegate.cc",
-    "browser/aw_web_contents_view_delegate.h",
-    "browser/aw_web_preferences_populater_impl.cc",
-    "browser/aw_web_preferences_populater_impl.h",
-    "browser/aw_web_resource_response_impl.cc",
-    "browser/aw_web_resource_response_impl.h",
-    "browser/cookie_manager.cc",
-    "browser/cookie_manager.h",
-    "browser/input_stream_impl.cc",
-    "browser/input_stream_impl.h",
-    "browser/java_browser_view_renderer_helper.cc",
-    "browser/java_browser_view_renderer_helper.h",
-    "browser/net_init_native_callback.cc",
-    "browser/permission/aw_permission_request.cc",
-    "browser/permission/aw_permission_request.h",
-    "browser/permission/aw_permission_request_delegate.cc",
-    "browser/permission/aw_permission_request_delegate.h",
-    "browser/permission/media_access_permission_request.cc",
-    "browser/permission/media_access_permission_request.h",
-    "browser/permission/permission_request_handler.cc",
-    "browser/permission/permission_request_handler.h",
-    "browser/permission/permission_request_handler_client.cc",
-    "browser/permission/permission_request_handler_client.h",
-    "browser/permission/simple_permission_request.cc",
-    "browser/permission/simple_permission_request.h",
-    "browser/popup_touch_handle_drawable.cc",
-    "browser/popup_touch_handle_drawable.h",
-    "browser/state_serializer.cc",
-    "browser/state_serializer.h",
-    "browser/token_binding_manager_bridge.cc",
-    "browser/token_binding_manager_bridge.h",
-  ]
-
-  if (enable_spellcheck) {
-    deps += [ "//components/spellcheck/browser:browser" ]
-  }
-
-  libs = [ "jnigraphics" ]
-}
-
 generate_jni("native_jni") {
   sources = [
     "java/src/org/chromium/android_webview/AndroidProtocolHandler.java",
@@ -541,6 +419,16 @@
 
 source_set("common") {
   sources = [
+    "browser/address_parser.cc",
+    "browser/address_parser.h",
+    "browser/address_parser_internal.cc",
+    "browser/address_parser_internal.h",
+    "browser/android_protocol_handler.cc",
+    "browser/android_protocol_handler.h",
+    "browser/android_webview_jni_registrar.cc",
+    "browser/android_webview_jni_registrar.h",
+    "browser/aw_autofill_client.cc",
+    "browser/aw_autofill_client.h",
     "browser/aw_browser_context.cc",
     "browser/aw_browser_context.h",
     "browser/aw_browser_main_parts.cc",
@@ -552,41 +440,80 @@
     "browser/aw_browser_terminator.h",
     "browser/aw_content_browser_client.cc",
     "browser/aw_content_browser_client.h",
+    "browser/aw_contents.cc",
+    "browser/aw_contents.h",
+    "browser/aw_contents_background_thread_client.cc",
+    "browser/aw_contents_background_thread_client.h",
+    "browser/aw_contents_client_bridge.cc",
+    "browser/aw_contents_client_bridge.h",
     "browser/aw_contents_client_bridge_base.cc",
     "browser/aw_contents_client_bridge_base.h",
     "browser/aw_contents_io_thread_client.h",
+    "browser/aw_contents_io_thread_client_impl.cc",
+    "browser/aw_contents_io_thread_client_impl.h",
+    "browser/aw_contents_lifecycle_notifier.cc",
+    "browser/aw_contents_lifecycle_notifier.h",
+    "browser/aw_contents_statics.cc",
+    "browser/aw_contents_statics.h",
     "browser/aw_cookie_access_policy.cc",
     "browser/aw_cookie_access_policy.h",
+    "browser/aw_debug.cc",
+    "browser/aw_debug.h",
     "browser/aw_devtools_manager_delegate.cc",
     "browser/aw_devtools_manager_delegate.h",
+    "browser/aw_devtools_server.cc",
+    "browser/aw_devtools_server.h",
     "browser/aw_download_manager_delegate.cc",
     "browser/aw_download_manager_delegate.h",
+    "browser/aw_form_database.cc",
+    "browser/aw_form_database.h",
     "browser/aw_form_database_service.cc",
     "browser/aw_form_database_service.h",
+    "browser/aw_gl_functor.cc",
+    "browser/aw_gl_functor.h",
     "browser/aw_gl_surface.cc",
     "browser/aw_gl_surface.h",
+    "browser/aw_http_auth_handler.cc",
+    "browser/aw_http_auth_handler.h",
     "browser/aw_http_auth_handler_base.cc",
     "browser/aw_http_auth_handler_base.h",
     "browser/aw_javascript_dialog_manager.cc",
     "browser/aw_javascript_dialog_manager.h",
     "browser/aw_locale_manager.h",
+    "browser/aw_locale_manager_impl.cc",
+    "browser/aw_locale_manager_impl.h",
     "browser/aw_login_delegate.cc",
     "browser/aw_login_delegate.h",
+    "browser/aw_media_url_interceptor.cc",
+    "browser/aw_media_url_interceptor.h",
+    "browser/aw_metrics_log_uploader.cc",
+    "browser/aw_metrics_log_uploader.h",
     "browser/aw_metrics_service_client.cc",
     "browser/aw_metrics_service_client.h",
+    "browser/aw_metrics_service_client_impl.cc",
+    "browser/aw_metrics_service_client_impl.h",
+    "browser/aw_pdf_exporter.cc",
+    "browser/aw_pdf_exporter.h",
     "browser/aw_permission_manager.cc",
     "browser/aw_permission_manager.h",
+    "browser/aw_picture.cc",
+    "browser/aw_picture.h",
     "browser/aw_print_manager.cc",
     "browser/aw_print_manager.h",
     "browser/aw_printing_message_filter.cc",
     "browser/aw_printing_message_filter.h",
     "browser/aw_quota_manager_bridge.cc",
     "browser/aw_quota_manager_bridge.h",
+    "browser/aw_quota_manager_bridge_impl.cc",
+    "browser/aw_quota_manager_bridge_impl.h",
     "browser/aw_quota_permission_context.cc",
     "browser/aw_quota_permission_context.h",
     "browser/aw_render_process_gone_delegate.h",
     "browser/aw_render_thread_context_provider.cc",
     "browser/aw_render_thread_context_provider.h",
+    "browser/aw_renderer_priority_manager.cc",
+    "browser/aw_renderer_priority_manager.h",
+    "browser/aw_resource.cc",
     "browser/aw_resource_context.cc",
     "browser/aw_resource_context.h",
     "browser/aw_result_codes.h",
@@ -598,10 +525,20 @@
     "browser/aw_safe_browsing_resource_throttle.h",
     "browser/aw_safe_browsing_ui_manager.cc",
     "browser/aw_safe_browsing_ui_manager.h",
+    "browser/aw_settings.cc",
+    "browser/aw_settings.h",
     "browser/aw_ssl_host_state_delegate.cc",
     "browser/aw_ssl_host_state_delegate.h",
+    "browser/aw_web_contents_delegate.cc",
+    "browser/aw_web_contents_delegate.h",
+    "browser/aw_web_contents_view_delegate.cc",
+    "browser/aw_web_contents_view_delegate.h",
     "browser/aw_web_preferences_populater.cc",
     "browser/aw_web_preferences_populater.h",
+    "browser/aw_web_preferences_populater_impl.cc",
+    "browser/aw_web_preferences_populater_impl.h",
+    "browser/aw_web_resource_response_impl.cc",
+    "browser/aw_web_resource_response_impl.h",
     "browser/browser_view_renderer.cc",
     "browser/browser_view_renderer.h",
     "browser/browser_view_renderer_client.h",
@@ -613,6 +550,8 @@
     "browser/compositor_frame_producer.h",
     "browser/compositor_id.cc",
     "browser/compositor_id.h",
+    "browser/cookie_manager.cc",
+    "browser/cookie_manager.h",
     "browser/deferred_gpu_command_service.cc",
     "browser/deferred_gpu_command_service.h",
     "browser/find_helper.cc",
@@ -624,6 +563,10 @@
     "browser/icon_helper.cc",
     "browser/icon_helper.h",
     "browser/input_stream.h",
+    "browser/input_stream_impl.cc",
+    "browser/input_stream_impl.h",
+    "browser/java_browser_view_renderer_helper.cc",
+    "browser/java_browser_view_renderer_helper.h",
     "browser/jni_dependency_factory.h",
     "browser/net/android_stream_reader_url_request_job.cc",
     "browser/net/android_stream_reader_url_request_job.h",
@@ -653,10 +596,25 @@
     "browser/net/token_binding_manager.h",
     "browser/net_disk_cache_remover.cc",
     "browser/net_disk_cache_remover.h",
+    "browser/net_init_native_callback.cc",
     "browser/parent_compositor_draw_constraints.cc",
     "browser/parent_compositor_draw_constraints.h",
     "browser/parent_output_surface.cc",
     "browser/parent_output_surface.h",
+    "browser/permission/aw_permission_request.cc",
+    "browser/permission/aw_permission_request.h",
+    "browser/permission/aw_permission_request_delegate.cc",
+    "browser/permission/aw_permission_request_delegate.h",
+    "browser/permission/media_access_permission_request.cc",
+    "browser/permission/media_access_permission_request.h",
+    "browser/permission/permission_request_handler.cc",
+    "browser/permission/permission_request_handler.h",
+    "browser/permission/permission_request_handler_client.cc",
+    "browser/permission/permission_request_handler_client.h",
+    "browser/permission/simple_permission_request.cc",
+    "browser/permission/simple_permission_request.h",
+    "browser/popup_touch_handle_drawable.cc",
+    "browser/popup_touch_handle_drawable.h",
     "browser/render_thread_manager.cc",
     "browser/render_thread_manager.h",
     "browser/render_thread_manager_client.h",
@@ -668,8 +626,12 @@
     "browser/renderer_host/aw_resource_dispatcher_host_delegate.h",
     "browser/scoped_app_gl_state_restore.cc",
     "browser/scoped_app_gl_state_restore.h",
+    "browser/state_serializer.cc",
+    "browser/state_serializer.h",
     "browser/surfaces_instance.cc",
     "browser/surfaces_instance.h",
+    "browser/token_binding_manager_bridge.cc",
+    "browser/token_binding_manager_bridge.h",
     "browser/tracing/aw_tracing_delegate.cc",
     "browser/tracing/aw_tracing_delegate.h",
     "common/android_webview_message_generator.cc",
@@ -725,8 +687,11 @@
     ":generate_aw_resources",
     ":generate_aw_strings",
     ":generate_components_strings",
-    ":native",
+    ":native_jni",
+    "//android_webview:generate_components_strings",
     "//android_webview/common:version",
+    "//base",
+    "//base/third_party/dynamic_annotations:dynamic_annotations",
     "//cc/surfaces",
     "//components/autofill/content/browser",
     "//components/autofill/content/renderer",
@@ -771,12 +736,17 @@
     "//gpu/skia_bindings",
     "//media",
     "//media/midi",
+    "//net",
     "//net:extras",
     "//printing",
     "//services/service_manager/public/cpp",
     "//skia",
+    "//storage/browser",
+    "//storage/common",
     "//third_party/WebKit/public:blink",
+    "//ui/base",
     "//ui/events:gesture_detection",
+    "//ui/gfx",
     "//ui/gl",
     "//ui/gl/init",
     "//ui/shell_dialogs",
@@ -791,6 +761,8 @@
   }
 
   configs += [ "//v8:external_startup_data" ]
+
+  libs = [ "jnigraphics" ]
 }
 
 android_library("android_webview_java") {
diff --git a/android_webview/browser/hardware_renderer.cc b/android_webview/browser/hardware_renderer.cc
index 42bad7c1..186e744 100644
--- a/android_webview/browser/hardware_renderer.cc
+++ b/android_webview/browser/hardware_renderer.cc
@@ -167,7 +167,7 @@
   DCHECK(child_id_.is_valid());
 
   surfaces_->RemoveChildId(cc::SurfaceId(frame_sink_id_, child_id_));
-  support_->EvictFrame();
+  support_->EvictCurrentSurface();
   child_id_ = cc::LocalSurfaceId();
 }
 
diff --git a/base/files/file_path.cc b/base/files/file_path.cc
index 5b1eb29..734d522d 100644
--- a/base/files/file_path.cc
+++ b/base/files/file_path.cc
@@ -209,6 +209,10 @@
 #endif  // defined(FILE_PATH_USES_DRIVE_LETTERS)
 }
 
+std::ostream& operator<<(std::ostream& out, const FilePath& file_path) {
+  return out << file_path.value();
+}
+
 // static
 bool FilePath::IsSeparator(CharType character) {
   for (size_t i = 0; i < kSeparatorsLength - 1; ++i) {
diff --git a/base/files/file_path.h b/base/files/file_path.h
index 084d62fc..31d419c3 100644
--- a/base/files/file_path.h
+++ b/base/files/file_path.h
@@ -457,6 +457,8 @@
 // This should not be used in production code - call ToString() instead.
 void PrintTo(const FilePath& path, std::ostream* out);
 
+std::ostream& operator<<(std::ostream& out, const FilePath& file_path);
+
 }  // namespace base
 
 // Macros for string literal initialization of FilePath::CharType[], and for
diff --git a/base/metrics/persistent_histogram_allocator.cc b/base/metrics/persistent_histogram_allocator.cc
index c73d844..ea1a2356 100644
--- a/base/metrics/persistent_histogram_allocator.cc
+++ b/base/metrics/persistent_histogram_allocator.cc
@@ -565,35 +565,40 @@
     return histogram;
   }
 
-  // Copy the histogram_data to local storage because anything in persistent
-  // memory cannot be trusted as it could be changed at any moment by a
-  // malicious actor that shares access. The contents of histogram_data are
-  // validated below; the local copy is to ensure that the contents cannot
-  // be externally changed between validation and use.
-  PersistentHistogramData histogram_data = *histogram_data_ptr;
+  // Copy the configuration fields from histogram_data_ptr to local storage
+  // because anything in persistent memory cannot be trusted as it could be
+  // changed at any moment by a malicious actor that shares access. The local
+  // values are validated below and then used to create the histogram, knowing
+  // they haven't changed between validation and use.
+  int32_t histogram_type = histogram_data_ptr->histogram_type;
+  int32_t histogram_flags = histogram_data_ptr->flags;
+  int32_t histogram_minimum = histogram_data_ptr->minimum;
+  int32_t histogram_maximum = histogram_data_ptr->maximum;
+  uint32_t histogram_bucket_count = histogram_data_ptr->bucket_count;
+  uint32_t histogram_ranges_ref = histogram_data_ptr->ranges_ref;
+  uint32_t histogram_ranges_checksum = histogram_data_ptr->ranges_checksum;
 
   HistogramBase::Sample* ranges_data =
       memory_allocator_->GetAsArray<HistogramBase::Sample>(
-          histogram_data.ranges_ref, kTypeIdRangesArray,
+          histogram_ranges_ref, kTypeIdRangesArray,
           PersistentMemoryAllocator::kSizeAny);
 
   const uint32_t max_buckets =
       std::numeric_limits<uint32_t>::max() / sizeof(HistogramBase::Sample);
   size_t required_bytes =
-      (histogram_data.bucket_count + 1) * sizeof(HistogramBase::Sample);
+      (histogram_bucket_count + 1) * sizeof(HistogramBase::Sample);
   size_t allocated_bytes =
-      memory_allocator_->GetAllocSize(histogram_data.ranges_ref);
-  if (!ranges_data || histogram_data.bucket_count < 2 ||
-      histogram_data.bucket_count >= max_buckets ||
+      memory_allocator_->GetAllocSize(histogram_ranges_ref);
+  if (!ranges_data || histogram_bucket_count < 2 ||
+      histogram_bucket_count >= max_buckets ||
       allocated_bytes < required_bytes) {
     RecordCreateHistogramResult(CREATE_HISTOGRAM_INVALID_RANGES_ARRAY);
     NOTREACHED();
     return nullptr;
   }
 
-  std::unique_ptr<const BucketRanges> created_ranges =
-      CreateRangesFromData(ranges_data, histogram_data.ranges_checksum,
-                           histogram_data.bucket_count + 1);
+  std::unique_ptr<const BucketRanges> created_ranges = CreateRangesFromData(
+      ranges_data, histogram_ranges_checksum, histogram_bucket_count + 1);
   if (!created_ranges) {
     RecordCreateHistogramResult(CREATE_HISTOGRAM_INVALID_RANGES_ARRAY);
     NOTREACHED();
@@ -603,10 +608,9 @@
       StatisticsRecorder::RegisterOrDeleteDuplicateRanges(
           created_ranges.release());
 
-  size_t counts_bytes =
-      CalculateRequiredCountsBytes(histogram_data.bucket_count);
+  size_t counts_bytes = CalculateRequiredCountsBytes(histogram_bucket_count);
   PersistentMemoryAllocator::Reference counts_ref =
-      subtle::NoBarrier_Load(&histogram_data.counts_ref);
+      subtle::NoBarrier_Load(&histogram_data_ptr->counts_ref);
   if (counts_bytes == 0 ||
       (counts_ref != 0 &&
        memory_allocator_->GetAllocSize(counts_ref) < counts_bytes)) {
@@ -637,18 +641,18 @@
   // Create the right type of histogram.
   std::string name(histogram_data_ptr->name);
   std::unique_ptr<HistogramBase> histogram;
-  switch (histogram_data.histogram_type) {
+  switch (histogram_type) {
     case HISTOGRAM:
       histogram = Histogram::PersistentCreate(
-          name, histogram_data.minimum, histogram_data.maximum, ranges,
-          counts_data, logged_data, &histogram_data_ptr->samples_metadata,
+          name, histogram_minimum, histogram_maximum, ranges, counts_data,
+          logged_data, &histogram_data_ptr->samples_metadata,
           &histogram_data_ptr->logged_metadata);
       DCHECK(histogram);
       break;
     case LINEAR_HISTOGRAM:
       histogram = LinearHistogram::PersistentCreate(
-          name, histogram_data.minimum, histogram_data.maximum, ranges,
-          counts_data, logged_data, &histogram_data_ptr->samples_metadata,
+          name, histogram_minimum, histogram_maximum, ranges, counts_data,
+          logged_data, &histogram_data_ptr->samples_metadata,
           &histogram_data_ptr->logged_metadata);
       DCHECK(histogram);
       break;
@@ -671,8 +675,8 @@
   }
 
   if (histogram) {
-    DCHECK_EQ(histogram_data.histogram_type, histogram->GetHistogramType());
-    histogram->SetFlags(histogram_data.flags);
+    DCHECK_EQ(histogram_type, histogram->GetHistogramType());
+    histogram->SetFlags(histogram_flags);
     RecordCreateHistogramResult(CREATE_HISTOGRAM_SUCCESS);
   } else {
     RecordCreateHistogramResult(CREATE_HISTOGRAM_UNKNOWN_TYPE);
diff --git a/build/android/pylib/gtest/gtest_test_instance.py b/build/android/pylib/gtest/gtest_test_instance.py
index 26288be6..9e4e19a 100644
--- a/build/android/pylib/gtest/gtest_test_instance.py
+++ b/build/android/pylib/gtest/gtest_test_instance.py
@@ -349,8 +349,6 @@
         self._flags.extend(flag for flag in stripped_lines if flag)
     if args.run_disabled:
       self._flags.append('--gtest_also_run_disabled_tests')
-    if args.test_arguments:
-      self._flags.extend(args.test_arguments.split())
 
   @property
   def activity(self):
diff --git a/build/android/pylib/instrumentation/instrumentation_test_instance.py b/build/android/pylib/instrumentation/instrumentation_test_instance.py
index 2324fca..adf36d2 100644
--- a/build/android/pylib/instrumentation/instrumentation_test_instance.py
+++ b/build/android/pylib/instrumentation/instrumentation_test_instance.py
@@ -654,13 +654,6 @@
     if args.regenerate_goldens:
       self._flags.append('--regenerate-goldens')
 
-    if args.test_arguments:
-      # --test-arguments is deprecated for gtests and is in the process of
-      # being removed.
-      raise Exception(
-          '--test-arguments is not supported for instrumentation '
-          'tests. Pass command-line flags directly instead.')
-
   def _initializeDriverAttributes(self):
     self._driver_apk = os.path.join(
         constants.GetOutDirectory(), constants.SDK_BUILD_APKS_DIR,
diff --git a/build/android/pylib/instrumentation/instrumentation_test_instance_test.py b/build/android/pylib/instrumentation/instrumentation_test_instance_test.py
index 2ff8a36..301f95a1 100755
--- a/build/android/pylib/instrumentation/instrumentation_test_instance_test.py
+++ b/build/android/pylib/instrumentation/instrumentation_test_instance_test.py
@@ -47,15 +47,14 @@
         'device_flags_file',
         'strict_mode',
         'regenerate_goldens',
-        'test_arguments',
       ])
 
   def createFlagAttributesArgs(
       self, command_line_flags=None, device_flags_file=None,
-      strict_mode=None, regenerate_goldens=None, test_arguments=None):
+      strict_mode=None, regenerate_goldens=None):
     return self._FlagAttributesArgs(
         command_line_flags, device_flags_file, strict_mode,
-        regenerate_goldens, test_arguments)
+        regenerate_goldens)
 
   def test_initializeFlagAttributes_commandLineFlags(self):
     o = self.createTestInstance()
@@ -92,12 +91,6 @@
     self.assertEquals(
         o._flags, ['--enable-test-intents', '--regenerate-goldens'])
 
-  def test_initializeFlagAttributes_testArgumentsRaisesException(self):
-    o = self.createTestInstance()
-    args = self.createFlagAttributesArgs(test_arguments='--foo --bar')
-    with self.assertRaises(Exception):
-      o._initializeFlagAttributes(args)
-
   def testGetTests_noFilter(self):
     o = self.createTestInstance()
     raw_tests = [
diff --git a/build/android/pylib/instrumentation/render_test.html.jinja b/build/android/pylib/instrumentation/render_test.html.jinja
new file mode 100644
index 0000000..ab84eb4f
--- /dev/null
+++ b/build/android/pylib/instrumentation/render_test.html.jinja
@@ -0,0 +1,14 @@
+<html>
+  <table>
+    <tr>
+      <th>Failure</th>
+      <th>Golden</th>
+      <th>Diff</th>
+    </tr>
+    <tr>
+      <td><img src="{{ failure_link }}" width="100%"/></td>
+      <td><img src="{{ golden_link }}" width="100%"/></td>
+      <td><img src="{{ diff_link }}" width="100%"/></td>
+    </tr>
+  </table>
+</html>
diff --git a/build/android/pylib/local/device/local_device_instrumentation_test_run.py b/build/android/pylib/local/device/local_device_instrumentation_test_run.py
index 9d6a65d..d25f242b 100644
--- a/build/android/pylib/local/device/local_device_instrumentation_test_run.py
+++ b/build/android/pylib/local/device/local_device_instrumentation_test_run.py
@@ -6,6 +6,8 @@
 import os
 import posixpath
 import re
+import sys
+import tempfile
 import time
 
 from devil.android import device_errors
@@ -16,6 +18,7 @@
 from pylib import valgrind_tools
 from pylib.android import logdog_logcat_monitor
 from pylib.base import base_test_result
+from pylib.constants import host_paths
 from pylib.instrumentation import instrumentation_test_instance
 from pylib.local.device import local_device_environment
 from pylib.local.device import local_device_test_run
@@ -26,6 +29,15 @@
 from py_utils import tempfile_ext
 import tombstones
 
+sys.path.append(os.path.join(host_paths.DIR_SOURCE_ROOT, 'third_party'))
+import jinja2  # pylint: disable=import-error
+import markupsafe  # pylint: disable=import-error,unused-import
+
+
+_JINJA_TEMPLATE_DIR = os.path.join(
+    host_paths.DIR_SOURCE_ROOT, 'build', 'android', 'pylib', 'instrumentation')
+_JINJA_TEMPLATE_FILENAME = 'render_test.html.jinja'
+
 _TAG = 'test_runner_py'
 
 TIMEOUT_ANNOTATIONS = [
@@ -43,6 +55,16 @@
 EXTRA_SCREENSHOT_FILE = (
     'org.chromium.base.test.ScreenshotOnFailureStatement.ScreenshotFile')
 
+FEATURE_ANNOTATION = 'Feature'
+RENDER_TEST_FEATURE_ANNOTATION = 'RenderTest'
+
+# This needs to be kept in sync with formatting in |RenderUtils.imageName|
+RE_RENDER_IMAGE_NAME = re.compile(
+      r'(?P<test_class>\w+)\.'
+      r'(?P<description>\w+)\.'
+      r'(?P<device_model>\w+)\.'
+      r'(?P<orientation>port|land)\.png')
+
 # TODO(jbudorick): Make this private once the instrumentation test_runner is
 # deprecated.
 def DidPackageCrashOnDevice(package_name, device):
@@ -249,7 +271,8 @@
   def _RunTest(self, device, test):
     extras = {}
 
-    flags = None
+    flags_to_add = []
+    flags_to_remove = []
     test_timeout_scale = None
     if self._test_instance.coverage_directory:
       coverage_basename = '%s.ec' % ('%s_group' % test[0]['method']
@@ -304,7 +327,8 @@
             self._test_instance.test_package, self._test_instance.test_runner)
       extras['class'] = test_name
       if 'flags' in test:
-        flags = test['flags']
+        flags_to_add.extend(test['flags'].add)
+        flags_to_remove.extend(test['flags'].remove)
       timeout = self._GetTimeoutFromAnnotations(
         test['annotations'], test_display_name)
 
@@ -316,10 +340,19 @@
 
     logging.info('preparing to run %s: %s', test_display_name, test)
 
-    if flags:
+    render_tests_device_output_dir = None
+    if _IsRenderTest(test):
+      # TODO(mikecase): Add DeviceTempDirectory class and use that instead.
+      render_tests_device_output_dir = posixpath.join(
+          device.GetExternalStoragePath(),
+          'render_test_output_dir')
+      flags_to_add.append('--render-test-output-dir=%s' %
+                          render_tests_device_output_dir)
+
+    if flags_to_add or flags_to_remove:
       self._CreateFlagChangerIfNeeded(device)
       self._flag_changers[str(device)].PushFlags(
-        add=flags.add, remove=flags.remove)
+        add=flags_to_add, remove=flags_to_remove)
 
     try:
       device.RunShellCommand(
@@ -348,7 +381,7 @@
           ['log', '-p', 'i', '-t', _TAG, 'END %s' % test_name],
           check_return=True)
       duration_ms = time_ms() - start_ms
-      if flags:
+      if flags_to_add or flags_to_remove:
         self._flag_changers[str(device)].Restore()
       if test_timeout_scale:
         valgrind_tools.SetChromeTimeoutScale(
@@ -364,8 +397,19 @@
       if logcat_url:
         result.SetLink('logcat', logcat_url)
 
+    if _IsRenderTest(test):
+      # Render tests do not cause test failure by default. So we have to check
+      # to see if any failure images were generated even if the test does not
+      # fail.
+      try:
+        self._ProcessRenderTestResults(
+            device, render_tests_device_output_dir, results)
+      finally:
+        device.RemovePath(render_tests_device_output_dir,
+                          recursive=True, force=True)
+
     # Update the result name if the test used flags.
-    if flags:
+    if flags_to_add or flags_to_remove:
       for r in results:
         if r.GetName() == test_name:
           r.SetName(test_display_name)
@@ -467,6 +511,97 @@
           for result in results:
             result.SetLink('post_test_screenshot', link)
 
+  def _ProcessRenderTestResults(
+      self, device, render_tests_device_output_dir, results):
+    # Will archive test images if we are given a GS bucket to store the results
+    # in and are given a results file to output the links to.
+    if not bool(self._test_instance.gs_results_bucket):
+      return
+
+    failure_images_device_dir = posixpath.join(
+        render_tests_device_output_dir, 'failures')
+
+    if not device.FileExists(failure_images_device_dir):
+      return
+
+    render_tests_bucket = (
+        self._test_instance.gs_results_bucket + '/render_tests')
+
+    diff_images_device_dir = posixpath.join(
+        render_tests_device_output_dir, 'diffs')
+
+    golden_images_device_dir = posixpath.join(
+        render_tests_device_output_dir, 'goldens')
+
+    with tempfile_ext.NamedTemporaryDirectory() as temp_dir:
+      device.PullFile(failure_images_device_dir, temp_dir)
+
+      if device.FileExists(diff_images_device_dir):
+        device.PullFile(diff_images_device_dir, temp_dir)
+      else:
+        logging.error('Diff images not found on device.')
+
+      if device.FileExists(golden_images_device_dir):
+        device.PullFile(golden_images_device_dir, temp_dir)
+      else:
+        logging.error('Golden images not found on device.')
+
+      for failure_filename in os.listdir(os.path.join(temp_dir, 'failures')):
+
+        m = RE_RENDER_IMAGE_NAME.match(failure_filename)
+        if not m:
+          logging.warning('Unexpected file in render test failures: %s',
+                          failure_filename)
+          continue
+
+        failure_filepath = os.path.join(temp_dir, 'failures', failure_filename)
+        failure_link = google_storage_helper.upload(
+            google_storage_helper.unique_name(
+                'failure_%s' % failure_filename, device=device),
+            failure_filepath,
+            bucket=render_tests_bucket)
+
+        golden_filepath = os.path.join(temp_dir, 'goldens', failure_filename)
+        if os.path.exists(golden_filepath):
+          golden_link = google_storage_helper.upload(
+              google_storage_helper.unique_name(
+                  'golden_%s' % failure_filename, device=device),
+              golden_filepath,
+              bucket=render_tests_bucket)
+        else:
+          golden_link = ''
+
+        diff_filepath = os.path.join(temp_dir, 'diffs', failure_filename)
+        if os.path.exists(diff_filepath):
+          diff_link = google_storage_helper.upload(
+              google_storage_helper.unique_name(
+                  'diff_%s' % failure_filename, device=device),
+              diff_filepath,
+              bucket=render_tests_bucket)
+        else:
+          diff_link = ''
+
+        with tempfile.NamedTemporaryFile(suffix='.html') as temp_html:
+          jinja2_env = jinja2.Environment(
+              loader=jinja2.FileSystemLoader(_JINJA_TEMPLATE_DIR),
+              trim_blocks=True)
+          template = jinja2_env.get_template(_JINJA_TEMPLATE_FILENAME)
+          # pylint: disable=no-member
+          processed_template_output = template.render(
+              failure_link=failure_link,
+              golden_link=golden_link,
+              diff_link=diff_link)
+
+          temp_html.write(processed_template_output)
+          temp_html.flush()
+          html_results_link = google_storage_helper.upload(
+              google_storage_helper.unique_name('render_html', device=device),
+              temp_html.name,
+              bucket=render_tests_bucket,
+              content_type='text/html')
+          for result in results:
+            result.SetLink(failure_filename, html_results_link)
+
   #override
   def _ShouldRetry(self, test):
     if 'RetryOnFailure' in test.get('annotations', {}):
@@ -502,3 +637,10 @@
     timeout *= cls._GetTimeoutScaleFromAnnotations(annotations)
 
     return timeout
+
+def _IsRenderTest(test):
+  """Determines if a test or list of tests has a RenderTest amongst them."""
+  if not isinstance(test, list):
+    test = [test]
+  return any([RENDER_TEST_FEATURE_ANNOTATION in t['annotations'].get(
+              FEATURE_ANNOTATION, ()) for t in test])
diff --git a/build/android/pylib/results/presentation/template/table.html b/build/android/pylib/results/presentation/template/table.html
index 5c2a266..57c9960 100644
--- a/build/android/pylib/results/presentation/template/table.html
+++ b/build/android/pylib/results/presentation/template/table.html
@@ -25,6 +25,9 @@
             {%- elif cell.cell_type == 'links' -%}
               {% for link in cell.links %}
                 <a href="{{link.href}}" target="{{link.target}}">{{link.data}}</a>
+                {% if not loop.last -%}
+                  <br />
+                {%- endif %}
               {% endfor %}
             {%- elif cell.cell_type == 'action' -%}
               <a onclick="{{cell.action}}">{{cell.data}}</a>
diff --git a/build/android/pylib/results/presentation/test_results_presentation.py b/build/android/pylib/results/presentation/test_results_presentation.py
index e82b16e..7c67f96 100755
--- a/build/android/pylib/results/presentation/test_results_presentation.py
+++ b/build/android/pylib/results/presentation/test_results_presentation.py
@@ -97,7 +97,15 @@
   }
 
 
-def logs_cell(result):
+def flakiness_dashbord_link(test_name, suite_name):
+  url_args = urllib.urlencode([
+      ('testType', suite_name),
+      ('tests', test_name)])
+  return ('https://test-results.appspot.com/'
+         'dashboards/flakiness_dashboard.html#%s' % url_args)
+
+
+def logs_cell(result, test_name, suite_name):
   """Formats result logs data for processing in jinja template."""
   link_list = []
   for name, href in result.get('links', {}).iteritems():
@@ -105,7 +113,10 @@
         data=name,
         href=href,
         target=LinkTarget.NEW_TAB))
-
+  link_list.append(link(
+      data='flakiness',
+      href=flakiness_dashbord_link(test_name, suite_name),
+      target=LinkTarget.NEW_TAB))
   if link_list:
     return links_cell(link_list)
   else:
@@ -128,7 +139,7 @@
   return status
 
 
-def create_test_table(results_dict, cs_base_url):
+def create_test_table(results_dict, cs_base_url, suite_name):
   """Format test data for injecting into HTML table."""
 
   header_row = [
@@ -151,18 +162,18 @@
                      data=test_name)],
             rowspan=len(test_results),
             html_class='left %s' % test_name
-        )]                                        # test_name
+        )]                                          # test_name
       else:
         test_run = []
 
       test_run.extend([
           cell(data=result['status'] or 'UNKNOWN',
-                                                  # status
+                                                    # status
                html_class=('center %s' %
                   status_class(result['status']))),
-          cell(data=result['elapsed_time_ms']),   # elapsed_time_ms
-          logs_cell(result),                      # logs
-          pre_cell(data=result['output_snippet'], # output_snippet
+          cell(data=result['elapsed_time_ms']),     # elapsed_time_ms
+          logs_cell(result, test_name, suite_name), # logs
+          pre_cell(data=result['output_snippet'],   # output_snippet
                    html_class='left'),
       ])
       test_runs.append(test_run)
@@ -266,7 +277,8 @@
                     builder_name, build_number):
   """Convert list of test results into html format."""
 
-  test_rows_header, test_rows = create_test_table(results_dict, cs_base_url)
+  test_rows_header, test_rows = create_test_table(results_dict, cs_base_url,
+                                                  test_name)
   suite_rows_header, suite_rows, suite_row_footer = create_suite_table(
       results_dict)
 
diff --git a/build/android/render_tests/process_render_test_results.py b/build/android/render_tests/process_render_test_results.py
deleted file mode 100755
index 9ab0d1b..0000000
--- a/build/android/render_tests/process_render_test_results.py
+++ /dev/null
@@ -1,214 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2016 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import argparse
-import collections
-import logging
-import os
-import posixpath
-import re
-import shutil
-import sys
-import tempfile
-import zipfile
-
-sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir))
-import devil_chromium
-from devil.android import device_utils
-from devil.utils import cmd_helper
-from pylib.constants import host_paths
-
-sys.path.append(os.path.join(host_paths.DIR_SOURCE_ROOT, 'build'))
-import find_depot_tools  # pylint: disable=import-error
-
-sys.path.append(os.path.join(host_paths.DIR_SOURCE_ROOT, 'third_party'))
-import jinja2  # pylint: disable=import-error
-
-try:
-  from PIL import Image  # pylint: disable=import-error
-  from PIL import ImageChops  # pylint: disable=import-error
-  can_compute_diffs = True
-except ImportError:
-  can_compute_diffs = False
-  logging.exception('Error importing PIL library. Image diffs will not be '
-                    'displayed properly unless PIL module is installed.')
-
-_RE_IMAGE_NAME = re.compile(
-    r'(?P<test_class>\w+)\.'
-    r'(?P<description>\w+)\.'
-    r'(?P<device_model>\w+)\.'
-    r'(?P<orientation>port|land)\.png')
-
-_RENDER_TEST_BASE_URL = 'https://storage.googleapis.com/chromium-render-tests/'
-_RENDER_TEST_BUCKET = 'gs://chromium-render-tests/'
-
-_JINJA_TEMPLATE_DIR = os.path.dirname(os.path.abspath(__file__))
-_JINJA_TEMPLATE_FILENAME = 'render_webpage.html.jinja2'
-
-
-def _UploadFiles(upload_dir, files):
-  """Upload files to the render tests GS bucket."""
-  if files:
-    google_storage_upload_dir = os.path.join(_RENDER_TEST_BUCKET, upload_dir)
-    cmd = [os.path.join(find_depot_tools.DEPOT_TOOLS_PATH, 'gsutil.py'),
-           '-m', 'cp']
-    cmd.extend(files)
-    cmd.append(google_storage_upload_dir)
-    cmd_helper.RunCmd(cmd)
-
-
-def _GoogleStorageUrl(upload_dir, filename):
-  return os.path.join(
-      _RENDER_TEST_BASE_URL, upload_dir, os.path.basename(filename))
-
-
-def _ComputeImageDiff(failure_image, golden_image):
-  """Compute mask showing which pixels are different between two images."""
-  return (ImageChops.difference(failure_image, golden_image)
-      .convert('L')
-      .point(lambda i: 255 if i else 0))
-
-
-def ProcessRenderTestResults(devices, render_results_dir,
-                             upload_dir, html_file):
-  """Grabs render results from device and generates webpage displaying results.
-
-  Args:
-    devices: List of DeviceUtils objects to grab results from.
-    render_results_path: Path where render test results are storage.
-        Will look for failures render test results on the device in
-        /sdcard/chromium_tests_root/<render_results_path>/failures/
-        and will look for golden images at Chromium src/<render_results_path>/.
-    upload_dir: Directory to upload the render test results to.
-    html_file: File to write the test results to.
-  """
-  results_dict = collections.defaultdict(lambda: collections.defaultdict(list))
-
-  diff_upload_dir = os.path.join(upload_dir, 'diffs')
-  failure_upload_dir = os.path.join(upload_dir, 'failures')
-  golden_upload_dir = os.path.join(upload_dir, 'goldens')
-
-  diff_images = []
-  failure_images = []
-  golden_images = []
-
-  temp_dir = None
-  try:
-    temp_dir = tempfile.mkdtemp()
-
-    for device in devices:
-      failures_device_dir = posixpath.join(
-          device.GetExternalStoragePath(),
-          'chromium_tests_root', render_results_dir, 'failures')
-      device.PullFile(failures_device_dir, temp_dir)
-
-    for failure_filename in os.listdir(os.path.join(temp_dir, 'failures')):
-      m = _RE_IMAGE_NAME.match(failure_filename)
-      if not m:
-        logging.warning(
-            'Unexpected file in render test failures, %s', failure_filename)
-        continue
-      failure_file = os.path.join(temp_dir, 'failures', failure_filename)
-
-      # Check to make sure we have golden image for this failure.
-      golden_file = os.path.join(
-          host_paths.DIR_SOURCE_ROOT, render_results_dir, failure_filename)
-      if not os.path.exists(golden_file):
-        logging.error('Cannot find golden image for %s', failure_filename)
-        continue
-
-      # Compute image diff between failure and golden.
-      if can_compute_diffs:
-        diff_image = _ComputeImageDiff(
-            Image.open(failure_file), Image.open(golden_file))
-        diff_filename = '_diff'.join(
-            os.path.splitext(os.path.basename(failure_file)))
-        diff_file = os.path.join(temp_dir, diff_filename)
-        diff_image.save(diff_file)
-        diff_images.append(diff_file)
-
-      failure_images.append(failure_file)
-      golden_images.append(golden_file)
-
-      test_class = m.group('test_class')
-      device_model = m.group('device_model')
-
-      results_entry = {
-          'description': m.group('description'),
-          'orientation': m.group('orientation'),
-          'failure_image': _GoogleStorageUrl(failure_upload_dir, failure_file),
-          'golden_image': _GoogleStorageUrl(golden_upload_dir, golden_file),
-      }
-      if can_compute_diffs:
-        results_entry.update(
-            {'diff_image': _GoogleStorageUrl(diff_upload_dir, diff_file)})
-      results_dict[test_class][device_model].append(results_entry)
-
-    if can_compute_diffs:
-      _UploadFiles(diff_upload_dir, diff_images)
-    _UploadFiles(failure_upload_dir, failure_images)
-    _UploadFiles(golden_upload_dir, golden_images)
-
-    if failure_images:
-      failures_zipfile = os.path.join(temp_dir, 'failures.zip')
-      with zipfile.ZipFile(failures_zipfile, mode='w') as zf:
-        for failure_file in failure_images:
-          zf.write(failure_file, os.path.join(
-              render_results_dir, os.path.basename(failure_file)))
-        failure_zip_url = _GoogleStorageUrl(upload_dir, failures_zipfile)
-      _UploadFiles(upload_dir, [failures_zipfile])
-    else:
-      failure_zip_url = None
-
-    jinja2_env = jinja2.Environment(
-        loader=jinja2.FileSystemLoader(_JINJA_TEMPLATE_DIR),
-        trim_blocks=True)
-    template = jinja2_env.get_template(_JINJA_TEMPLATE_FILENAME)
-    #  pylint: disable=no-member
-    processed_template_output = template.render(
-        full_results=dict(results_dict),
-        failure_zip_url=failure_zip_url, show_diffs=can_compute_diffs)
-    #  pylint: enable=no-member
-    with open(html_file, 'wb') as f:
-      f.write(processed_template_output)
-  finally:
-    if temp_dir:
-      shutil.rmtree(temp_dir)
-
-
-def main():
-  parser = argparse.ArgumentParser()
-
-  parser.add_argument('--render-results-dir',
-                      required=True,
-                      help='Path on device to look for render test images')
-  parser.add_argument('--output-html-file',
-                      required=True,
-                      help='File to output the results webpage.')
-  parser.add_argument('-d', '--device', dest='devices', action='append',
-                      default=[],
-                      help='Device to look for render test results on. '
-                           'Default is to look on all connected devices.')
-  parser.add_argument('--adb-path', type=os.path.abspath,
-                      help='Absolute path to the adb binary to use.')
-  parser.add_argument('--buildername', type=str, required=True,
-                      help='Bot buildername. Used to generate path to upload '
-                           'render test results')
-  parser.add_argument('--build-number', type=str, required=True,
-                      help='Bot build number. Used to generate path to upload '
-                           'render test results')
-
-  args = parser.parse_args()
-  devil_chromium.Initialize(adb_path=args.adb_path)
-  devices = device_utils.DeviceUtils.HealthyDevices(device_arg=args.devices)
-
-  upload_dir = os.path.join(args.buildername, args.build_number)
-  ProcessRenderTestResults(
-      devices, args.render_results_dir, upload_dir, args.output_html_file)
-
-
-if __name__ == '__main__':
-  sys.exit(main())
diff --git a/build/android/render_tests/render_webpage.html.jinja2 b/build/android/render_tests/render_webpage.html.jinja2
deleted file mode 100644
index b5ea6039..0000000
--- a/build/android/render_tests/render_webpage.html.jinja2
+++ /dev/null
@@ -1,84 +0,0 @@
-<!--
- * Copyright 2016 The Chromium Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
--->
-<!DOCTYPE html>
-<html>
-  <head>
-    <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
-    <link rel="stylesheet" href="https://code.getmdl.io/1.2.1/material.blue-indigo.min.css">
-    <script defer src="https://code.getmdl.io/1.2.1/material.min.js"></script>
-
-    <style>
-      div.text-element {
-        text-align: center;
-      }
-      body {
-          background-color: #efefef;
-      }
-    </style>
-  </head>
-
-  <body>
-    {% if failure_zip_url is not none %}
-      <a href="{{ failure_zip_url }}">
-        <div class="mdl-color--primary" width="100%">
-          <h3>Download Image Zip</h3>
-        </div>
-      </a>
-    {% endif %}
-
-    {% for test_class, device_results in full_results.iteritems() %}
-      <div class="mdl-color--primary" width="100%">
-        <h3>{{ test_class }}</h3>
-      </div>
-
-      <div class="mdl-tabs mdl-js-tabs mdl-js-ripple-effect">
-        <div class="mdl-tabs__tab-bar">
-          {% for device_model, _ in device_results.iteritems() %}
-            <a href="#{{ device_model }}-panel" class="mdl-tabs__tab">{{ device_model }}</a>
-          {% endfor %}
-        </div>
-
-        {% for device_model, test_results in device_results.iteritems() %}
-          <div class="mdl-tabs__panel" id="{{ device_model }}-panel">
-
-            <div class="mdl-grid">
-              <div class="mdl-cell mdl-cell--3-col text-element"><b>Description</b></div>
-              <div class="mdl-cell mdl-cell--3-col text-element"><b>Golden</b></div>
-              <div class="mdl-cell mdl-cell--3-col text-element"><b>Failure</b></div>
-              {% if show_diffs %}
-                <div class="mdl-cell mdl-cell--3-col text-element"><b>Diff</b></div>
-              {% endif %}
-            </div>
-            {% for result in test_results %}
-              <div class="mdl-grid">
-                <div class="mdl-cell mdl-cell--3-col text-element">
-                  {{ result['description'] }}
-                </div>
-                <div class="mdl-cell mdl-cell--3-col">
-                  <a href="{{ result['golden_image'] }}">
-                    <img class="mdl-shadow--2dp" src="{{ result['golden_image'] }}" width="100%">
-                  </a>
-                </div>
-                <div class="mdl-cell mdl-cell--3-col mdl-shadow--2dp">
-                  <a href="{{ result['failure_image'] }}">
-                    <img src="{{ result['failure_image'] }}" width="100%">
-                  </a>
-                </div>
-                {% if show_diffs %}
-                  <div class="mdl-cell mdl-cell--3-col mdl-shadow--2dp">
-                    <a href="{{ result['diff_image'] }}">
-                      <img src="{{ result['diff_image'] }}" width="100%">
-                    </a>
-                  </div>
-                {% endif %}
-              </div>
-            {% endfor %}
-          </div>
-        {% endfor %}
-      </div>
-    {% endfor %}
-  </body>
-</html>
diff --git a/build/android/test_runner.py b/build/android/test_runner.py
index de297bb4..f9c2c4f 100755
--- a/build/android/test_runner.py
+++ b/build/android/test_runner.py
@@ -84,12 +84,6 @@
       type=os.path.realpath,
       help='The relative filepath to a file containing '
            'command-line flags to set on the device')
-  # TODO(jbudorick): This is deprecated. Remove once clients have switched
-  # to passing command-line flags directly.
-  parser.add_argument(
-      '-a', '--test-arguments',
-      dest='test_arguments', default='',
-      help=argparse.SUPPRESS)
   parser.set_defaults(allow_unknown=True)
   parser.set_defaults(command_line_flags=None)
 
@@ -431,10 +425,6 @@
       '--timeout-scale',
       type=float,
       help='Factor by which timeouts should be scaled.')
-  parser.add_argument(
-      '-w', '--wait_debugger',
-      action='store_true', dest='wait_for_debugger',
-      help='Wait for debugger.')
 
   # These arguments are suppressed from the help text because they should
   # only ever be specified by an intermediate script.
diff --git a/build/android/test_runner.pydeps b/build/android/test_runner.pydeps
index 5bd361b..f8d45668 100644
--- a/build/android/test_runner.pydeps
+++ b/build/android/test_runner.pydeps
@@ -114,6 +114,26 @@
 ../../third_party/catapult/tracing/tracing_build/__init__.py
 ../../third_party/catapult/tracing/tracing_build/trace2html.py
 ../../third_party/catapult/tracing/tracing_project.py
+../../third_party/jinja2/__init__.py
+../../third_party/jinja2/_compat.py
+../../third_party/jinja2/bccache.py
+../../third_party/jinja2/compiler.py
+../../third_party/jinja2/defaults.py
+../../third_party/jinja2/environment.py
+../../third_party/jinja2/exceptions.py
+../../third_party/jinja2/filters.py
+../../third_party/jinja2/lexer.py
+../../third_party/jinja2/loaders.py
+../../third_party/jinja2/nodes.py
+../../third_party/jinja2/optimizer.py
+../../third_party/jinja2/parser.py
+../../third_party/jinja2/runtime.py
+../../third_party/jinja2/tests.py
+../../third_party/jinja2/utils.py
+../../third_party/jinja2/visitor.py
+../../third_party/markupsafe/__init__.py
+../../third_party/markupsafe/_compat.py
+../../third_party/markupsafe/_native.py
 ../../tools/swarming_client/libs/__init__.py
 ../../tools/swarming_client/libs/logdog/__init__.py
 ../../tools/swarming_client/libs/logdog/bootstrap.py
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index b05a8d74..fcf06ac 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -396,20 +396,13 @@
 
   if (is_posix && (use_gold || (use_lld && !is_nacl)) && !using_sanitizer &&
       !(is_android && use_order_profiling)) {
-    # TODO(crbug.com/576197) - gcc on x86 platforms + gold + icf=all
-    # doesn't currently work on non-chromeos platforms.
-    # Additionally, on Android x86 --icf=safe seems to cause issues as well.
-    # Additionally, on cast Android x86, --icf=all causes issues.
-    if (is_android && current_cpu == "x86") {
-      ldflags += [ "-Wl,--icf=none" ]
-    } else if ((is_clang && !is_android) || is_chromeos ||
-               (current_cpu != "x86" && current_cpu != "x64")) {
-      # TODO(thakis): Remove `!is_android` above once our gold has been rolled
-      # with the fix for https://sourceware.org/bugzilla/show_bug.cgi?id=17704
-      # merged.  See also https://crbug.com/663886
+    # TODO(thakis): Remove `!is_android` below once NDK gold has been rolled
+    # with the fix for https://sourceware.org/bugzilla/show_bug.cgi?id=17704
+    # merged.  See also https://crbug.com/663886
+    # `linux_use_bundled_binutils` is to avoid breaking Linux distros which may
+    # still have a buggy gold.
+    if (!is_android && linux_use_bundled_binutils) {
       ldflags += [ "-Wl,--icf=all" ]
-    } else if (!is_android || is_clang) {
-      ldflags += [ "-Wl,--icf=safe" ]
     }
   }
 
diff --git a/cc/ipc/mojo_compositor_frame_sink.mojom b/cc/ipc/mojo_compositor_frame_sink.mojom
index 1ad4ae1..7bb99322 100644
--- a/cc/ipc/mojo_compositor_frame_sink.mojom
+++ b/cc/ipc/mojo_compositor_frame_sink.mojom
@@ -41,7 +41,7 @@
 
   // Notify that the surface is no longer in use (and is okay to be evicted) so
   // that its resources gets returned in time.
-  EvictFrame();
+  EvictCurrentSurface();
 };
 
 interface MojoCompositorFrameSinkClient {
diff --git a/cc/layers/effect_tree_layer_list_iterator_unittest.cc b/cc/layers/effect_tree_layer_list_iterator_unittest.cc
index 8f8c8e6..71fc0fc2 100644
--- a/cc/layers/effect_tree_layer_list_iterator_unittest.cc
+++ b/cc/layers/effect_tree_layer_list_iterator_unittest.cc
@@ -145,10 +145,10 @@
 
   IterateFrontToBack();
   EXPECT_COUNT(root_ptr, 5, -1, 4);
-  EXPECT_COUNT(first_ptr, -1, -1, 3);
-  EXPECT_COUNT(second_ptr, -1, -1, 2);
-  EXPECT_COUNT(third_ptr, -1, -1, 1);
-  EXPECT_COUNT(fourth_ptr, -1, -1, 0);
+  EXPECT_COUNT(first_ptr, 5, -1, 3);
+  EXPECT_COUNT(second_ptr, 5, -1, 2);
+  EXPECT_COUNT(third_ptr, 5, -1, 1);
+  EXPECT_COUNT(fourth_ptr, 5, -1, 0);
 }
 
 TEST_F(EffectTreeLayerListIteratorTest, ComplexTree) {
@@ -190,14 +190,14 @@
 
   IterateFrontToBack();
   EXPECT_COUNT(root_ptr, 9, -1, 8);
-  EXPECT_COUNT(root1_ptr, -1, -1, 7);
-  EXPECT_COUNT(root2_ptr, -1, -1, 6);
-  EXPECT_COUNT(root21_ptr, -1, -1, 5);
-  EXPECT_COUNT(root22_ptr, -1, -1, 4);
-  EXPECT_COUNT(root221_ptr, -1, -1, 3);
-  EXPECT_COUNT(root23_ptr, -1, -1, 2);
-  EXPECT_COUNT(root231_ptr, -1, -1, 1);
-  EXPECT_COUNT(root3_ptr, -1, -1, 0);
+  EXPECT_COUNT(root1_ptr, 9, -1, 7);
+  EXPECT_COUNT(root2_ptr, 9, -1, 6);
+  EXPECT_COUNT(root21_ptr, 9, -1, 5);
+  EXPECT_COUNT(root22_ptr, 9, -1, 4);
+  EXPECT_COUNT(root221_ptr, 9, -1, 3);
+  EXPECT_COUNT(root23_ptr, 9, -1, 2);
+  EXPECT_COUNT(root231_ptr, 9, -1, 1);
+  EXPECT_COUNT(root3_ptr, 9, -1, 0);
 }
 
 TEST_F(EffectTreeLayerListIteratorTest, ComplexTreeMultiSurface) {
@@ -243,14 +243,14 @@
 
   IterateFrontToBack();
   EXPECT_COUNT(root_ptr, 14, -1, 13);
-  EXPECT_COUNT(root1_ptr, -1, -1, 12);
+  EXPECT_COUNT(root1_ptr, 14, -1, 12);
   EXPECT_COUNT(root2_ptr, 10, 11, -1);
-  EXPECT_COUNT(root21_ptr, -1, -1, 9);
+  EXPECT_COUNT(root21_ptr, 10, 11, 9);
   EXPECT_COUNT(root22_ptr, 7, 8, 6);
-  EXPECT_COUNT(root221_ptr, -1, -1, 5);
+  EXPECT_COUNT(root221_ptr, 7, 8, 5);
   EXPECT_COUNT(root23_ptr, 3, 4, 2);
-  EXPECT_COUNT(root231_ptr, -1, -1, 1);
-  EXPECT_COUNT(root3_ptr, -1, -1, 0);
+  EXPECT_COUNT(root231_ptr, 3, 4, 1);
+  EXPECT_COUNT(root3_ptr, 14, -1, 0);
 }
 
 }  // namespace
diff --git a/cc/layers/render_surface_impl.cc b/cc/layers/render_surface_impl.cc
index c61a56ff..eba8543be 100644
--- a/cc/layers/render_surface_impl.cc
+++ b/cc/layers/render_surface_impl.cc
@@ -162,10 +162,6 @@
 }
 
 int RenderSurfaceImpl::EffectTreeIndex() const {
-  DCHECK_EQ(
-      effect_tree_index_,
-      layer_tree_impl_->property_trees()
-          ->effect_tree.FindNodeIndexFromOwningLayerId(stable_effect_id_));
   return effect_tree_index_;
 }
 
diff --git a/cc/surfaces/compositor_frame_sink_support.cc b/cc/surfaces/compositor_frame_sink_support.cc
index 8557895a..0fdb6c6 100644
--- a/cc/surfaces/compositor_frame_sink_support.cc
+++ b/cc/surfaces/compositor_frame_sink_support.cc
@@ -45,7 +45,7 @@
       reference_tracker_.current_surface_id().is_valid())
     RemoveTopLevelRootReference(reference_tracker_.current_surface_id());
 
-  EvictFrame();
+  EvictCurrentSurface();
   surface_manager_->UnregisterFrameSinkManagerClient(frame_sink_id_);
   if (handles_frame_sink_id_invalidation_)
     surface_manager_->InvalidateFrameSinkId(frame_sink_id_);
@@ -74,7 +74,7 @@
   UpdateNeedsBeginFramesInternal();
 }
 
-void CompositorFrameSinkSupport::EvictFrame() {
+void CompositorFrameSinkSupport::EvictCurrentSurface() {
   if (!current_surface_)
     return;
   DestroyCurrentSurface();
diff --git a/cc/surfaces/compositor_frame_sink_support.h b/cc/surfaces/compositor_frame_sink_support.h
index ed95e51a..5eda4c0f 100644
--- a/cc/surfaces/compositor_frame_sink_support.h
+++ b/cc/surfaces/compositor_frame_sink_support.h
@@ -57,7 +57,7 @@
   // FrameSinkManagerClient implementation.
   void SetBeginFrameSource(BeginFrameSource* begin_frame_source) override;
 
-  void EvictFrame();
+  void EvictCurrentSurface();
   void SetNeedsBeginFrame(bool needs_begin_frame);
   void BeginFrameDidNotSwap(const BeginFrameAck& ack);
   void SubmitCompositorFrame(const LocalSurfaceId& local_surface_id,
diff --git a/cc/surfaces/compositor_frame_sink_support_unittest.cc b/cc/surfaces/compositor_frame_sink_support_unittest.cc
index bdaa1ec..fe1156e 100644
--- a/cc/surfaces/compositor_frame_sink_support_unittest.cc
+++ b/cc/surfaces/compositor_frame_sink_support_unittest.cc
@@ -108,7 +108,7 @@
   }
   ~CompositorFrameSinkSupportTest() override {
     manager_.RemoveObserver(this);
-    support_->EvictFrame();
+    support_->EvictCurrentSurface();
   }
 
   const SurfaceId& last_created_surface_id() const {
@@ -506,11 +506,11 @@
         support->SubmitCompositorFrame(new_id, MakeCompositorFrame());
       }))
       .WillRepeatedly(testing::Return());
-  support->EvictFrame();
+  support->EvictCurrentSurface();
 }
 
-// Tests doing an EvictFrame before shutting down the factory.
-TEST_F(CompositorFrameSinkSupportTest, EvictFrame) {
+// Tests doing an EvictCurrentSurface before shutting down the factory.
+TEST_F(CompositorFrameSinkSupportTest, EvictCurrentSurface) {
   MockCompositorFrameSinkSupportClient mock_client;
   std::unique_ptr<CompositorFrameSinkSupport> support =
       CompositorFrameSinkSupport::Create(
@@ -532,12 +532,13 @@
   EXPECT_TRUE(manager_.GetSurfaceForId(id));
   EXPECT_CALL(mock_client, DidReceiveCompositorFrameAck(returned_resources))
       .Times(1);
-  support->EvictFrame();
+  support->EvictCurrentSurface();
   EXPECT_FALSE(manager_.GetSurfaceForId(id));
 }
 
-// Tests doing an EvictSurface which has unregistered dependency.
-TEST_F(CompositorFrameSinkSupportTest, EvictSurfaceDependencyUnRegistered) {
+// Tests doing an EvictCurrentSurface which has unregistered dependency.
+TEST_F(CompositorFrameSinkSupportTest,
+       EvictCurrentSurfaceDependencyUnRegistered) {
   MockCompositorFrameSinkSupportClient mock_client;
   std::unique_ptr<CompositorFrameSinkSupport> support =
       CompositorFrameSinkSupport::Create(
@@ -564,12 +565,13 @@
   EXPECT_TRUE(manager_.GetSurfaceForId(surface_id));
   EXPECT_CALL(mock_client, DidReceiveCompositorFrameAck(returned_resource))
       .Times(1);
-  support->EvictFrame();
+  support->EvictCurrentSurface();
   EXPECT_FALSE(manager_.GetSurfaceForId(surface_id));
 }
 
-// Tests doing an EvictSurface which has registered dependency.
-TEST_F(CompositorFrameSinkSupportTest, EvictSurfaceDependencyRegistered) {
+// Tests doing an EvictCurrentSurface which has registered dependency.
+TEST_F(CompositorFrameSinkSupportTest,
+       EvictCurrentSurfaceDependencyRegistered) {
   MockCompositorFrameSinkSupportClient mock_client;
   std::unique_ptr<CompositorFrameSinkSupport> support =
       CompositorFrameSinkSupport::Create(
@@ -596,7 +598,7 @@
 
   ReturnedResourceArray returned_resources;
   EXPECT_TRUE(manager_.GetSurfaceForId(surface_id));
-  support->EvictFrame();
+  support->EvictCurrentSurface();
   EXPECT_TRUE(manager_.GetSurfaceForId(surface_id));
   EXPECT_EQ(0u, execute_count);
 
@@ -619,7 +621,7 @@
   // Check that waiting before the sequence is satisfied works.
   manager_.GetSurfaceForId(id2)->AddDestructionDependency(
       SurfaceSequence(kYetAnotherArbitraryFrameSinkId, 4));
-  support2->EvictFrame();
+  support2->EvictCurrentSurface();
 
   DCHECK(manager_.GetSurfaceForId(id2));
   manager_.SatisfySequence(SurfaceSequence(kYetAnotherArbitraryFrameSinkId, 4));
@@ -631,7 +633,7 @@
   DCHECK(manager_.GetSurfaceForId(id2));
   manager_.GetSurfaceForId(id2)->AddDestructionDependency(
       SurfaceSequence(kAnotherArbitraryFrameSinkId, 6));
-  support2->EvictFrame();
+  support2->EvictCurrentSurface();
   DCHECK(!manager_.GetSurfaceForId(id2));
 }
 
@@ -648,7 +650,7 @@
   manager_.GetSurfaceForId(id)->AddDestructionDependency(
       SurfaceSequence(frame_sink_id, 4));
 
-  support_->EvictFrame();
+  support_->EvictCurrentSurface();
 
   // Verify the dependency has prevented the surface from getting destroyed.
   EXPECT_TRUE(manager_.GetSurfaceForId(id));
@@ -680,7 +682,7 @@
   }
   manager_.GetSurfaceForId(id2)->AddDestructionDependency(
       SurfaceSequence(kAnotherArbitraryFrameSinkId, 4));
-  support2->EvictFrame();
+  support2->EvictCurrentSurface();
   // Give local_surface_id_ a frame that references id2.
   {
     std::unique_ptr<RenderPass> render_pass(RenderPass::Create());
@@ -689,7 +691,7 @@
     frame.metadata.referenced_surfaces.push_back(id2);
     support_->SubmitCompositorFrame(local_surface_id_, std::move(frame));
   }
-  support_->EvictFrame();
+  support_->EvictCurrentSurface();
   EXPECT_TRUE(manager_.GetSurfaceForId(id2));
   // local_surface_id_ should be retained by reference from id2.
   EXPECT_TRUE(manager_.GetSurfaceForId(
@@ -753,7 +755,7 @@
   EXPECT_FALSE(called2);
   EXPECT_FALSE(called3);
 
-  support_->EvictFrame();
+  support_->EvictCurrentSurface();
   local_surface_id_ = LocalSurfaceId();
   EXPECT_TRUE(called1);
   EXPECT_TRUE(called2);
diff --git a/cc/surfaces/display_unittest.cc b/cc/surfaces/display_unittest.cc
index 1c96a0d..a7526b00 100644
--- a/cc/surfaces/display_unittest.cc
+++ b/cc/surfaces/display_unittest.cc
@@ -92,7 +92,7 @@
             true /* needs_sync_points */)),
         task_runner_(new base::NullTaskRunner) {}
 
-  ~DisplayTest() override { support_->EvictFrame(); }
+  ~DisplayTest() override { support_->EvictCurrentSurface(); }
 
   void SetUpDisplay(const RendererSettings& settings,
                     std::unique_ptr<TestWebGraphicsContext3D> context) {
diff --git a/cc/surfaces/surface_aggregator_perftest.cc b/cc/surfaces/surface_aggregator_perftest.cc
index e0a277b..d0c2ed4f 100644
--- a/cc/surfaces/surface_aggregator_perftest.cc
+++ b/cc/surfaces/surface_aggregator_perftest.cc
@@ -146,8 +146,8 @@
     perf_test::PrintResult("aggregator_speed", "", name, timer_.LapsPerSecond(),
                            "runs/s", true);
     for (int i = 0; i < num_surfaces; i++)
-      child_supports[i]->EvictFrame();
-    root_support->EvictFrame();
+      child_supports[i]->EvictCurrentSurface();
+    root_support->EvictCurrentSurface();
   }
 
  protected:
diff --git a/cc/surfaces/surface_aggregator_unittest.cc b/cc/surfaces/surface_aggregator_unittest.cc
index 3892756..7ab54787 100644
--- a/cc/surfaces/surface_aggregator_unittest.cc
+++ b/cc/surfaces/surface_aggregator_unittest.cc
@@ -73,7 +73,7 @@
   SurfaceAggregatorTest() : SurfaceAggregatorTest(false) {}
 
   void TearDown() override {
-    support_->EvictFrame();
+    support_->EvictCurrentSurface();
     testing::Test::TearDown();
   }
 
@@ -106,7 +106,7 @@
   }
 
   void TearDown() override {
-    child_support_->EvictFrame();
+    child_support_->EvictCurrentSurface();
     SurfaceAggregatorTest::TearDown();
   }
 
@@ -230,7 +230,7 @@
   ASSERT_EQ(1u, shared_quad_state_list2.size());
   EXPECT_EQ(.5f, shared_quad_state_list2.ElementAt(0)->opacity);
 
-  embedded_support->EvictFrame();
+  embedded_support->EvictCurrentSurface();
 }
 
 TEST_F(SurfaceAggregatorValidSurfaceTest, MultiPassSimpleFrame) {
@@ -340,7 +340,7 @@
   AggregateAndVerify(
       expected_passes, arraysize(expected_passes), ids, arraysize(ids));
 
-  embedded_support->EvictFrame();
+  embedded_support->EvictCurrentSurface();
 }
 
 // This test verifies that in the absence of a primary Surface,
@@ -415,8 +415,8 @@
   AggregateAndVerify(expected_passes2, arraysize(expected_passes2), ids,
                      arraysize(ids));
 
-  primary_child_support->EvictFrame();
-  fallback_child_support->EvictFrame();
+  primary_child_support->EvictCurrentSurface();
+  fallback_child_support->EvictCurrentSurface();
 }
 
 // This test verifies that in the presence of both primary Surface and fallback
@@ -480,8 +480,8 @@
   AggregateAndVerify(expected_passes1, arraysize(expected_passes1), ids,
                      arraysize(ids));
 
-  primary_child_support->EvictFrame();
-  fallback_child_support->EvictFrame();
+  primary_child_support->EvictCurrentSurface();
+  fallback_child_support->EvictCurrentSurface();
 }
 
 TEST_F(SurfaceAggregatorValidSurfaceTest, CopyRequest) {
@@ -539,7 +539,7 @@
         aggregator_.previous_contained_surfaces().end());
   }
 
-  embedded_support->EvictFrame();
+  embedded_support->EvictCurrentSurface();
 }
 
 // Root surface may contain copy requests.
@@ -620,7 +620,7 @@
   DCHECK(original_pass_list[0]->copy_requests.empty());
   DCHECK(original_pass_list[1]->copy_requests.empty());
 
-  embedded_support->EvictFrame();
+  embedded_support->EvictCurrentSurface();
 }
 
 TEST_F(SurfaceAggregatorValidSurfaceTest, UnreferencedSurface) {
@@ -717,8 +717,8 @@
         aggregator_.previous_contained_surfaces().end());
   }
 
-  embedded_support->EvictFrame();
-  parent_support->EvictFrame();
+  embedded_support->EvictCurrentSurface();
+  parent_support->EvictCurrentSurface();
 }
 
 // This tests referencing a surface that has multiple render passes.
@@ -1201,9 +1201,9 @@
         << iter.index();
   }
 
-  grandchild_support->EvictFrame();
-  child_one_support->EvictFrame();
-  child_two_support->EvictFrame();
+  grandchild_support->EvictCurrentSurface();
+  child_one_support->EvictCurrentSurface();
+  child_two_support->EvictCurrentSurface();
 }
 
 // This tests that when aggregating a frame with multiple render passes that we
@@ -1391,7 +1391,7 @@
                 ->shared_quad_state_list.ElementAt(1)
                 ->clip_rect.ToString());
 
-  middle_support->EvictFrame();
+  middle_support->EvictCurrentSurface();
 }
 
 // Tests that damage rects are aggregated correctly when surfaces change.
@@ -1569,7 +1569,7 @@
         gfx::Rect(SurfaceSize())));
   }
 
-  parent_support->EvictFrame();
+  parent_support->EvictCurrentSurface();
 }
 
 // Check that damage is correctly calculated for surfaces.
@@ -2029,7 +2029,7 @@
   EXPECT_THAT(returned_ids,
               testing::WhenSorted(testing::ElementsAreArray(ids)));
 
-  support->EvictFrame();
+  support->EvictCurrentSurface();
 }
 
 TEST_F(SurfaceAggregatorWithResourcesTest, TakeInvalidResources) {
@@ -2063,7 +2063,7 @@
   ASSERT_EQ(1u, client.returned_resources().size());
   EXPECT_EQ(11u, client.returned_resources()[0].id);
 
-  support->EvictFrame();
+  support->EvictCurrentSurface();
 }
 
 TEST_F(SurfaceAggregatorWithResourcesTest, TwoSurfaces) {
@@ -2109,8 +2109,8 @@
               testing::WhenSorted(testing::ElementsAreArray(ids)));
   EXPECT_EQ(3u, resource_provider_->num_resources());
 
-  support1->EvictFrame();
-  support2->EvictFrame();
+  support1->EvictCurrentSurface();
+  support2->EvictCurrentSurface();
 }
 
 // Ensure that aggregator completely ignores Surfaces that reference invalid
@@ -2170,9 +2170,9 @@
   EXPECT_EQ(3u, pass_list->back()->shared_quad_state_list.size());
   EXPECT_EQ(9u, pass_list->back()->quad_list.size());
 
-  root_support->EvictFrame();
-  middle_support->EvictFrame();
-  child_support->EvictFrame();
+  root_support->EvictCurrentSurface();
+  middle_support->EvictCurrentSurface();
+  child_support->EvictCurrentSurface();
 }
 
 TEST_F(SurfaceAggregatorWithResourcesTest, SecureOutputTexture) {
@@ -2241,8 +2241,8 @@
   // Output is insecure, so texture should be drawn.
   EXPECT_EQ(DrawQuad::SOLID_COLOR, render_pass->quad_list.back()->material);
 
-  support1->EvictFrame();
-  support2->EvictFrame();
+  support1->EvictCurrentSurface();
+  support2->EvictCurrentSurface();
 }
 
 // Ensure that the render passes have correct color spaces.
diff --git a/cc/surfaces/surface_hittest_unittest.cc b/cc/surfaces/surface_hittest_unittest.cc
index 9a3c29f..4e406e3 100644
--- a/cc/surfaces/surface_hittest_unittest.cc
+++ b/cc/surfaces/surface_hittest_unittest.cc
@@ -104,7 +104,7 @@
                   root_surface_id, gfx::Point(100, 100), &transform));
   }
 
-  root_support->EvictFrame();
+  root_support->EvictCurrentSurface();
 }
 
 TEST(SurfaceHittestTest, Hittest_SingleSurface) {
@@ -139,7 +139,7 @@
 
   RunTests(nullptr, &manager, tests, arraysize(tests));
 
-  root_support->EvictFrame();
+  root_support->EvictCurrentSurface();
 }
 
 TEST(SurfaceHittestTest, Hittest_ChildSurface) {
@@ -279,8 +279,8 @@
     EXPECT_EQ(gfx::Point(25, 25), point_in_target_space);
   }
 
-  root_support->EvictFrame();
-  child_support->EvictFrame();
+  root_support->EvictCurrentSurface();
+  child_support->EvictCurrentSurface();
 }
 
 // This test verifies that hit testing will progress to the next quad if it
@@ -392,8 +392,8 @@
 
   RunTests(nullptr, &manager, tests, arraysize(tests));
 
-  root_support->EvictFrame();
-  child_support->EvictFrame();
+  root_support->EvictCurrentSurface();
+  child_support->EvictCurrentSurface();
 }
 
 TEST(SurfaceHittestTest, Hittest_RenderPassDrawQuad) {
@@ -496,7 +496,7 @@
 
   RunTests(nullptr, &manager, tests, arraysize(tests));
 
-  support->EvictFrame();
+  support->EvictCurrentSurface();
 }
 
 TEST(SurfaceHittestTest, Hittest_SingleSurface_WithInsetsDelegate) {
@@ -634,8 +634,8 @@
   EXPECT_EQ(0, accept_delegate.reject_target_overrides());
   EXPECT_EQ(2, accept_delegate.accept_target_overrides());
 
-  root_support->EvictFrame();
-  child_support->EvictFrame();
+  root_support->EvictCurrentSurface();
+  child_support->EvictCurrentSurface();
 }
 
 }  // namespace cc
diff --git a/cc/surfaces/surface_manager_ref_unittest.cc b/cc/surfaces/surface_manager_ref_unittest.cc
index a8969ac..e96b795 100644
--- a/cc/surfaces/surface_manager_ref_unittest.cc
+++ b/cc/surfaces/surface_manager_ref_unittest.cc
@@ -48,7 +48,8 @@
 
   // Destroy Surface with |surface_id|.
   void DestroySurface(const SurfaceId& surface_id) {
-    GetCompositorFrameSinkSupport(surface_id.frame_sink_id()).EvictFrame();
+    GetCompositorFrameSinkSupport(surface_id.frame_sink_id())
+        .EvictCurrentSurface();
   }
 
   CompositorFrameSinkSupport& GetCompositorFrameSinkSupport(
@@ -111,7 +112,7 @@
   }
   void TearDown() override {
     for (auto& support : supports_)
-      support.second->EvictFrame();
+      support.second->EvictCurrentSurface();
     supports_.clear();
     manager_.reset();
   }
diff --git a/cc/surfaces/surface_synchronization_unittest.cc b/cc/surfaces/surface_synchronization_unittest.cc
index 5fa37ccf..473e587 100644
--- a/cc/surfaces/surface_synchronization_unittest.cc
+++ b/cc/surfaces/surface_synchronization_unittest.cc
@@ -645,8 +645,8 @@
               UnorderedElementsAre(child_id2));
 
   // Evict child_support1's current Surface.
-  // TODO(fsamuel): EvictFrame => EvictCurrentSurface.
-  child_support1().EvictFrame();
+  // TODO(fsamuel): EvictCurrentSurface => EvictCurrentSurface.
+  child_support1().EvictCurrentSurface();
 
   // The parent Surface should immediately activate.
   EXPECT_TRUE(parent_surface()->HasActiveFrame());
@@ -1046,7 +1046,7 @@
 
   // Attempt to destroy the child surface. The surface must still exist since
   // the parent needs it but it will be marked as destroyed.
-  child_support1().EvictFrame();
+  child_support1().EvictCurrentSurface();
   surface = surface_manager().GetSurfaceForId(child_id);
   EXPECT_NE(nullptr, surface);
   EXPECT_TRUE(surface->destroyed());
@@ -1084,7 +1084,7 @@
                                          MakeCompositorFrame());
 
   // Destroy the surface.
-  child_support1().EvictFrame();
+  child_support1().EvictCurrentSurface();
   EXPECT_EQ(nullptr, surface_manager().GetSurfaceForId(child_id));
 
   // Submit another frame with the same local surface id. This should work fine
diff --git a/cc/surfaces/surface_unittest.cc b/cc/surfaces/surface_unittest.cc
index 3ed47c6..c63c0b03 100644
--- a/cc/surfaces/surface_unittest.cc
+++ b/cc/surfaces/surface_unittest.cc
@@ -35,7 +35,7 @@
   SurfaceId surface_id(kArbitraryFrameSinkId, local_surface_id);
   support->SubmitCompositorFrame(local_surface_id, test::MakeCompositorFrame());
   EXPECT_TRUE(manager.GetSurfaceForId(surface_id));
-  support->EvictFrame();
+  support->EvictCurrentSurface();
 
   EXPECT_EQ(NULL, manager.GetSurfaceForId(surface_id));
 }
@@ -106,7 +106,7 @@
   copy_requests.find(last_pass_id)->second->SendEmptyResult();
   EXPECT_TRUE(copy_called);
 
-  support->EvictFrame();
+  support->EvictCurrentSurface();
 }
 
 }  // namespace
diff --git a/cc/surfaces/surfaces_pixeltest.cc b/cc/surfaces/surfaces_pixeltest.cc
index 36f1ba91..2917c086 100644
--- a/cc/surfaces/surfaces_pixeltest.cc
+++ b/cc/surfaces/surfaces_pixeltest.cc
@@ -40,7 +40,7 @@
                                                kIsRoot,
                                                kHandlesFrameSinkIdInvalidation,
                                                kNeedsSyncPoints)) {}
-  ~SurfacesPixelTest() override { support_->EvictFrame(); }
+  ~SurfacesPixelTest() override { support_->EvictCurrentSurface(); }
 
  protected:
   SurfaceManager manager_;
@@ -182,7 +182,7 @@
                            base::FilePath(FILE_PATH_LITERAL("blue_yellow.png")),
                            pixel_comparator));
 
-  child_support->EvictFrame();
+  child_support->EvictCurrentSurface();
 }
 
 // Tests a surface quad that has a non-identity transform into its pass.
@@ -324,8 +324,8 @@
       base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")),
       pixel_comparator));
 
-  left_support->EvictFrame();
-  right_support->EvictFrame();
+  left_support->EvictCurrentSurface();
+  right_support->EvictCurrentSurface();
 }
 
 }  // namespace
diff --git a/cc/test/layer_test_common.cc b/cc/test/layer_test_common.cc
index b741dc0..d023a8a 100644
--- a/cc/test/layer_test_common.cc
+++ b/cc/test/layer_test_common.cc
@@ -35,20 +35,12 @@
   EffectTree& effect_tree =
       layer_impl->layer_tree_impl()->property_trees()->effect_tree;
 
-  EffectNode* effect_node = effect_tree.Node(layer_impl->effect_tree_index());
-  if (effect_node->owning_layer_id == layer_impl->id())
-    return effect_tree.GetRenderSurface(layer_impl->effect_tree_index());
-  return nullptr;
-}
+  if (RenderSurfaceImpl* surface =
+          effect_tree.GetRenderSurface(layer_impl->effect_tree_index()))
+    return surface;
 
-const RenderSurfaceImpl* GetRenderSurface(const LayerImpl* layer_impl) {
-  EffectTree& effect_tree =
-      layer_impl->layer_tree_impl()->property_trees()->effect_tree;
-
-  EffectNode* effect_node = effect_tree.Node(layer_impl->effect_tree_index());
-  if (effect_node->owning_layer_id == layer_impl->id())
-    return effect_tree.GetRenderSurface(layer_impl->effect_tree_index());
-  return nullptr;
+  return effect_tree.GetRenderSurface(
+      effect_tree.Node(layer_impl->effect_tree_index())->target_id);
 }
 
 static bool CanRectFBeSafelyRoundedToRect(const gfx::RectF& r) {
diff --git a/cc/test/layer_test_common.h b/cc/test/layer_test_common.h
index 67e9d4bb..3d3bd104 100644
--- a/cc/test/layer_test_common.h
+++ b/cc/test/layer_test_common.h
@@ -41,8 +41,8 @@
 class RenderSurfaceImpl;
 class ResourceProvider;
 
+// Returns the RenderSurfaceImpl into which the given layer draws.
 RenderSurfaceImpl* GetRenderSurface(LayerImpl* layer_impl);
-const RenderSurfaceImpl* GetRenderSurface(const LayerImpl* layer_impl);
 
 class LayerTestCommon {
  public:
diff --git a/cc/test/layer_tree_json_parser_unittest.cc b/cc/test/layer_tree_json_parser_unittest.cc
index 9b0477a..a3ade579 100644
--- a/cc/test/layer_tree_json_parser_unittest.cc
+++ b/cc/test/layer_tree_json_parser_unittest.cc
@@ -40,6 +40,7 @@
                                         layer->contents_opaque()));
   RETURN_IF_EXPECTATION_FAILS(EXPECT_EQ(layer_impl->scrollable(),
                                         layer->scrollable()));
+
   RETURN_IF_EXPECTATION_FAILS(
       EXPECT_FLOAT_EQ(layer_impl->Opacity(), layer->opacity()));
   RETURN_IF_EXPECTATION_FAILS(
diff --git a/cc/trees/damage_tracker_unittest.cc b/cc/trees/damage_tracker_unittest.cc
index e1c2925..d036723 100644
--- a/cc/trees/damage_tracker_unittest.cc
+++ b/cc/trees/damage_tracker_unittest.cc
@@ -207,8 +207,8 @@
   EXPECT_TRUE(GetRenderSurface(root)->damage_tracker()->GetDamageRectIfValid(
       &root_damage_rect));
 
-  ASSERT_TRUE(GetRenderSurface(child1));
-  EXPECT_FALSE(GetRenderSurface(child2));
+  EXPECT_NE(GetRenderSurface(child1), GetRenderSurface(root));
+  EXPECT_EQ(GetRenderSurface(child2), GetRenderSurface(root));
   EXPECT_EQ(3, GetRenderSurface(root)->num_contributors());
   EXPECT_EQ(2, GetRenderSurface(child1)->num_contributors());
 
@@ -1105,7 +1105,7 @@
   EmulateDrawingOneFrame(root);
 
   // Sanity check that there is only one surface now.
-  ASSERT_FALSE(GetRenderSurface(child1));
+  ASSERT_EQ(GetRenderSurface(child1), GetRenderSurface(root));
   ASSERT_EQ(4, GetRenderSurface(root)->num_contributors());
 
   EXPECT_TRUE(GetRenderSurface(root)->damage_tracker()->GetDamageRectIfValid(
diff --git a/cc/trees/effect_node.h b/cc/trees/effect_node.h
index 9d37b87..81ee42f 100644
--- a/cc/trees/effect_node.h
+++ b/cc/trees/effect_node.h
@@ -61,7 +61,9 @@
   bool subtree_has_copy_request;
   int transform_id;
   int clip_id;
-  // Effect node id of which this effect contributes to.
+
+  // This is the id of the ancestor effect node that induces a
+  // RenderSurfaceImpl.
   int target_id;
   int mask_layer_id;
   int closest_ancestor_with_copy_request_id;
diff --git a/cc/trees/layer_tree_host_common_unittest.cc b/cc/trees/layer_tree_host_common_unittest.cc
index 6817657..49e5efd 100644
--- a/cc/trees/layer_tree_host_common_unittest.cc
+++ b/cc/trees/layer_tree_host_common_unittest.cc
@@ -878,16 +878,20 @@
   // Only layers that are associated with render surfaces should have an actual
   // RenderSurface() value.
   ASSERT_TRUE(GetRenderSurface(root));
-  ASSERT_FALSE(GetRenderSurface(child_of_root));
-  ASSERT_FALSE(GetRenderSurface(grand_child_of_root));
+  ASSERT_EQ(GetRenderSurface(child_of_root), GetRenderSurface(root));
+  ASSERT_EQ(GetRenderSurface(grand_child_of_root), GetRenderSurface(root));
 
-  ASSERT_TRUE(GetRenderSurface(render_surface1));
-  ASSERT_FALSE(GetRenderSurface(child_of_rs1));
-  ASSERT_FALSE(GetRenderSurface(grand_child_of_rs1));
+  ASSERT_NE(GetRenderSurface(render_surface1), GetRenderSurface(root));
+  ASSERT_EQ(GetRenderSurface(child_of_rs1), GetRenderSurface(render_surface1));
+  ASSERT_EQ(GetRenderSurface(grand_child_of_rs1),
+            GetRenderSurface(render_surface1));
 
-  ASSERT_TRUE(GetRenderSurface(render_surface2));
-  ASSERT_FALSE(GetRenderSurface(child_of_rs2));
-  ASSERT_FALSE(GetRenderSurface(grand_child_of_rs2));
+  ASSERT_NE(GetRenderSurface(render_surface2), GetRenderSurface(root));
+  ASSERT_NE(GetRenderSurface(render_surface2),
+            GetRenderSurface(render_surface1));
+  ASSERT_EQ(GetRenderSurface(child_of_rs2), GetRenderSurface(render_surface2));
+  ASSERT_EQ(GetRenderSurface(grand_child_of_rs2),
+            GetRenderSurface(render_surface2));
 
   // Verify all render target accessors
   EXPECT_EQ(GetRenderSurface(root), parent->render_target());
@@ -1548,7 +1552,7 @@
   ExecuteCalculateDrawProperties(root);
 
   ASSERT_TRUE(GetRenderSurface(surface1));
-  ASSERT_FALSE(GetRenderSurface(not_surface));
+  ASSERT_EQ(GetRenderSurface(not_surface), GetRenderSurface(surface1));
   ASSERT_TRUE(GetRenderSurface(surface2));
   EXPECT_EQ(0.5f, GetRenderSurface(surface1)->draw_opacity());
   // surface2's draw opacity should include the opacity of not-surface and
@@ -1572,7 +1576,7 @@
 
     // The root layer always creates a render surface
     EXPECT_TRUE(GetRenderSurface(root));
-    EXPECT_TRUE(GetRenderSurface(render_surface1));
+    EXPECT_NE(GetRenderSurface(render_surface1), GetRenderSurface(root));
   }
 
   {
@@ -1580,7 +1584,7 @@
     render_surface1->layer_tree_impl()->property_trees()->needs_rebuild = true;
     ExecuteCalculateDrawPropertiesAndSaveUpdateLayerList(root);
     EXPECT_TRUE(GetRenderSurface(root));
-    EXPECT_FALSE(GetRenderSurface(render_surface1));
+    EXPECT_EQ(GetRenderSurface(render_surface1), GetRenderSurface(root));
   }
 }
 
@@ -1607,8 +1611,8 @@
   ExecuteCalculateDrawProperties(root);
 
   EXPECT_TRUE(GetRenderSurface(parent));
-  EXPECT_FALSE(GetRenderSurface(child));
-  EXPECT_FALSE(GetRenderSurface(grand_child));
+  EXPECT_EQ(GetRenderSurface(child), GetRenderSurface(parent));
+  EXPECT_EQ(GetRenderSurface(grand_child), GetRenderSurface(parent));
 
   EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), child->DrawTransform());
   EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(),
@@ -2046,16 +2050,20 @@
   // Only layers that are associated with render surfaces should have an actual
   // RenderSurface() value.
   ASSERT_TRUE(GetRenderSurface(root));
-  ASSERT_FALSE(GetRenderSurface(child_of_root));
-  ASSERT_FALSE(GetRenderSurface(grand_child_of_root));
+  ASSERT_EQ(GetRenderSurface(child_of_root), GetRenderSurface(root));
+  ASSERT_EQ(GetRenderSurface(grand_child_of_root), GetRenderSurface(root));
 
-  ASSERT_TRUE(GetRenderSurface(render_surface1));
-  ASSERT_FALSE(GetRenderSurface(child_of_rs1));
-  ASSERT_FALSE(GetRenderSurface(grand_child_of_rs1));
+  ASSERT_NE(GetRenderSurface(render_surface1), GetRenderSurface(root));
+  ASSERT_EQ(GetRenderSurface(child_of_rs1), GetRenderSurface(render_surface1));
+  ASSERT_EQ(GetRenderSurface(grand_child_of_rs1),
+            GetRenderSurface(render_surface1));
 
-  ASSERT_TRUE(GetRenderSurface(render_surface2));
-  ASSERT_FALSE(GetRenderSurface(child_of_rs2));
-  ASSERT_FALSE(GetRenderSurface(grand_child_of_rs2));
+  ASSERT_NE(GetRenderSurface(render_surface2), GetRenderSurface(root));
+  ASSERT_NE(GetRenderSurface(render_surface2),
+            GetRenderSurface(render_surface1));
+  ASSERT_EQ(GetRenderSurface(child_of_rs2), GetRenderSurface(render_surface2));
+  ASSERT_EQ(GetRenderSurface(grand_child_of_rs2),
+            GetRenderSurface(render_surface2));
 
   // Verify all render target accessors
   EXPECT_EQ(GetRenderSurface(root), root->render_target());
@@ -3686,14 +3694,20 @@
   ExecuteCalculateDrawPropertiesAndSaveUpdateLayerList(root);
 
   // Verify which render surfaces were created.
-  EXPECT_FALSE(GetRenderSurface(front_facing_child));
-  EXPECT_FALSE(GetRenderSurface(back_facing_child));
-  EXPECT_TRUE(GetRenderSurface(front_facing_surface));
-  EXPECT_TRUE(GetRenderSurface(back_facing_surface));
-  EXPECT_FALSE(GetRenderSurface(front_facing_child_of_front_facing_surface));
-  EXPECT_FALSE(GetRenderSurface(back_facing_child_of_front_facing_surface));
-  EXPECT_FALSE(GetRenderSurface(front_facing_child_of_back_facing_surface));
-  EXPECT_FALSE(GetRenderSurface(back_facing_child_of_back_facing_surface));
+  EXPECT_EQ(GetRenderSurface(front_facing_child), GetRenderSurface(root));
+  EXPECT_EQ(GetRenderSurface(back_facing_child), GetRenderSurface(root));
+  EXPECT_NE(GetRenderSurface(front_facing_surface), GetRenderSurface(root));
+  EXPECT_NE(GetRenderSurface(back_facing_surface), GetRenderSurface(root));
+  EXPECT_NE(GetRenderSurface(back_facing_surface),
+            GetRenderSurface(front_facing_surface));
+  EXPECT_EQ(GetRenderSurface(front_facing_child_of_front_facing_surface),
+            GetRenderSurface(front_facing_surface));
+  EXPECT_EQ(GetRenderSurface(back_facing_child_of_front_facing_surface),
+            GetRenderSurface(front_facing_surface));
+  EXPECT_EQ(GetRenderSurface(front_facing_child_of_back_facing_surface),
+            GetRenderSurface(back_facing_surface));
+  EXPECT_EQ(GetRenderSurface(back_facing_child_of_back_facing_surface),
+            GetRenderSurface(back_facing_surface));
 
   EXPECT_EQ(3u, update_layer_list_impl()->size());
   EXPECT_TRUE(UpdateLayerListImplContains(front_facing_child->id()));
@@ -3794,15 +3808,21 @@
   ExecuteCalculateDrawPropertiesAndSaveUpdateLayerList(root);
 
   // Verify which render surfaces were created and used.
-  EXPECT_FALSE(GetRenderSurface(front_facing_child));
-  EXPECT_FALSE(GetRenderSurface(back_facing_child));
-  EXPECT_TRUE(GetRenderSurface(front_facing_surface));
+  EXPECT_EQ(GetRenderSurface(front_facing_child), GetRenderSurface(root));
+  EXPECT_EQ(GetRenderSurface(back_facing_child), GetRenderSurface(root));
+  EXPECT_NE(GetRenderSurface(front_facing_surface), GetRenderSurface(root));
   // We expect that a has_render_surface was created but not used.
-  EXPECT_TRUE(GetRenderSurface(back_facing_surface));
-  EXPECT_FALSE(GetRenderSurface(front_facing_child_of_front_facing_surface));
-  EXPECT_FALSE(GetRenderSurface(back_facing_child_of_front_facing_surface));
-  EXPECT_FALSE(GetRenderSurface(front_facing_child_of_back_facing_surface));
-  EXPECT_FALSE(GetRenderSurface(back_facing_child_of_back_facing_surface));
+  EXPECT_NE(GetRenderSurface(back_facing_surface), GetRenderSurface(root));
+  EXPECT_NE(GetRenderSurface(back_facing_surface),
+            GetRenderSurface(front_facing_surface));
+  EXPECT_EQ(GetRenderSurface(front_facing_child_of_front_facing_surface),
+            GetRenderSurface(front_facing_surface));
+  EXPECT_EQ(GetRenderSurface(back_facing_child_of_front_facing_surface),
+            GetRenderSurface(front_facing_surface));
+  EXPECT_EQ(GetRenderSurface(front_facing_child_of_back_facing_surface),
+            GetRenderSurface(back_facing_surface));
+  EXPECT_EQ(GetRenderSurface(back_facing_child_of_back_facing_surface),
+            GetRenderSurface(back_facing_surface));
 
   EXPECT_EQ(3u, update_layer_list_impl()->size());
 
@@ -3868,11 +3888,12 @@
 
   ExecuteCalculateDrawPropertiesAndSaveUpdateLayerList(root);
 
-  EXPECT_FALSE(GetRenderSurface(child));
+  EXPECT_EQ(GetRenderSurface(child), GetRenderSurface(root));
   EXPECT_TRUE(GetRenderSurface(animating_surface));
-  EXPECT_FALSE(GetRenderSurface(child_of_animating_surface));
-  EXPECT_FALSE(GetRenderSurface(animating_child));
-  EXPECT_FALSE(GetRenderSurface(child2));
+  EXPECT_EQ(GetRenderSurface(child_of_animating_surface),
+            GetRenderSurface(animating_surface));
+  EXPECT_EQ(GetRenderSurface(animating_child), GetRenderSurface(root));
+  EXPECT_EQ(GetRenderSurface(child2), GetRenderSurface(root));
 
   EXPECT_EQ(1u, update_layer_list_impl()->size());
 
@@ -3931,9 +3952,9 @@
   EXPECT_TRUE(GetRenderSurface(front_facing_surface));
 
   // We expect the render surface to have been created, but remain unused.
-  EXPECT_TRUE(GetRenderSurface(back_facing_surface));
-  EXPECT_FALSE(GetRenderSurface(child1));
-  EXPECT_FALSE(GetRenderSurface(child2));
+  EXPECT_NE(GetRenderSurface(back_facing_surface), GetRenderSurface(root));
+  EXPECT_EQ(GetRenderSurface(child1), GetRenderSurface(front_facing_surface));
+  EXPECT_EQ(GetRenderSurface(child2), GetRenderSurface(back_facing_surface));
 
   EXPECT_EQ(2u, update_layer_list_impl()->size());
   EXPECT_TRUE(UpdateLayerListImplContains(front_facing_surface->id()));
@@ -4333,7 +4354,7 @@
   grand_child->SetBounds(gfx::Size(10, 10));
   grand_child->SetDrawsContent(true);
   ExecuteCalculateDrawProperties(root);
-  EXPECT_FALSE(GetRenderSurface(child));
+  EXPECT_EQ(GetRenderSurface(child), GetRenderSurface(root));
 }
 
 TEST_F(LayerTreeHostCommonTest, OpacityAnimatingOnPendingTree) {
@@ -5426,9 +5447,9 @@
 
   // Verify which render surfaces were created.
   EXPECT_TRUE(GetRenderSurface(root));
-  EXPECT_FALSE(GetRenderSurface(child1));
-  EXPECT_TRUE(GetRenderSurface(child2));
-  EXPECT_FALSE(GetRenderSurface(child3));
+  EXPECT_EQ(GetRenderSurface(child1), GetRenderSurface(root));
+  EXPECT_NE(GetRenderSurface(child2), GetRenderSurface(root));
+  EXPECT_EQ(GetRenderSurface(child3), GetRenderSurface(child2));
 }
 
 TEST_F(LayerTreeHostCommonTest, DoNotIncludeBackfaceInvisibleSurfaces) {
@@ -8304,8 +8325,8 @@
 
   EXPECT_EQ(1.f, child->Opacity());
   EXPECT_TRUE(GetRenderSurface(root));
-  EXPECT_TRUE(GetRenderSurface(child));
-  EXPECT_FALSE(GetRenderSurface(grandchild));
+  EXPECT_NE(GetRenderSurface(child), GetRenderSurface(root));
+  EXPECT_EQ(GetRenderSurface(grandchild), GetRenderSurface(child));
 }
 
 // Verify that having an animated filter (but no current filter, as these
@@ -8325,8 +8346,8 @@
   ExecuteCalculateDrawProperties(root);
 
   EXPECT_TRUE(GetRenderSurface(root));
-  EXPECT_TRUE(GetRenderSurface(child));
-  EXPECT_FALSE(GetRenderSurface(grandchild));
+  EXPECT_NE(GetRenderSurface(child), GetRenderSurface(root));
+  EXPECT_EQ(GetRenderSurface(grandchild), GetRenderSurface(child));
 
   EXPECT_TRUE(GetRenderSurface(root)->Filters().IsEmpty());
   EXPECT_TRUE(GetRenderSurface(child)->Filters().IsEmpty());
@@ -8369,8 +8390,8 @@
   ExecuteCalculateDrawProperties(root);
 
   EXPECT_TRUE(GetRenderSurface(root));
-  EXPECT_TRUE(GetRenderSurface(child));
-  EXPECT_FALSE(GetRenderSurface(grandchild));
+  EXPECT_NE(GetRenderSurface(child), GetRenderSurface(root));
+  EXPECT_EQ(GetRenderSurface(grandchild), GetRenderSurface(child));
 
   EXPECT_TRUE(GetRenderSurface(root)->Filters().IsEmpty());
   EXPECT_TRUE(GetRenderSurface(child)->Filters().IsEmpty());
@@ -9081,10 +9102,10 @@
   EXPECT_EQ(transform_node->owning_layer_id, significant_transform->id());
 
   EXPECT_TRUE(GetRenderSurface(root));
-  EXPECT_FALSE(GetRenderSurface(significant_transform));
+  EXPECT_EQ(GetRenderSurface(significant_transform), GetRenderSurface(root));
   EXPECT_TRUE(GetRenderSurface(layer_clips_subtree));
-  EXPECT_TRUE(GetRenderSurface(render_surface));
-  EXPECT_FALSE(GetRenderSurface(test_layer));
+  EXPECT_NE(GetRenderSurface(render_surface), GetRenderSurface(root));
+  EXPECT_EQ(GetRenderSurface(test_layer), GetRenderSurface(render_surface));
 
   EXPECT_EQ(gfx::Rect(30, 20), test_layer->visible_layer_rect());
 }
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
index 0cd3366..42c83bf 100644
--- a/cc/trees/layer_tree_host_impl_unittest.cc
+++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -7252,12 +7252,16 @@
                                     gfx::Size(1, 1), false, false);
     test_blending_draw_quad->visible_rect = quad_visible_rect_;
     EXPECT_EQ(blend_, test_blending_draw_quad->ShouldDrawWithBlending());
-    EXPECT_EQ(has_render_surface_, !!GetRenderSurface(this));
+    EXPECT_EQ(has_render_surface_,
+              GetRenderSurface(this) != GetRenderSurface(comparison_layer_));
   }
 
-  void SetExpectation(bool blend, bool has_render_surface) {
+  void SetExpectation(bool blend,
+                      bool has_render_surface,
+                      LayerImpl* comparison_layer) {
     blend_ = blend;
     has_render_surface_ = has_render_surface;
+    comparison_layer_ = comparison_layer;
     quads_appended_ = false;
   }
 
@@ -7276,6 +7280,7 @@
       : LayerImpl(tree_impl, id),
         blend_(false),
         has_render_surface_(false),
+        comparison_layer_(nullptr),
         quads_appended_(false),
         quad_rect_(5, 5, 5, 5),
         quad_visible_rect_(5, 5, 5, 5),
@@ -7291,6 +7296,7 @@
 
   bool blend_;
   bool has_render_surface_;
+  LayerImpl* comparison_layer_;
   bool quads_appended_;
   gfx::Rect quad_rect_;
   gfx::Rect opaque_content_rect_;
@@ -7319,7 +7325,7 @@
 
   // Opaque layer, drawn without blending.
   layer1->SetContentsOpaque(true);
-  layer1->SetExpectation(false, false);
+  layer1->SetExpectation(false, false, root);
   layer1->SetUpdateRect(gfx::Rect(layer1->bounds()));
   host_impl_->active_tree()->BuildPropertyTreesForTesting();
   EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
@@ -7329,7 +7335,7 @@
 
   // Layer with translucent content and painting, so drawn with blending.
   layer1->SetContentsOpaque(false);
-  layer1->SetExpectation(true, false);
+  layer1->SetExpectation(true, false, root);
   layer1->SetUpdateRect(gfx::Rect(layer1->bounds()));
   host_impl_->active_tree()->BuildPropertyTreesForTesting();
   host_impl_->active_tree()->set_needs_update_draw_properties();
@@ -7342,7 +7348,7 @@
   layer1->SetContentsOpaque(true);
   layer1->test_properties()->opacity = 0.5f;
   layer1->NoteLayerPropertyChanged();
-  layer1->SetExpectation(true, false);
+  layer1->SetExpectation(true, false, root);
   layer1->SetUpdateRect(gfx::Rect(layer1->bounds()));
   host_impl_->active_tree()->BuildPropertyTreesForTesting();
   EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
@@ -7354,7 +7360,7 @@
   layer1->SetContentsOpaque(true);
   layer1->test_properties()->opacity = 0.5f;
   layer1->NoteLayerPropertyChanged();
-  layer1->SetExpectation(true, false);
+  layer1->SetExpectation(true, false, root);
   layer1->SetUpdateRect(gfx::Rect(layer1->bounds()));
   host_impl_->active_tree()->BuildPropertyTreesForTesting();
   EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
@@ -7372,12 +7378,12 @@
   layer1->SetContentsOpaque(true);
   layer1->test_properties()->opacity = 1.f;
   layer1->NoteLayerPropertyChanged();
-  layer1->SetExpectation(false, false);
+  layer1->SetExpectation(false, false, root);
   layer1->SetUpdateRect(gfx::Rect(layer1->bounds()));
   layer2->SetContentsOpaque(true);
   layer2->test_properties()->opacity = 1.f;
   layer2->NoteLayerPropertyChanged();
-  layer2->SetExpectation(false, false);
+  layer2->SetExpectation(false, false, root);
   layer2->SetUpdateRect(gfx::Rect(layer1->bounds()));
   host_impl_->active_tree()->BuildPropertyTreesForTesting();
   host_impl_->active_tree()->set_needs_update_draw_properties();
@@ -7390,9 +7396,9 @@
   // Parent layer with translucent content, drawn with blending.
   // Child layer with opaque content, drawn without blending.
   layer1->SetContentsOpaque(false);
-  layer1->SetExpectation(true, false);
+  layer1->SetExpectation(true, false, root);
   layer1->SetUpdateRect(gfx::Rect(layer1->bounds()));
-  layer2->SetExpectation(false, false);
+  layer2->SetExpectation(false, false, root);
   layer2->SetUpdateRect(gfx::Rect(layer1->bounds()));
   host_impl_->active_tree()->BuildPropertyTreesForTesting();
   host_impl_->active_tree()->set_needs_update_draw_properties();
@@ -7406,9 +7412,9 @@
   // blending.
   // Child layer with opaque content, drawn without blending.
   layer1->SetContentsOpaque(true);
-  layer1->SetExpectation(false, false);
+  layer1->SetExpectation(false, false, root);
   layer1->SetUpdateRect(gfx::Rect(layer1->bounds()));
-  layer2->SetExpectation(false, false);
+  layer2->SetExpectation(false, false, root);
   layer2->SetUpdateRect(gfx::Rect(layer1->bounds()));
   host_impl_->active_tree()->BuildPropertyTreesForTesting();
   EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
@@ -7426,9 +7432,9 @@
   layer1->test_properties()->opacity = 0.5f;
   layer1->NoteLayerPropertyChanged();
   layer1->test_properties()->force_render_surface = true;
-  layer1->SetExpectation(false, true);
+  layer1->SetExpectation(false, true, root);
   layer1->SetUpdateRect(gfx::Rect(layer1->bounds()));
-  layer2->SetExpectation(false, false);
+  layer2->SetExpectation(false, false, layer1);
   layer2->SetUpdateRect(gfx::Rect(layer1->bounds()));
   host_impl_->active_tree()->BuildPropertyTreesForTesting();
   EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
@@ -7443,12 +7449,12 @@
   layer1->SetContentsOpaque(true);
   layer1->test_properties()->opacity = 1.f;
   layer1->NoteLayerPropertyChanged();
-  layer1->SetExpectation(false, false);
+  layer1->SetExpectation(false, false, root);
   layer1->SetUpdateRect(gfx::Rect(layer1->bounds()));
   layer2->SetContentsOpaque(true);
   layer2->test_properties()->opacity = 0.5f;
   layer2->NoteLayerPropertyChanged();
-  layer2->SetExpectation(true, false);
+  layer2->SetExpectation(true, false, layer1);
   layer2->SetUpdateRect(gfx::Rect(layer1->bounds()));
   host_impl_->active_tree()->BuildPropertyTreesForTesting();
   EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
@@ -7461,12 +7467,12 @@
   layer1->SetContentsOpaque(true);
   layer1->test_properties()->opacity = 1.f;
   layer1->NoteLayerPropertyChanged();
-  layer1->SetExpectation(false, false);
+  layer1->SetExpectation(false, false, root);
   layer1->SetUpdateRect(gfx::Rect(layer1->bounds()));
   layer2->SetContentsOpaque(false);
   layer2->test_properties()->opacity = 1.f;
   layer2->NoteLayerPropertyChanged();
-  layer2->SetExpectation(true, false);
+  layer2->SetExpectation(true, false, root);
   layer2->SetUpdateRect(gfx::Rect(layer1->bounds()));
   host_impl_->active_tree()->BuildPropertyTreesForTesting();
   EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
@@ -7480,12 +7486,12 @@
   layer1->SetContentsOpaque(true);
   layer1->test_properties()->opacity = 1.f;
   layer1->NoteLayerPropertyChanged();
-  layer1->SetExpectation(false, false);
+  layer1->SetExpectation(false, false, root);
   layer1->SetUpdateRect(gfx::Rect(layer1->bounds()));
   layer2->SetContentsOpaque(true);
   layer2->test_properties()->opacity = 1.f;
   layer2->NoteLayerPropertyChanged();
-  layer2->SetExpectation(false, false);
+  layer2->SetExpectation(false, false, root);
   layer2->SetUpdateRect(gfx::Rect(layer1->bounds()));
   host_impl_->active_tree()->BuildPropertyTreesForTesting();
   EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
@@ -7499,7 +7505,7 @@
   layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5));
   layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 5));
   layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5));
-  layer1->SetExpectation(true, false);
+  layer1->SetExpectation(true, false, root);
   layer1->SetUpdateRect(gfx::Rect(layer1->bounds()));
   host_impl_->active_tree()->BuildPropertyTreesForTesting();
   host_impl_->active_tree()->set_needs_update_draw_properties();
@@ -7513,7 +7519,7 @@
   layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5));
   layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 2));
   layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5));
-  layer1->SetExpectation(true, false);
+  layer1->SetExpectation(true, false, root);
   layer1->SetUpdateRect(gfx::Rect(layer1->bounds()));
   host_impl_->active_tree()->BuildPropertyTreesForTesting();
   host_impl_->active_tree()->set_needs_update_draw_properties();
@@ -7527,7 +7533,7 @@
   layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5));
   layer1->SetQuadVisibleRect(gfx::Rect(7, 5, 3, 5));
   layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5));
-  layer1->SetExpectation(true, false);
+  layer1->SetExpectation(true, false, root);
   layer1->SetUpdateRect(gfx::Rect(layer1->bounds()));
   host_impl_->active_tree()->BuildPropertyTreesForTesting();
   host_impl_->active_tree()->set_needs_update_draw_properties();
@@ -7542,7 +7548,7 @@
   layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5));
   layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 2, 5));
   layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5));
-  layer1->SetExpectation(false, false);
+  layer1->SetExpectation(false, false, root);
   layer1->SetUpdateRect(gfx::Rect(layer1->bounds()));
   host_impl_->active_tree()->BuildPropertyTreesForTesting();
   host_impl_->active_tree()->set_needs_update_draw_properties();
@@ -7632,7 +7638,8 @@
                                                     ->root_layer_for_testing()
                                                     ->test_properties()
                                                     ->children[0]);
-    child_->SetExpectation(false, false);
+    child_->SetExpectation(false, false,
+                           host_impl_->active_tree()->root_layer_for_testing());
     child_->SetContentsOpaque(true);
   }
 
diff --git a/cc/trees/occlusion_tracker_unittest.cc b/cc/trees/occlusion_tracker_unittest.cc
index 8389954..a0218f64 100644
--- a/cc/trees/occlusion_tracker_unittest.cc
+++ b/cc/trees/occlusion_tracker_unittest.cc
@@ -78,7 +78,8 @@
 
   gfx::Rect UnoccludedSurfaceContentRect(const LayerImpl* layer,
                                          const gfx::Rect& content_rect) const {
-    const RenderSurfaceImpl* surface = GetRenderSurface(layer);
+    const RenderSurfaceImpl* surface =
+        GetRenderSurface(const_cast<LayerImpl*>(layer));
     return this->GetCurrentOcclusionForContributingSurface(
                      surface->draw_transform())
         .GetUnoccludedContentRect(content_rect);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/ToolbarSceneLayer.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/ToolbarSceneLayer.java
index 8335b4b..757c727a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/ToolbarSceneLayer.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/ToolbarSceneLayer.java
@@ -149,9 +149,10 @@
         // TODO(mdjones): Create a "theme provider" to handle cases like this.
         int color = mRenderHost.getBrowserControlsBackgroundColor();
         float alpha = mRenderHost.getBrowserControlsUrlBarAlpha();
-        if (mLayoutProvider.getFullscreenManager().areBrowserControlsAtBottom()) {
-            color = mLayoutProvider.getFullscreenManager().getTab().getDefaultThemeColor();
-            if (!mLayoutProvider.getFullscreenManager().getTab().isIncognito()) alpha = 1f;
+        ChromeFullscreenManager fullscreenManager = mLayoutProvider.getFullscreenManager();
+        if (fullscreenManager.areBrowserControlsAtBottom() && fullscreenManager.getTab() != null) {
+            color = fullscreenManager.getTab().getDefaultThemeColor();
+            if (!fullscreenManager.getTab().isIncognito()) alpha = 1f;
         }
 
         update(color, alpha, mLayoutProvider.getFullscreenManager(), resourceManager,
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index bf646f6f..3aab0f0 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -1582,6 +1582,7 @@
     "//components/translate/core/browser",
     "//components/translate/core/common",
     "//components/ukm:observers",
+    "//components/ukm/debug_page",
     "//components/undo",
     "//components/update_client",
     "//components/upload_list",
diff --git a/chrome/browser/chrome_browser_main_win.cc b/chrome/browser/chrome_browser_main_win.cc
index 6e3fd55a..ea0e3a4 100644
--- a/chrome/browser/chrome_browser_main_win.cc
+++ b/chrome/browser/chrome_browser_main_win.cc
@@ -381,6 +381,10 @@
 
   InitializeChromeElf();
 
+#if defined(GOOGLE_CHROME_BUILD)
+  did_run_updater_.reset(new DidRunUpdater);
+#endif
+
   if (base::FeatureList::IsEnabled(safe_browsing::kSettingsResetPrompt)) {
     content::BrowserThread::PostAfterStartupTask(
         FROM_HERE,
diff --git a/chrome/browser/chrome_content_renderer_manifest_overlay.json b/chrome/browser/chrome_content_renderer_manifest_overlay.json
index ce8b9f139..16dd6ef 100644
--- a/chrome/browser/chrome_content_renderer_manifest_overlay.json
+++ b/chrome/browser/chrome_content_renderer_manifest_overlay.json
@@ -4,7 +4,8 @@
     "service_manager:connector": {
       "provides": {
         "browser": [
-          "chrome::mojom::ResourceUsageReporter"
+          "chrome::mojom::ResourceUsageReporter",
+          "spellcheck::mojom::SpellChecker"
         ]
       }
     },
diff --git a/chrome/browser/chromeos/arc/process/arc_process.cc b/chrome/browser/chromeos/arc/process/arc_process.cc
index abb054a..6bafc72 100644
--- a/chrome/browser/chromeos/arc/process/arc_process.cc
+++ b/chrome/browser/chromeos/arc/process/arc_process.cc
@@ -8,6 +8,15 @@
 
 namespace arc {
 
+namespace {
+
+// A special process on Android side which serves as a dummy "focused" app
+// when the focused window is a Chrome side window (i.e., all Android
+// processes are running in the background). We don't want to kill it anyway.
+constexpr char kArcHomeProcess[] = "org.chromium.arc.home";
+
+}  // namespace
+
 ArcProcess::ArcProcess(base::ProcessId nspid,
                        base::ProcessId pid,
                        const std::string& process_name,
@@ -34,4 +43,17 @@
 ArcProcess::ArcProcess(ArcProcess&& other) = default;
 ArcProcess& ArcProcess::operator=(ArcProcess&& other) = default;
 
+bool ArcProcess::IsImportant() const {
+  return process_state() <= mojom::ProcessState::IMPORTANT_FOREGROUND ||
+         process_name() == kArcHomeProcess;
+}
+
+bool ArcProcess::IsKernelKillable() const {
+  // Protect PERSISTENT, PERSISTENT_UI, and our HOME processes since they should
+  // never be killed even by the kernel. Returning false for them allows their
+  // OOM adjustment scores to remain negative.
+  return process_state() > arc::mojom::ProcessState::PERSISTENT_UI &&
+         process_name() != kArcHomeProcess;
+}
+
 }  // namespace arc
diff --git a/chrome/browser/chromeos/arc/process/arc_process.h b/chrome/browser/chromeos/arc/process/arc_process.h
index f4ee65c6..e2e6faf3 100644
--- a/chrome/browser/chromeos/arc/process/arc_process.h
+++ b/chrome/browser/chromeos/arc/process/arc_process.h
@@ -39,6 +39,17 @@
   std::vector<std::string>& packages() { return packages_; }
   const std::vector<std::string>& packages() const { return packages_; }
 
+  // Returns true if the process is important and should be protected more
+  // from OOM kills than other processes.
+  // TODO(cylee|yusukes): Check what stock Android does for handling OOM and
+  // modify this function as needed (crbug.com/719537).
+  bool IsImportant() const;
+
+  // Returns true if it is okay for the kernel OOM killer to kill the process.
+  // TODO(cylee|yusukes): Consider removing this function. Having only
+  // IsImportant() might be good enough.
+  bool IsKernelKillable() const;
+
  private:
   base::ProcessId nspid_;
   base::ProcessId pid_;
diff --git a/chrome/browser/chromeos/arc/process/arc_process_unittest.cc b/chrome/browser/chromeos/arc/process/arc_process_unittest.cc
index 006fc072..aea2d2bc 100644
--- a/chrome/browser/chromeos/arc/process/arc_process_unittest.cc
+++ b/chrome/browser/chromeos/arc/process/arc_process_unittest.cc
@@ -20,7 +20,7 @@
 
   std::list<ArcProcess> processes;  // use list<> for emplace_front.
   processes.emplace_back(0, 0, "process 0", mojom::ProcessState::PERSISTENT,
-                         false /* is_foreground */, kNow + 1);
+                         false /* is_focused */, kNow + 1);
   processes.emplace_front(1, 1, "process 1", mojom::ProcessState::PERSISTENT,
                           false, kNow);
   processes.emplace_back(2, 2, "process 2", mojom::ProcessState::LAST_ACTIVITY,
@@ -57,6 +57,156 @@
   EXPECT_EQ(5, it->pid());
 }
 
+TEST(ArcProcess, TestIsImportant) {
+  constexpr bool kIsNotFocused = false;
+
+  // Processes up to IMPORTANT_FOREGROUND are considered important.
+  EXPECT_TRUE(ArcProcess(0, 0, "process", mojom::ProcessState::PERSISTENT,
+                         kIsNotFocused, 0)
+                  .IsImportant());
+  EXPECT_TRUE(ArcProcess(0, 0, "process", mojom::ProcessState::PERSISTENT_UI,
+                         kIsNotFocused, 0)
+                  .IsImportant());
+  EXPECT_TRUE(ArcProcess(0, 0, "process", mojom::ProcessState::TOP, true, 0)
+                  .IsImportant());
+  EXPECT_TRUE(ArcProcess(0, 0, "process", mojom::ProcessState::TOP, false, 0)
+                  .IsImportant());
+  EXPECT_TRUE(ArcProcess(0, 0, "process",
+                         mojom::ProcessState::BOUND_FOREGROUND_SERVICE,
+                         kIsNotFocused, 0)
+                  .IsImportant());
+  EXPECT_TRUE(ArcProcess(0, 0, "process",
+                         mojom::ProcessState::FOREGROUND_SERVICE, kIsNotFocused,
+                         0)
+                  .IsImportant());
+  EXPECT_TRUE(ArcProcess(0, 0, "process", mojom::ProcessState::TOP_SLEEPING,
+                         kIsNotFocused, 0)
+                  .IsImportant());
+  EXPECT_TRUE(ArcProcess(0, 0, "process",
+                         mojom::ProcessState::IMPORTANT_FOREGROUND,
+                         kIsNotFocused, 0)
+                  .IsImportant());
+
+  // Others are not important.
+  EXPECT_FALSE(ArcProcess(0, 0, "process",
+                          mojom::ProcessState::IMPORTANT_BACKGROUND,
+                          kIsNotFocused, 0)
+                   .IsImportant());
+  EXPECT_FALSE(
+      ArcProcess(0, 0, "process", mojom::ProcessState::BACKUP, kIsNotFocused, 0)
+          .IsImportant());
+  EXPECT_FALSE(ArcProcess(0, 0, "process", mojom::ProcessState::HEAVY_WEIGHT,
+                          kIsNotFocused, 0)
+                   .IsImportant());
+  EXPECT_FALSE(ArcProcess(0, 0, "process", mojom::ProcessState::SERVICE,
+                          kIsNotFocused, 0)
+                   .IsImportant());
+  EXPECT_FALSE(ArcProcess(0, 0, "process", mojom::ProcessState::RECEIVER,
+                          kIsNotFocused, 0)
+                   .IsImportant());
+  EXPECT_FALSE(
+      ArcProcess(0, 0, "process", mojom::ProcessState::HOME, kIsNotFocused, 0)
+          .IsImportant());
+  EXPECT_FALSE(ArcProcess(0, 0, "process", mojom::ProcessState::LAST_ACTIVITY,
+                          kIsNotFocused, 0)
+                   .IsImportant());
+  EXPECT_FALSE(ArcProcess(0, 0, "process", mojom::ProcessState::CACHED_ACTIVITY,
+                          kIsNotFocused, 0)
+                   .IsImportant());
+  EXPECT_FALSE(ArcProcess(0, 0, "process",
+                          mojom::ProcessState::CACHED_ACTIVITY_CLIENT,
+                          kIsNotFocused, 0)
+                   .IsImportant());
+  EXPECT_FALSE(ArcProcess(0, 0, "process", mojom::ProcessState::CACHED_EMPTY,
+                          kIsNotFocused, 0)
+                   .IsImportant());
+
+  // Exceptions: the function always returns true ignoring ProcessState for our
+  // HOME process.
+  EXPECT_TRUE(ArcProcess(0, 0, "org.chromium.arc.home",
+                         mojom::ProcessState::TOP, kIsNotFocused, 0)
+                  .IsImportant());
+  EXPECT_TRUE(ArcProcess(0, 0, "org.chromium.arc.home",
+                         mojom::ProcessState::HOME, kIsNotFocused, 0)
+                  .IsImportant());
+}
+
+TEST(ArcProcess, TestIsKernelKillable) {
+  constexpr bool kIsNotFocused = false;
+
+  // Only PERSISITENT* processes are protected from the kernel OOM killer.
+  EXPECT_FALSE(ArcProcess(0, 0, "process", mojom::ProcessState::PERSISTENT,
+                          kIsNotFocused, 0)
+                   .IsKernelKillable());
+  EXPECT_FALSE(ArcProcess(0, 0, "process", mojom::ProcessState::PERSISTENT_UI,
+                          kIsNotFocused, 0)
+                   .IsKernelKillable());
+
+  // Both TOP+focused and TOP apps are still kernel-killable.
+  EXPECT_TRUE(ArcProcess(0, 0, "process", mojom::ProcessState::TOP, true, 0)
+                  .IsKernelKillable());
+  EXPECT_TRUE(ArcProcess(0, 0, "process", mojom::ProcessState::TOP, false, 0)
+                  .IsKernelKillable());
+
+  // Others are kernel-killable.
+  EXPECT_TRUE(ArcProcess(0, 0, "process",
+                         mojom::ProcessState::BOUND_FOREGROUND_SERVICE,
+                         kIsNotFocused, 0)
+                  .IsKernelKillable());
+  EXPECT_TRUE(ArcProcess(0, 0, "process",
+                         mojom::ProcessState::FOREGROUND_SERVICE, kIsNotFocused,
+                         0)
+                  .IsKernelKillable());
+  EXPECT_TRUE(ArcProcess(0, 0, "process", mojom::ProcessState::TOP_SLEEPING,
+                         kIsNotFocused, 0)
+                  .IsKernelKillable());
+  EXPECT_TRUE(ArcProcess(0, 0, "process",
+                         mojom::ProcessState::IMPORTANT_FOREGROUND,
+                         kIsNotFocused, 0)
+                  .IsKernelKillable());
+  EXPECT_TRUE(ArcProcess(0, 0, "process",
+                         mojom::ProcessState::IMPORTANT_BACKGROUND,
+                         kIsNotFocused, 0)
+                  .IsKernelKillable());
+  EXPECT_TRUE(
+      ArcProcess(0, 0, "process", mojom::ProcessState::BACKUP, kIsNotFocused, 0)
+          .IsKernelKillable());
+  EXPECT_TRUE(ArcProcess(0, 0, "process", mojom::ProcessState::HEAVY_WEIGHT,
+                         kIsNotFocused, 0)
+                  .IsKernelKillable());
+  EXPECT_TRUE(ArcProcess(0, 0, "process", mojom::ProcessState::SERVICE,
+                         kIsNotFocused, 0)
+                  .IsKernelKillable());
+  EXPECT_TRUE(ArcProcess(0, 0, "process", mojom::ProcessState::RECEIVER,
+                         kIsNotFocused, 0)
+                  .IsKernelKillable());
+  EXPECT_TRUE(
+      ArcProcess(0, 0, "process", mojom::ProcessState::HOME, kIsNotFocused, 0)
+          .IsKernelKillable());
+  EXPECT_TRUE(ArcProcess(0, 0, "process", mojom::ProcessState::LAST_ACTIVITY,
+                         kIsNotFocused, 0)
+                  .IsKernelKillable());
+  EXPECT_TRUE(ArcProcess(0, 0, "process", mojom::ProcessState::CACHED_ACTIVITY,
+                         kIsNotFocused, 0)
+                  .IsKernelKillable());
+  EXPECT_TRUE(ArcProcess(0, 0, "process",
+                         mojom::ProcessState::CACHED_ACTIVITY_CLIENT,
+                         kIsNotFocused, 0)
+                  .IsKernelKillable());
+  EXPECT_TRUE(ArcProcess(0, 0, "process", mojom::ProcessState::CACHED_EMPTY,
+                         kIsNotFocused, 0)
+                  .IsKernelKillable());
+
+  // Exceptions: the function always returns false ignoring ProcessState for our
+  // HOME process.
+  EXPECT_FALSE(ArcProcess(0, 0, "org.chromium.arc.home",
+                          mojom::ProcessState::TOP, kIsNotFocused, 0)
+                   .IsKernelKillable());
+  EXPECT_FALSE(ArcProcess(0, 0, "org.chromium.arc.home",
+                          mojom::ProcessState::HOME, kIsNotFocused, 0)
+                   .IsKernelKillable());
+}
+
 }  // namespace
 
 }  // namespace arc
diff --git a/chrome/browser/chromeos/arc/video/gpu_arc_video_service_host.cc b/chrome/browser/chromeos/arc/video/gpu_arc_video_service_host.cc
index f72fe84..9573e10f 100644
--- a/chrome/browser/chromeos/arc/video/gpu_arc_video_service_host.cc
+++ b/chrome/browser/chromeos/arc/video/gpu_arc_video_service_host.cc
@@ -79,8 +79,10 @@
   std::string token = mojo::edk::GenerateRandomToken();
   mojo::ScopedMessagePipeHandle server_pipe =
       invitation.AttachMessagePipe(token);
-  invitation.Send(kUnusedChildProcessHandle,
-                  mojo::edk::ConnectionParams(channel_pair.PassServerHandle()));
+  invitation.Send(
+      kUnusedChildProcessHandle,
+      mojo::edk::ConnectionParams(mojo::edk::TransportProtocol::kLegacy,
+                                  channel_pair.PassServerHandle()));
 
   MojoHandle wrapped_handle;
   MojoResult wrap_result = mojo::edk::CreatePlatformHandleWrapper(
diff --git a/chrome/browser/chromeos/login/session/user_session_manager.cc b/chrome/browser/chromeos/login/session/user_session_manager.cc
index 007699c5..41f9f10 100644
--- a/chrome/browser/chromeos/login/session/user_session_manager.cc
+++ b/chrome/browser/chromeos/login/session/user_session_manager.cc
@@ -1516,7 +1516,12 @@
 
 void UserSessionManager::RestorePendingUserSessions() {
   if (pending_user_sessions_.empty()) {
-    user_manager::UserManager::Get()->SwitchToLastActiveUser();
+    // '>1' ignores "restart on signin" because of browser flags difference.
+    // In this case, last_session_active_account_id_ can carry account_id
+    // from the previous browser session.
+    if (user_manager::UserManager::Get()->GetLoggedInUsers().size() > 1)
+      user_manager::UserManager::Get()->SwitchToLastActiveUser();
+
     NotifyPendingUserSessionsRestoreFinished();
     return;
   }
diff --git a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc
index 8a4d8b9..3fa7850 100644
--- a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc
+++ b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc
@@ -365,7 +365,7 @@
   std::string extension_name;
   std::string extension_type;
   if (!GetExtensionInfo(host, &extension_name, &extension_type))
-    return std::string();
+    return DevToolsAgentHost::kTypeOther;
   return extension_type;
 }
 
diff --git a/chrome/browser/media/protected_media_identifier_permission_context.cc b/chrome/browser/media/protected_media_identifier_permission_context.cc
index 7343bfd..ebaa354 100644
--- a/chrome/browser/media/protected_media_identifier_permission_context.cc
+++ b/chrome/browser/media/protected_media_identifier_permission_context.cc
@@ -6,15 +6,19 @@
 
 #include "base/command_line.h"
 #include "base/metrics/user_metrics.h"
+#include "base/strings/string_split.h"
 #include "build/build_config.h"
 #include "chrome/browser/content_settings/tab_specific_content_settings.h"
 #include "chrome/browser/permissions/permission_util.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/common/chrome_switches.h"
 #include "chrome/common/pref_names.h"
 #include "components/prefs/pref_service.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/web_contents.h"
+#include "media/base/media_switches.h"
+#include "net/base/url_util.h"
 #if defined(OS_CHROMEOS)
 #include <utility>
 
@@ -102,9 +106,39 @@
          content_setting == CONTENT_SETTING_BLOCK ||
          content_setting == CONTENT_SETTING_ASK);
 
+  // For automated testing of protected content - having a prompt that
+  // requires user intervention is problematic. If the domain has been
+  // whitelisted as safe - suppress the request and allow.
+  if (content_setting == CONTENT_SETTING_ASK &&
+      IsOriginWhitelisted(requesting_origin)) {
+    content_setting = CONTENT_SETTING_ALLOW;
+  }
+
   return content_setting;
 }
 
+bool ProtectedMediaIdentifierPermissionContext::IsOriginWhitelisted(
+    const GURL& origin) {
+  const base::CommandLine& command_line =
+      *base::CommandLine::ForCurrentProcess();
+
+  if (command_line.GetSwitchValueASCII(switches::kUserDataDir).empty()) {
+    return false;
+  }
+
+  const std::string whitelist = command_line.GetSwitchValueASCII(
+      switches::kUnsafelyAllowProtectedMediaIdentifierForDomain);
+
+  for (const std::string& domain : base::SplitString(
+           whitelist, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY)) {
+    if (origin.DomainIs(domain)) {
+      return true;
+    }
+  }
+
+  return false;
+}
+
 void ProtectedMediaIdentifierPermissionContext::CancelPermissionRequest(
     content::WebContents* web_contents,
     const PermissionRequestID& id) {
diff --git a/chrome/browser/media/protected_media_identifier_permission_context.h b/chrome/browser/media/protected_media_identifier_permission_context.h
index 8bb0c68..f4bd789 100644
--- a/chrome/browser/media/protected_media_identifier_permission_context.h
+++ b/chrome/browser/media/protected_media_identifier_permission_context.h
@@ -53,6 +53,9 @@
                                const PermissionRequestID& id) override;
 
  private:
+  friend class ProtectedMediaIdentifierPermissionContextTest;
+  static bool IsOriginWhitelisted(const GURL& origin);
+
   void UpdateTabContext(const PermissionRequestID& id,
                         const GURL& requesting_frame,
                         bool allowed) override;
diff --git a/chrome/browser/media/protected_media_identifier_permission_context_unittest.cc b/chrome/browser/media/protected_media_identifier_permission_context_unittest.cc
new file mode 100644
index 0000000..4099493
--- /dev/null
+++ b/chrome/browser/media/protected_media_identifier_permission_context_unittest.cc
@@ -0,0 +1,105 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/media/protected_media_identifier_permission_context.h"
+
+#include "base/test/scoped_command_line.h"
+#include "chrome/common/chrome_switches.h"
+#include "media/base/media_switches.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+
+class ProtectedMediaIdentifierPermissionContextTest : public testing::Test {
+ public:
+  ProtectedMediaIdentifierPermissionContextTest()
+      : requesting_origin_("https://example.com"),
+        requesting_sub_domain_origin_("https://subdomain.example.com") {
+    command_line_ = scoped_command_line_.GetProcessCommandLine();
+  }
+
+  bool IsOriginWhitelisted(const GURL& origin) {
+    return ProtectedMediaIdentifierPermissionContext::IsOriginWhitelisted(
+        origin);
+  }
+
+  GURL requesting_origin_;
+  GURL requesting_sub_domain_origin_;
+
+  base::test::ScopedCommandLine scoped_command_line_;
+  base::CommandLine* command_line_;
+};
+
+TEST_F(ProtectedMediaIdentifierPermissionContextTest,
+       BypassWithFlagWithSingleDomain) {
+  // The request should need to ask for permission
+  ASSERT_FALSE(IsOriginWhitelisted(requesting_origin_));
+
+  // Add the switch value that the
+  // ProtectedMediaIdentifierPermissionContext::reads from
+  command_line_->AppendSwitchASCII(switches::kUserDataDir, "/dir/for/testing");
+  command_line_->AppendSwitchASCII(
+      switches::kUnsafelyAllowProtectedMediaIdentifierForDomain, "example.com");
+
+  // The request should no longer need to ask for permission
+  ASSERT_TRUE(IsOriginWhitelisted(requesting_origin_));
+}
+
+TEST_F(ProtectedMediaIdentifierPermissionContextTest,
+       BypassWithFlagWithDomainList) {
+  // The request should need to ask for permission
+  ASSERT_FALSE(IsOriginWhitelisted(requesting_origin_));
+
+  // Add the switch value that the
+  // ProtectedMediaIdentifierPermissionContext::reads from
+  command_line_->AppendSwitchASCII(switches::kUserDataDir, "/dir/for/testing");
+  command_line_->AppendSwitchASCII(
+      switches::kUnsafelyAllowProtectedMediaIdentifierForDomain,
+      "example.ca,example.com,example.edu");
+
+  // The request should no longer need to ask for permission
+  ASSERT_TRUE(IsOriginWhitelisted(requesting_origin_));
+}
+
+TEST_F(ProtectedMediaIdentifierPermissionContextTest,
+       BypassWithFlagAndSubdomain) {
+  // The request should need to ask for permission
+  ASSERT_FALSE(IsOriginWhitelisted(requesting_sub_domain_origin_));
+
+  // Add the switch value that the
+  // ProtectedMediaIdentifierPermissionContext::reads from
+  command_line_->AppendSwitchASCII(switches::kUserDataDir, "/dir/for/testing");
+  command_line_->AppendSwitchASCII(
+      switches::kUnsafelyAllowProtectedMediaIdentifierForDomain, "example.com");
+
+  // The request should no longer need to ask for permission
+  ASSERT_TRUE(IsOriginWhitelisted(requesting_sub_domain_origin_));
+}
+
+TEST_F(ProtectedMediaIdentifierPermissionContextTest,
+       BypassRequiresUserDataDir) {
+  // The request should need to ask for permission
+  ASSERT_FALSE(IsOriginWhitelisted(requesting_origin_));
+
+  // Add the switch value that the
+  // ProtectedMediaIdentifierPermissionContext::reads from
+  command_line_->AppendSwitchASCII(
+      switches::kUnsafelyAllowProtectedMediaIdentifierForDomain, "example.com");
+
+  // The request should still need to ask for permission
+  ASSERT_FALSE(IsOriginWhitelisted(requesting_origin_));
+
+  // Set the user data dir switch but do not give it a value, this should still
+  // require the request to ask for permission.
+  command_line_->AppendSwitch(switches::kUserDataDir);
+
+  // The request should still need to ask for permission
+  ASSERT_FALSE(IsOriginWhitelisted(requesting_origin_));
+
+  // Set the user data dir so the request should no longer need to ask for
+  // permission
+  command_line_->AppendSwitchASCII(switches::kUserDataDir, "/dir/for/testing");
+
+  // The request should no longer need to ask for permission
+  ASSERT_TRUE(IsOriginWhitelisted(requesting_origin_));
+}
diff --git a/chrome/browser/memory/tab_manager_delegate_chromeos.cc b/chrome/browser/memory/tab_manager_delegate_chromeos.cc
index 08c658b..aef50dc 100644
--- a/chrome/browser/memory/tab_manager_delegate_chromeos.cc
+++ b/chrome/browser/memory/tab_manager_delegate_chromeos.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/memory/tab_manager_delegate_chromeos.h"
 
+#include <math.h>
 #include <stdint.h>
 
 #include <algorithm>
@@ -36,7 +37,6 @@
 #include "chromeos/dbus/dbus_thread_manager.h"
 #include "components/arc/arc_bridge_service.h"
 #include "components/arc/arc_service_manager.h"
-#include "components/arc/common/process.mojom.h"
 #include "components/device_event_log/device_event_log.h"
 #include "components/exo/shell_surface.h"
 #include "content/public/browser/browser_thread.h"
@@ -86,20 +86,25 @@
 
 void OnSetOomScoreAdj(bool success, const std::string& output) {
   VLOG(2) << "OnSetOomScoreAdj " << success << " " << output;
-  if (!success || output != "")
-    LOG(WARNING) << "Set OOM score error: " << output;
+  if (!success)
+    LOG(ERROR) << "Set OOM score error: " << output;
+  else if (!output.empty())
+    LOG(WARNING) << "Set OOM score: " << output;
 }
 
 }  // namespace
 
+// static
+const int TabManagerDelegate::kLowestOomScore = -1000;
+
 std::ostream& operator<<(std::ostream& os, const ProcessType& type) {
   switch (type) {
     case ProcessType::FOCUSED_TAB:
       return os << "FOCUSED_TAB";
     case ProcessType::FOCUSED_APP:
       return os << "FOCUSED_APP";
-    case ProcessType::VISIBLE_APP:
-      return os << "VISIBLE_APP";
+    case ProcessType::IMPORTANT_APP:
+      return os << "IMPORTANT_APP";
     case ProcessType::BACKGROUND_TAB:
       return os << "BACKGROUND_TAB";
     case ProcessType::BACKGROUND_APP:
@@ -155,10 +160,8 @@
   if (app()) {
     if (app()->is_focused())
       return ProcessType::FOCUSED_APP;
-    if (app()->process_state() <=
-        arc::mojom::ProcessState::IMPORTANT_FOREGROUND) {
-      return ProcessType::VISIBLE_APP;
-    }
+    if (app()->IsImportant())
+      return ProcessType::IMPORTANT_APP;
     return ProcessType::BACKGROUND_APP;
   }
   if (tab()) {
@@ -531,19 +534,7 @@
     candidates.emplace_back(&tab);
   }
 
-  // A special process on Android side which serves as a dummy "focused" app
-  // when the focused window is a Chrome side window (i.e., all Android
-  // processes are running in the background). We don't want to kill it anyway.
-  static constexpr char kArcInBackgroundDummyprocess[] =
-      "org.chromium.arc.home";
-
   for (const auto& app : arc_processes) {
-    // Skip persistent android processes since they should never be killed here.
-    // Neither do we set their OOM scores so their score remains minimum.
-    if (app.process_state() <= arc::mojom::ProcessState::PERSISTENT_UI ||
-        app.process_name() == kArcInBackgroundDummyprocess) {
-      continue;
-    }
     candidates.emplace_back(&app);
   }
 
@@ -609,12 +600,11 @@
                       << " KB";
     if (target_memory_to_free_kb <= 0)
       break;
-    // Never kill selected tab or Android foreground app, regardless whether
-    // they're in the active window. Since the user experience would be bad.
+    // Never kill selected tab, foreground app, and important apps regardless of
+    // whether they're in the active window. Since the user experience would be
+    // bad.
     ProcessType process_type = it->process_type();
-    if (process_type == ProcessType::VISIBLE_APP ||
-        process_type == ProcessType::FOCUSED_APP ||
-        process_type == ProcessType::FOCUSED_TAB) {
+    if (process_type <= ProcessType::IMPORTANT_APP) {
       MEMORY_LOG(ERROR) << "Skipped killing " << *it;
       continue;
     }
@@ -660,8 +650,24 @@
 void TabManagerDelegate::AdjustOomPrioritiesImpl(
     const TabStatsList& tab_list,
     const std::vector<arc::ArcProcess>& arc_processes) {
+  std::vector<TabManagerDelegate::Candidate> candidates;
+  std::vector<TabManagerDelegate::Candidate> apps_non_killable;
+
   // Least important first.
-  const auto candidates = GetSortedCandidates(tab_list, arc_processes);
+  auto all_candidates = GetSortedCandidates(tab_list, arc_processes);
+  for (auto& candidate : all_candidates) {
+    // TODO(cylee|yusukes): Consider using IsImportant() instead of
+    // IsKernelKillable() for simplicity.
+    // TODO(cylee): Also consider protecting FOCUSED_TAB from the kernel OOM
+    // killer so that Chrome and the kernel do the same regarding OOM handling.
+    if (!candidate.app() || candidate.app()->IsKernelKillable()) {
+      // Add tabs and killable apps to |candidates|.
+      candidates.emplace_back(std::move(candidate));
+    } else {
+      // Add non-killable apps to |apps_non_killable|.
+      apps_non_killable.emplace_back(std::move(candidate));
+    }
+  }
 
   // Now we assign priorities based on the sorted list. We're assigning
   // priorities in the range of kLowestRendererOomScore to
@@ -691,6 +697,10 @@
 
   ProcessScoreMap new_map;
 
+  // Make the apps non-killable.
+  if (!apps_non_killable.empty())
+    SetOomScore(apps_non_killable, kLowestOomScore, &new_map);
+
   // Higher priority part.
   DistributeOomScoreInRange(candidates.begin(), lower_priority_part,
                             chrome::kLowestRendererOomScore, range_middle,
@@ -698,9 +708,18 @@
   // Lower priority part.
   DistributeOomScoreInRange(lower_priority_part, candidates.end(), range_middle,
                             chrome::kHighestRendererOomScore, &new_map);
+
   oom_score_map_.swap(new_map);
 }
 
+void TabManagerDelegate::SetOomScore(
+    const std::vector<TabManagerDelegate::Candidate>& candidates,
+    int score,
+    ProcessScoreMap* new_map) {
+  DistributeOomScoreInRange(candidates.begin(), candidates.end(), score, score,
+                            new_map);
+}
+
 void TabManagerDelegate::DistributeOomScoreInRange(
     std::vector<TabManagerDelegate::Candidate>::const_iterator begin,
     std::vector<TabManagerDelegate::Candidate>::const_iterator end,
@@ -720,7 +739,7 @@
 
   float priority = range_begin;
   for (auto cur = begin; cur != end; ++cur) {
-    int score = static_cast<int>(priority + 0.5f);
+    const int score = round(priority);
 
     base::ProcessHandle pid = base::kNullProcessHandle;
     if (cur->app()) {
@@ -753,9 +772,10 @@
     priority += priority_increment;
   }
 
-  if (oom_scores_to_change.size())
+  if (oom_scores_to_change.size()) {
     GetDebugDaemonClient()->SetOomScoreAdj(
         oom_scores_to_change, base::Bind(&OnSetOomScoreAdj));
+  }
 }
 
 }  // namespace memory
diff --git a/chrome/browser/memory/tab_manager_delegate_chromeos.h b/chrome/browser/memory/tab_manager_delegate_chromeos.h
index 0c86a265..025877c 100644
--- a/chrome/browser/memory/tab_manager_delegate_chromeos.h
+++ b/chrome/browser/memory/tab_manager_delegate_chromeos.h
@@ -41,7 +41,11 @@
   FOCUSED_TAB = 1,
   FOCUSED_APP = 2,
 
-  VISIBLE_APP = 3,
+  // Important apps are protected in two ways: 1) Chrome never kills them, and
+  // 2) the kernel is still allowed to kill them, but their OOM adjustment
+  // scores are better than BACKGROUND_TABs and BACKGROUND_APPs.
+  IMPORTANT_APP = 3,
+
   BACKGROUND_TAB = 4,
   BACKGROUND_APP = 5,
   UNKNOWN_TYPE = 6,
@@ -162,6 +166,12 @@
       int range_end,
       ProcessScoreMap* new_map);
 
+  // Changes |candidates|' OOM scores to |score|. The new scores are set in
+  // |new_map|.
+  void SetOomScore(const std::vector<TabManagerDelegate::Candidate>& candidates,
+                   int score,
+                   ProcessScoreMap* new_map);
+
   // Initiates an oom priority adjustment.
   void ScheduleEarlyOomPrioritiesAdjustment();
 
@@ -173,6 +183,9 @@
     return base::TimeDelta::FromSeconds(60);
   }
 
+  // The lowest OOM adjustment score that will make the process non-killable.
+  static const int kLowestOomScore;
+
   // Holds a reference to the owning TabManager.
   const base::WeakPtr<TabManager> tab_manager_;
 
diff --git a/chrome/browser/memory/tab_manager_delegate_chromeos_unittest.cc b/chrome/browser/memory/tab_manager_delegate_chromeos_unittest.cc
index 8d10119..7b6572f 100644
--- a/chrome/browser/memory/tab_manager_delegate_chromeos_unittest.cc
+++ b/chrome/browser/memory/tab_manager_delegate_chromeos_unittest.cc
@@ -233,6 +233,12 @@
       3, 30, "service", arc::mojom::ProcessState::SERVICE, kNotFocused, 500);
   arc_processes.emplace_back(4, 40, "visible2", arc::mojom::ProcessState::TOP,
                              kNotFocused, 150);
+  arc_processes.emplace_back(5, 50, "persistent",
+                             arc::mojom::ProcessState::PERSISTENT, kNotFocused,
+                             600);
+  arc_processes.emplace_back(6, 60, "persistent_ui",
+                             arc::mojom::ProcessState::PERSISTENT_UI,
+                             kNotFocused, 700);
 
   TabStats tab1, tab2, tab3, tab4, tab5;
   tab1.is_pinned = true;
@@ -252,20 +258,29 @@
   tab5.renderer_handle = 12;
   TabStatsList tab_list = {tab1, tab2, tab3, tab4, tab5};
 
-  // Sorted order:
-  // app "focused"     pid: 10
-  // app "visible1"    pid: 20
-  // app "visible2"    pid: 40
-  // tab3              pid: 12
-  // tab4              pid: 12
-  // tab1              pid: 11
-  // tab5              pid: 12
-  // tab2              pid: 11
-  // app "service"     pid: 30
+  // Sorted order (by GetSortedCandidates):
+  // app "focused"       pid: 10
+  // app "persistent"    pid: 50
+  // app "persistent_ui" pid: 60
+  // app "visible1"      pid: 20
+  // app "visible2"      pid: 40
+  // tab3                pid: 12
+  // tab4                pid: 12
+  // tab1                pid: 11
+  // tab5                pid: 12
+  // tab2                pid: 11
+  // app "service"       pid: 30
   tab_manager_delegate.AdjustOomPrioritiesImpl(tab_list, arc_processes);
   auto& oom_score_map = tab_manager_delegate.oom_score_map_;
 
-  EXPECT_EQ(6U, oom_score_map.size());
+  // 6 PIDs for apps + 2 PIDs for tabs.
+  EXPECT_EQ(6U + 2U, oom_score_map.size());
+
+  // Non-killable part. AdjustOomPrioritiesImpl() does make a focused app/tab
+  // kernel-killable, but does not do that for PERSISTENT and PERSISTENT_UI
+  // apps.
+  EXPECT_EQ(TabManagerDelegate::kLowestOomScore, oom_score_map[50]);
+  EXPECT_EQ(TabManagerDelegate::kLowestOomScore, oom_score_map[60]);
 
   // Higher priority part.
   EXPECT_EQ(300, oom_score_map[10]);
@@ -368,6 +383,9 @@
   arc_processes.emplace_back(5, 50, "not-visible",
                              arc::mojom::ProcessState::IMPORTANT_BACKGROUND,
                              kNotFocused, 300);
+  arc_processes.emplace_back(6, 60, "persistent",
+                             arc::mojom::ProcessState::PERSISTENT, kNotFocused,
+                             400);
 
   TabStats tab1, tab2, tab3, tab4, tab5;
   tab1.is_pinned = true;
@@ -392,8 +410,9 @@
   tab5.tab_contents_id = 5;
   TabStatsList tab_list = {tab1, tab2, tab3, tab4, tab5};
 
-  // Sorted order:
+  // Sorted order (by GetSortedCandidates):
   // app "focused"     pid: 10  nspid 1
+  // app "persistent"  pid: 60  nspid 6
   // app "visible1"    pid: 20  nspid 2
   // app "visible2"    pid: 40  nspid 4
   // tab3              pid: 12  tab_contents_id 3
@@ -410,6 +429,7 @@
   memory_stat->SetProcessPss(11, 200000);
   memory_stat->SetProcessPss(12, 30000);
   // Should not be used.
+  memory_stat->SetProcessPss(60, 500000);
   memory_stat->SetProcessPss(40, 50000);
   memory_stat->SetProcessPss(20, 30000);
   memory_stat->SetProcessPss(10, 100000);
diff --git a/chrome/browser/memory_details.cc b/chrome/browser/memory_details.cc
index 723fdac..356fffc 100644
--- a/chrome/browser/memory_details.cc
+++ b/chrome/browser/memory_details.cc
@@ -97,7 +97,8 @@
       num_open_fds(-1),
       open_fds_soft_limit(-1),
       renderer_type(RENDERER_UNKNOWN),
-      phys_footprint(0) {}
+      phys_footprint(0),
+      private_memory_footprint(0) {}
 
 ProcessMemoryInformation::ProcessMemoryInformation(
     const ProcessMemoryInformation& other) = default;
diff --git a/chrome/browser/memory_details.h b/chrome/browser/memory_details.h
index 5f6b259..b0f84af9 100644
--- a/chrome/browser/memory_details.h
+++ b/chrome/browser/memory_details.h
@@ -72,6 +72,9 @@
   // The physical footprint is a macOS concept that tracks anonymous,
   // non-discardable memory.
   size_t phys_footprint;
+  // TODO(erikchen): Remove this temporary estimate for private memory once the
+  // memory infra service emits the same metric. https://crbug.com/720541.
+  size_t private_memory_footprint;
 };
 
 typedef std::vector<ProcessMemoryInformation> ProcessMemoryInformationList;
diff --git a/chrome/browser/memory_details_mac.cc b/chrome/browser/memory_details_mac.cc
index 571e739d..30d9e86 100644
--- a/chrome/browser/memory_details_mac.cc
+++ b/chrome/browser/memory_details_mac.cc
@@ -14,6 +14,7 @@
 #include "base/file_version_info.h"
 #include "base/files/file_path.h"
 #include "base/mac/foundation_util.h"
+#include "base/mac/mac_util.h"
 #include "base/process/process_iterator.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
@@ -62,7 +63,16 @@
       base::ProcessMetrics::CreateProcessMetrics(
           pid, content::BrowserChildProcessHost::GetPortProvider());
   metrics->GetCommittedAndWorkingSetKBytes(&info.committed, &info.working_set);
-  info.phys_footprint = metrics->GetTaskVMInfo().phys_footprint;
+  base::ProcessMetrics::TaskVMInfo vm_info = metrics->GetTaskVMInfo();
+  info.phys_footprint = vm_info.phys_footprint;
+
+  // TODO(erikchen): Remove this temporary estimate for private memory once the
+  // memory infra service emits the same metric. https://crbug.com/720541.
+  if (base::mac::IsAtLeastOS10_12()) {
+    info.private_memory_footprint = vm_info.phys_footprint;
+  } else {
+    info.private_memory_footprint = vm_info.internal + vm_info.compressed;
+  }
 
   processes->push_back(info);
 }
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc
index 5adb54f..4a2fb00e 100644
--- a/chrome/browser/metrics/chrome_metrics_service_client.cc
+++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
@@ -82,6 +82,7 @@
 #include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/pref_service.h"
 #include "components/sync/device_info/device_count_metrics_provider.h"
+#include "components/ukm/debug_page/debug_page.h"
 #include "components/ukm/ukm_service.h"
 #include "components/version_info/version_info.h"
 #include "content/public/browser/browser_thread.h"
@@ -279,6 +280,10 @@
 }
 #endif  // OS_WIN
 
+ukm::UkmService* BindableGetUkmService() {
+  return g_browser_process->ukm_service();
+}
+
 }  // namespace
 
 const char ChromeMetricsServiceClient::kBrowserMetricsName[] = "BrowserMetrics";
@@ -926,6 +931,9 @@
 }
 
 void ChromeMetricsServiceClient::RegisterForProfileEvents(Profile* profile) {
+  // Register chrome://ukm handler
+  content::URLDataSource::Add(
+      profile, new ukm::debug::DebugPage(base::Bind(&BindableGetUkmService)));
 #if defined(OS_CHROMEOS)
   // Ignore the signin profile for sync disables / history deletion.
   if (chromeos::ProfileHelper::IsSigninProfile(profile))
diff --git a/chrome/browser/metrics/metrics_memory_details.cc b/chrome/browser/metrics/metrics_memory_details.cc
index 2b9bc7d3..544fe24b 100644
--- a/chrome/browser/metrics/metrics_memory_details.cc
+++ b/chrome/browser/metrics/metrics_memory_details.cc
@@ -108,6 +108,11 @@
           UMA_HISTOGRAM_COUNTS_10000("Memory.Browser.OpenFDsSoftLimit",
                                      open_fds_soft_limit);
         }
+#if defined(OS_MACOSX)
+        UMA_HISTOGRAM_MEMORY_LARGE_MB(
+            "Memory.Experimental.Browser.PrivateMemoryFootprint.MacOS",
+            browser.processes[index].private_memory_footprint / 1024 / 1024);
+#endif
         continue;
       case content::PROCESS_TYPE_RENDERER: {
         UMA_HISTOGRAM_MEMORY_LARGE_MB("Memory.RendererAll", sample / 1024);
@@ -129,6 +134,12 @@
                                          num_open_fds);
             }
             extension_count++;
+#if defined(OS_MACOSX)
+            UMA_HISTOGRAM_MEMORY_LARGE_MB(
+                "Memory.Experimental.Extension.PrivateMemoryFootprint.MacOS",
+                browser.processes[index].private_memory_footprint / 1024 /
+                    1024);
+#endif
             continue;
           case ProcessMemoryInformation::RENDERER_CHROME:
             UMA_HISTOGRAM_MEMORY_KB("Memory.Chrome", sample);
@@ -141,6 +152,12 @@
             continue;
           case ProcessMemoryInformation::RENDERER_NORMAL:
           default:
+#if defined(OS_MACOSX)
+            UMA_HISTOGRAM_MEMORY_LARGE_MB(
+                "Memory.Experimental.Renderer.PrivateMemoryFootprint.MacOS",
+                browser.processes[index].private_memory_footprint / 1024 /
+                    1024);
+#endif
             // TODO(erikkay): Should we bother splitting out the other subtypes?
             UMA_HISTOGRAM_MEMORY_LARGE_MB("Memory.Renderer.Large2",
                                           sample / 1024);
@@ -182,6 +199,9 @@
               "Memory.Experimental.Gpu.PhysicalFootprint.MacOS",
               browser.processes[index].phys_footprint / 1024 / 1024);
         }
+        UMA_HISTOGRAM_MEMORY_LARGE_MB(
+            "Memory.Experimental.Gpu.PrivateMemoryFootprint.MacOS",
+            browser.processes[index].private_memory_footprint / 1024 / 1024);
 #endif
         UMA_HISTOGRAM_MEMORY_KB("Memory.Gpu", sample);
         if (num_open_fds != -1 && open_fds_soft_limit != -1) {
diff --git a/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc b/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
index c75afcf..c6a2dd4 100644
--- a/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
+++ b/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
@@ -313,8 +313,12 @@
 
 void MetricsWebContentsObserver::DidFinishNavigation(
     content::NavigationHandle* navigation_handle) {
-  if (!navigation_handle->IsInMainFrame() && committed_load_) {
-    committed_load_->DidFinishSubFrameNavigation(navigation_handle);
+  if (!navigation_handle->IsInMainFrame()) {
+    if (committed_load_ && navigation_handle->GetParentFrame() &&
+        GetMainFrame(navigation_handle->GetParentFrame()) ==
+            web_contents()->GetMainFrame()) {
+      committed_load_->DidFinishSubFrameNavigation(navigation_handle);
+    }
     return;
   }
 
diff --git a/chrome/browser/safe_browsing/chrome_cleaner/srt_fetcher_win.cc b/chrome/browser/safe_browsing/chrome_cleaner/srt_fetcher_win.cc
index 3c9fd41..57e910f 100644
--- a/chrome/browser/safe_browsing/chrome_cleaner/srt_fetcher_win.cc
+++ b/chrome/browser/safe_browsing/chrome_cleaner/srt_fetcher_win.cc
@@ -699,9 +699,11 @@
           ? base::Bind(&SwReporterTestingDelegate::OnConnectionError,
                        base::Unretained(g_testing_delegate_))
           : base::Bind(&OnConnectionError);
-  invitation.Send(reporter_process.Handle(),
-                  mojo::edk::ConnectionParams(channel.PassServerHandle()),
-                  on_connection_error);
+  invitation.Send(
+      reporter_process.Handle(),
+      mojo::edk::ConnectionParams(mojo::edk::TransportProtocol::kLegacy,
+                                  channel.PassServerHandle()),
+      on_connection_error);
 
   return reporter_process;
 }
diff --git a/chrome/browser/spellchecker/spellcheck_service.cc b/chrome/browser/spellchecker/spellcheck_service.cc
index e496d89..cf86778b 100644
--- a/chrome/browser/spellchecker/spellcheck_service.cc
+++ b/chrome/browser/spellchecker/spellcheck_service.cc
@@ -20,9 +20,8 @@
 #include "components/spellcheck/browser/spellcheck_host_metrics.h"
 #include "components/spellcheck/browser/spellcheck_platform.h"
 #include "components/spellcheck/browser/spelling_service_client.h"
-#include "components/spellcheck/common/spellcheck_bdict_language.h"
+#include "components/spellcheck/common/spellcheck.mojom.h"
 #include "components/spellcheck/common/spellcheck_common.h"
-#include "components/spellcheck/common/spellcheck_messages.h"
 #include "components/spellcheck/spellcheck_build_features.h"
 #include "components/user_prefs/user_prefs.h"
 #include "content/public/browser/browser_context.h"
@@ -31,7 +30,6 @@
 #include "content/public/browser/notification_types.h"
 #include "content/public/browser/render_process_host.h"
 #include "content/public/browser/storage_partition.h"
-#include "ipc/ipc_platform_file.h"
 
 using content::BrowserThread;
 
@@ -174,27 +172,27 @@
   if (SpellcheckServiceFactory::GetForContext(context) != this)
     return;
 
-  PrefService* prefs = user_prefs::UserPrefs::Get(context);
-  std::vector<SpellCheckBDictLanguage> bdict_languages;
+  const PrefService* prefs = user_prefs::UserPrefs::Get(context);
+  std::vector<spellcheck::mojom::SpellCheckBDictLanguagePtr> dictionaries;
 
   for (const auto& hunspell_dictionary : hunspell_dictionaries_) {
-    bdict_languages.push_back(SpellCheckBDictLanguage());
-    bdict_languages.back().language = hunspell_dictionary->GetLanguage();
-    bdict_languages.back().file =
-        hunspell_dictionary->GetDictionaryFile().IsValid()
-            ? IPC::GetPlatformFileForTransit(
-                  hunspell_dictionary->GetDictionaryFile().GetPlatformFile(),
-                  false)
-            : IPC::InvalidPlatformFileForTransit();
+    dictionaries.push_back(spellcheck::mojom::SpellCheckBDictLanguage::New(
+        hunspell_dictionary->GetDictionaryFile().Duplicate(),
+        hunspell_dictionary->GetLanguage()));
   }
 
-  bool enabled =
-      prefs->GetBoolean(spellcheck::prefs::kEnableSpellcheck) &&
-      !bdict_languages.empty();
-  process->Send(new SpellCheckMsg_Init(
-      bdict_languages,
-      enabled ? custom_dictionary_->GetWords() : std::set<std::string>()));
-  process->Send(new SpellCheckMsg_EnableSpellCheck(enabled));
+  bool enable = prefs->GetBoolean(spellcheck::prefs::kEnableSpellcheck) &&
+                !dictionaries.empty();
+
+  std::vector<std::string> custom_words;
+  if (enable) {
+    custom_words.assign(custom_dictionary_->GetWords().begin(),
+                        custom_dictionary_->GetWords().end());
+  }
+
+  spellcheck::mojom::SpellCheckerPtr spellchecker;
+  content::BindInterface(process, &spellchecker);
+  spellchecker->Initialize(std::move(dictionaries), custom_words, enable);
 }
 
 SpellCheckHostMetrics* SpellcheckService::GetMetrics() const {
@@ -257,13 +255,20 @@
 }
 
 void SpellcheckService::OnCustomDictionaryChanged(
-    const SpellcheckCustomDictionary::Change& dictionary_change) {
-  for (content::RenderProcessHost::iterator i(
-          content::RenderProcessHost::AllHostsIterator());
-       !i.IsAtEnd(); i.Advance()) {
-    i.GetCurrentValue()->Send(new SpellCheckMsg_CustomDictionaryChanged(
-        dictionary_change.to_add(),
-        dictionary_change.to_remove()));
+    const SpellcheckCustomDictionary::Change& change) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
+  auto process_hosts(content::RenderProcessHost::AllHostsIterator());
+
+  const std::vector<std::string> additions(change.to_add().begin(),
+                                           change.to_add().end());
+  const std::vector<std::string> deletions(change.to_remove().begin(),
+                                           change.to_remove().end());
+  while (!process_hosts.IsAtEnd()) {
+    spellcheck::mojom::SpellCheckerPtr spellchecker;
+    content::BindInterface(process_hosts.GetCurrentValue(), &spellchecker);
+    spellchecker->CustomDictionaryChanged(additions, deletions);
+    process_hosts.Advance();
   }
 }
 
diff --git a/chrome/browser/spellchecker/spellcheck_service.h b/chrome/browser/spellchecker/spellcheck_service.h
index 5e593fe03..6a518d0 100644
--- a/chrome/browser/spellchecker/spellcheck_service.h
+++ b/chrome/browser/spellchecker/spellcheck_service.h
@@ -130,7 +130,7 @@
   // SpellcheckCustomDictionary::Observer implementation.
   void OnCustomDictionaryLoaded() override;
   void OnCustomDictionaryChanged(
-      const SpellcheckCustomDictionary::Change& dictionary_change) override;
+      const SpellcheckCustomDictionary::Change& change) override;
 
   // SpellcheckHunspellDictionary::Observer implementation.
   void OnHunspellDictionaryInitialized(const std::string& language) override;
diff --git a/chrome/browser/spellchecker/spellcheck_service_browsertest.cc b/chrome/browser/spellchecker/spellcheck_service_browsertest.cc
index 21fe47eb..533eeabd 100644
--- a/chrome/browser/spellchecker/spellcheck_service_browsertest.cc
+++ b/chrome/browser/spellchecker/spellcheck_service_browsertest.cc
@@ -29,8 +29,8 @@
 #include "chrome/test/base/in_process_browser_test.h"
 #include "components/prefs/pref_service.h"
 #include "components/spellcheck/browser/pref_names.h"
+#include "components/spellcheck/common/spellcheck.mojom.h"
 #include "components/spellcheck/common/spellcheck_common.h"
-#include "components/spellcheck/common/spellcheck_messages.h"
 #include "components/user_prefs/user_prefs.h"
 #include "content/public/test/mock_render_process_host.h"
 #include "content/public/test/test_utils.h"
@@ -51,32 +51,20 @@
     0x49, 0x00, 0x68, 0x02, 0x73, 0x06, 0x74, 0x0b, 0x77, 0x11, 0x79, 0x15,
 };
 
-// Clears IPC messages before a preference change. Runs the runloop after the
-// preference change.
-class ScopedPreferenceChange {
- public:
-  explicit ScopedPreferenceChange(IPC::TestSink* sink) {
-    sink->ClearMessages();
-  }
-
-  ~ScopedPreferenceChange() {
-    base::RunLoop().RunUntilIdle();
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(ScopedPreferenceChange);
-};
-
 }  // namespace
 
-class SpellcheckServiceBrowserTest : public InProcessBrowserTest {
+class SpellcheckServiceBrowserTest : public InProcessBrowserTest,
+                                     public spellcheck::mojom::SpellChecker {
  public:
+  SpellcheckServiceBrowserTest() : binding_(this) {}
+
   void SetUpOnMainThread() override {
     renderer_.reset(new content::MockRenderProcessHost(GetContext()));
     prefs_ = user_prefs::UserPrefs::Get(GetContext());
   }
 
   void TearDownOnMainThread() override {
+    binding_.Close();
     prefs_ = nullptr;
     renderer_.reset();
   }
@@ -101,26 +89,43 @@
         base::SplitString(multiple_dictionaries, ",", base::TRIM_WHITESPACE,
                           base::SPLIT_WANT_NONEMPTY));
     prefs_->Set(spellcheck::prefs::kSpellCheckDictionaries, dictionaries_value);
+
     SpellcheckService* spellcheck =
         SpellcheckServiceFactory::GetForRenderProcessId(renderer_->GetID());
     ASSERT_NE(nullptr, spellcheck);
-    spellcheck->InitForRenderer(renderer_.get());
+
+    // Override |renderer_| requests for the spellcheck::mojom::SpellChecker
+    // interface so we can test the SpellChecker request flow.
+    renderer_->OverrideBinderForTesting(
+        spellcheck::mojom::SpellChecker::Name_,
+        base::Bind(&SpellcheckServiceBrowserTest::Bind,
+                   base::Unretained(this)));
   }
 
   void EnableSpellcheck(bool enable_spellcheck) {
-    ScopedPreferenceChange scope(&renderer_->sink());
     prefs_->SetBoolean(spellcheck::prefs::kEnableSpellcheck,
                        enable_spellcheck);
   }
 
+  void ChangeCustomDictionary() {
+    SpellcheckService* spellcheck =
+        SpellcheckServiceFactory::GetForRenderProcessId(renderer_->GetID());
+    ASSERT_NE(nullptr, spellcheck);
+
+    SpellcheckCustomDictionary::Change change;
+    change.RemoveWord("1");
+    change.AddWord("2");
+    change.AddWord("3");
+
+    spellcheck->OnCustomDictionaryChanged(change);
+  }
+
   void SetSingleLanguageDictionary(const std::string& single_dictionary) {
-    ScopedPreferenceChange scope(&renderer_->sink());
     prefs_->SetString(spellcheck::prefs::kSpellCheckDictionary,
                       single_dictionary);
   }
 
   void SetMultiLingualDictionaries(const std::string& multiple_dictionaries) {
-    ScopedPreferenceChange scope(&renderer_->sink());
     base::ListValue dictionaries_value;
     dictionaries_value.AppendStrings(
         base::SplitString(multiple_dictionaries, ",", base::TRIM_WHITESPACE,
@@ -141,35 +146,87 @@
   }
 
   void SetAcceptLanguages(const std::string& accept_languages) {
-    ScopedPreferenceChange scope(&renderer_->sink());
     prefs_->SetString(prefs::kAcceptLanguages, accept_languages);
   }
 
-  // Returns the boolean parameter sent in the first
-  // SpellCheckMsg_EnableSpellCheck message. For example, if spellcheck service
-  // sent the SpellCheckMsg_EnableSpellCheck(true) message, then this method
-  // returns true.
-  bool GetFirstEnableSpellcheckMessageParam() {
-    const IPC::Message* message = renderer_->sink().GetFirstMessageMatching(
-        SpellCheckMsg_EnableSpellCheck::ID);
-    EXPECT_NE(nullptr, message);
-    if (!message)
-      return false;
+  bool GetEnableSpellcheckState(bool initial_state = false) {
+    spellcheck_enabled_state_ = initial_state;
+    RunTestRunLoop();
+    EXPECT_TRUE(initialize_spellcheck_called_);
+    EXPECT_TRUE(bound_connection_closed_);
+    return spellcheck_enabled_state_;
+  }
 
-    SpellCheckMsg_EnableSpellCheck::Param param;
-    bool ok = SpellCheckMsg_EnableSpellCheck::Read(message, &param);
-    EXPECT_TRUE(ok);
-    if (!ok)
-      return false;
-
-    return std::get<0>(param);
+  bool GetCustomDictionaryChangedState() {
+    RunTestRunLoop();
+    EXPECT_TRUE(bound_connection_closed_);
+    return custom_dictionary_changed_called_;
   }
 
  private:
+  // Spins a RunLoop to deliver the Mojo SpellChecker request flow.
+  void RunTestRunLoop() {
+    bound_connection_closed_ = false;
+    initialize_spellcheck_called_ = false;
+    custom_dictionary_changed_called_ = false;
+
+    base::RunLoop run_loop;
+    quit_ = run_loop.QuitClosure();
+    run_loop.Run();
+  }
+
+  // Binds requests for the SpellChecker interface.
+  void Bind(mojo::ScopedMessagePipeHandle handle) {
+    binding_.Bind(std::move(handle));
+    binding_.set_connection_error_handler(
+        base::Bind(&SpellcheckServiceBrowserTest::BoundConnectionClosed,
+                   base::Unretained(this)));
+  }
+
+  // The requester closes (disconnects) when done.
+  void BoundConnectionClosed() {
+    bound_connection_closed_ = true;
+    binding_.Close();
+    if (quit_)
+      std::move(quit_).Run();
+  }
+
+  // spellcheck::mojom::SpellChecker:
+  void Initialize(
+      std::vector<spellcheck::mojom::SpellCheckBDictLanguagePtr> dictionaries,
+      const std::vector<std::string>& custom_words,
+      bool enable) override {
+    initialize_spellcheck_called_ = true;
+    spellcheck_enabled_state_ = enable;
+  }
+
+  void CustomDictionaryChanged(
+      const std::vector<std::string>& words_added,
+      const std::vector<std::string>& words_removed) override {
+    custom_dictionary_changed_called_ = true;
+    EXPECT_EQ(1u, words_removed.size());
+    EXPECT_EQ(2u, words_added.size());
+  }
+
+  // Mocked RenderProcessHost.
   std::unique_ptr<content::MockRenderProcessHost> renderer_;
 
   // Not owned preferences service.
   PrefService* prefs_;
+
+  // Binding to receive the SpellChecker request flow.
+  mojo::Binding<spellcheck::mojom::SpellChecker> binding_;
+
+  // Quits the RunLoop on SpellChecker request flow completion.
+  base::OnceClosure quit_;
+
+  // Used to verify the SpellChecker request flow.
+  bool bound_connection_closed_;
+  bool custom_dictionary_changed_called_;
+  bool initialize_spellcheck_called_;
+  bool spellcheck_enabled_state_;
+
+  DISALLOW_COPY_AND_ASSIGN(SpellcheckServiceBrowserTest);
 };
 
 // Removing a spellcheck language from accept languages should remove it from
@@ -195,10 +252,10 @@
 // spellcheck' message to the renderer.
 IN_PROC_BROWSER_TEST_F(SpellcheckServiceBrowserTest, StartWithSpellcheck) {
   InitSpellcheck(true, "", "en-US,fr");
-  EXPECT_TRUE(GetFirstEnableSpellcheckMessageParam());
+  EXPECT_TRUE(GetEnableSpellcheckState());
 
   EnableSpellcheck(false);
-  EXPECT_FALSE(GetFirstEnableSpellcheckMessageParam());
+  EXPECT_FALSE(GetEnableSpellcheckState(true));
 }
 
 // Starting with only a single-language spellcheck setting should send the
@@ -207,10 +264,10 @@
 IN_PROC_BROWSER_TEST_F(SpellcheckServiceBrowserTest,
                        StartWithSingularLanguagePreference) {
   InitSpellcheck(true, "en-US", "");
-  EXPECT_TRUE(GetFirstEnableSpellcheckMessageParam());
+  EXPECT_TRUE(GetEnableSpellcheckState());
 
   SetMultiLingualDictionaries("");
-  EXPECT_FALSE(GetFirstEnableSpellcheckMessageParam());
+  EXPECT_FALSE(GetEnableSpellcheckState(true));
 }
 
 // Starting with a multi-language spellcheck setting should send the 'enable
@@ -219,10 +276,10 @@
 IN_PROC_BROWSER_TEST_F(SpellcheckServiceBrowserTest,
                        StartWithMultiLanguagePreference) {
   InitSpellcheck(true, "", "en-US,fr");
-  EXPECT_TRUE(GetFirstEnableSpellcheckMessageParam());
+  EXPECT_TRUE(GetEnableSpellcheckState());
 
   SetMultiLingualDictionaries("");
-  EXPECT_FALSE(GetFirstEnableSpellcheckMessageParam());
+  EXPECT_FALSE(GetEnableSpellcheckState(true));
 }
 
 // Starting with both single-language and multi-language spellcheck settings
@@ -231,10 +288,10 @@
 IN_PROC_BROWSER_TEST_F(SpellcheckServiceBrowserTest,
                        StartWithBothLanguagePreferences) {
   InitSpellcheck(true, "en-US", "en-US,fr");
-  EXPECT_TRUE(GetFirstEnableSpellcheckMessageParam());
+  EXPECT_TRUE(GetEnableSpellcheckState());
 
   SetMultiLingualDictionaries("");
-  EXPECT_FALSE(GetFirstEnableSpellcheckMessageParam());
+  EXPECT_FALSE(GetEnableSpellcheckState(true));
 }
 
 // Starting without spellcheck languages should send the 'disable spellcheck'
@@ -244,10 +301,10 @@
 IN_PROC_BROWSER_TEST_F(SpellcheckServiceBrowserTest,
                        DISABLED_StartWithoutLanguages) {
   InitSpellcheck(true, "", "");
-  EXPECT_FALSE(GetFirstEnableSpellcheckMessageParam());
+  EXPECT_FALSE(GetEnableSpellcheckState(true));
 
   SetMultiLingualDictionaries("en-US");
-  EXPECT_TRUE(GetFirstEnableSpellcheckMessageParam());
+  EXPECT_TRUE(GetEnableSpellcheckState());
 }
 
 // Starting with spellcheck disabled should send the 'disable spellcheck'
@@ -255,10 +312,26 @@
 // 'enable spellcheck' message to the renderer.
 IN_PROC_BROWSER_TEST_F(SpellcheckServiceBrowserTest, StartWithoutSpellcheck) {
   InitSpellcheck(false, "", "en-US,fr");
-  EXPECT_FALSE(GetFirstEnableSpellcheckMessageParam());
+  EXPECT_FALSE(GetEnableSpellcheckState(true));
 
   EnableSpellcheck(true);
-  EXPECT_TRUE(GetFirstEnableSpellcheckMessageParam());
+  EXPECT_TRUE(GetEnableSpellcheckState());
+}
+
+// A custom dictionary state change should send a 'custom dictionary changed'
+// message to the renderer, regardless of the spellcheck enabled state.
+IN_PROC_BROWSER_TEST_F(SpellcheckServiceBrowserTest, CustomDictionaryChanged) {
+  InitSpellcheck(true, "en-US", "");
+  EXPECT_TRUE(GetEnableSpellcheckState());
+
+  ChangeCustomDictionary();
+  EXPECT_TRUE(GetCustomDictionaryChangedState());
+
+  EnableSpellcheck(false);
+  EXPECT_FALSE(GetEnableSpellcheckState(true));
+
+  ChangeCustomDictionary();
+  EXPECT_TRUE(GetCustomDictionaryChangedState());
 }
 
 // Tests that we can delete a corrupted BDICT file used by hunspell. We do not
diff --git a/chrome/browser/ui/startup/bad_flags_prompt.cc b/chrome/browser/ui/startup/bad_flags_prompt.cc
index 52eca33..af36969 100644
--- a/chrome/browser/ui/startup/bad_flags_prompt.cc
+++ b/chrome/browser/ui/startup/bad_flags_prompt.cc
@@ -27,6 +27,7 @@
 #include "content/public/common/content_switches.h"
 #include "extensions/common/switches.h"
 #include "google_apis/gaia/gaia_switches.h"
+#include "media/base/media_switches.h"
 #include "media/media_features.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/resource/resource_bundle.h"
@@ -90,6 +91,10 @@
     // getting the user's permission.
     switches::kUseFakeUIForMediaStream,
 
+    // This flag allows sites to access protected media identifiers without
+    // getting the user's permission.
+    switches::kUnsafelyAllowProtectedMediaIdentifierForDomain,
+
     NULL
   };
 
diff --git a/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc b/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc
index a5f43f9..de7486c 100644
--- a/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc
+++ b/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc
@@ -334,7 +334,7 @@
       success = profile->SetInfo(autofill::AutofillType(field.second.type),
                                  field.first->text(), locale);
     }
-    DCHECK(success || ignore_errors)
+    LOG_IF(ERROR, success || ignore_errors)
         << "Can't setinfo(" << field.second.type << ", " << field.first->text();
     if (!success && !ignore_errors)
       return false;
@@ -356,9 +356,8 @@
             combobox->GetTextForRow(combobox->selected_index()), locale);
       }
     }
-    DCHECK(success || ignore_errors)
+    LOG_IF(ERROR, success || ignore_errors)
         << "Can't setinfo(" << field.second.type << ", "
-
         << combobox->GetTextForRow(combobox->selected_index());
     if (!success && !ignore_errors)
       return false;
diff --git a/chrome/common/url_constants.cc b/chrome/common/url_constants.cc
index b7361f37..f620dc4 100644
--- a/chrome/common/url_constants.cc
+++ b/chrome/common/url_constants.cc
@@ -823,7 +823,7 @@
 
 const char kBluetoothAdapterOffHelpURL[] =
 #if defined(OS_CHROMEOS)
-    "chrome://settings/search#Bluetooth";
+    "chrome://settings/#Bluetooth";
 #else
     "https://support.google.com/chrome?p=bluetooth";
 #endif
diff --git a/chrome/renderer/extensions/app_bindings.cc b/chrome/renderer/extensions/app_bindings.cc
index 2904e0a..cac2d72e 100644
--- a/chrome/renderer/extensions/app_bindings.cc
+++ b/chrome/renderer/extensions/app_bindings.cc
@@ -6,13 +6,7 @@
 
 #include <memory>
 
-#include "base/command_line.h"
-#include "base/macros.h"
-#include "base/strings/string16.h"
-#include "base/strings/string_util.h"
-#include "base/strings/utf_string_conversions.h"
 #include "base/values.h"
-#include "chrome/common/chrome_switches.h"
 #include "chrome/common/extensions/extension_constants.h"
 #include "content/public/child/v8_value_converter.h"
 #include "content/public/renderer/render_frame.h"
@@ -20,9 +14,7 @@
 #include "extensions/common/extension_messages.h"
 #include "extensions/common/extension_set.h"
 #include "extensions/common/manifest.h"
-#include "extensions/renderer/console.h"
 #include "extensions/renderer/dispatcher.h"
-#include "extensions/renderer/extension_helper.h"
 #include "extensions/renderer/renderer_extension_registry.h"
 #include "extensions/renderer/script_context.h"
 #include "third_party/WebKit/public/web/WebDocument.h"
@@ -34,12 +26,6 @@
 
 namespace extensions {
 
-namespace {
-
-const char kInvalidCallbackIdError[] = "Invalid callbackId";
-
-}  // namespace
-
 AppBindings::AppBindings(Dispatcher* dispatcher, ScriptContext* context)
     : ObjectBackedNativeHandler(context),
       dispatcher_(dispatcher) {
@@ -77,7 +63,7 @@
 }
 
 v8::Local<v8::Value> AppBindings::GetDetailsImpl(blink::WebLocalFrame* frame) {
-  v8::Isolate* isolate = frame->MainWorldScriptContext()->GetIsolate();
+  v8::Isolate* isolate = context()->isolate();
   if (frame->GetDocument().GetSecurityOrigin().IsUnique())
     return v8::Null(isolate);
 
@@ -92,22 +78,15 @@
       extension->manifest()->value()->DeepCopy());
   manifest_copy->SetString("id", extension->id());
   std::unique_ptr<V8ValueConverter> converter(V8ValueConverter::create());
-  return converter->ToV8Value(manifest_copy.get(),
-                              frame->MainWorldScriptContext());
+  return converter->ToV8Value(manifest_copy.get(), context()->v8_context());
 }
 
 void AppBindings::GetInstallState(
     const v8::FunctionCallbackInfo<v8::Value>& args) {
   // Get the callbackId.
-  int callback_id = 0;
-  if (args.Length() == 1) {
-    if (!args[0]->IsInt32()) {
-      context()->isolate()->ThrowException(v8::String::NewFromUtf8(
-          context()->isolate(), kInvalidCallbackIdError));
-      return;
-    }
-    callback_id = args[0]->Int32Value();
-  }
+  CHECK_EQ(1, args.Length());
+  CHECK(args[0]->IsInt32());
+  int callback_id = args[0]->Int32Value();
 
   content::RenderFrame* render_frame = context()->GetRenderFrame();
   CHECK(render_frame);
@@ -119,16 +98,15 @@
 
 void AppBindings::GetRunningState(
     const v8::FunctionCallbackInfo<v8::Value>& args) {
+  url::Origin top_origin = context()->web_frame()->Top()->GetSecurityOrigin();
+
   // To distinguish between ready_to_run and cannot_run states, we need the app
   // from the top frame.
-  blink::WebSecurityOrigin top_frame_security_origin =
-      context()->web_frame()->Top()->GetSecurityOrigin();
   const RendererExtensionRegistry* extensions =
       RendererExtensionRegistry::Get();
 
   // The app associated with the top level frame.
-  const Extension* top_app = extensions->GetHostedAppByURL(
-      GURL(top_frame_security_origin.ToString().Utf8()));
+  const Extension* top_app = extensions->GetHostedAppByURL(top_origin.GetURL());
 
   // The app associated with this frame.
   const Extension* this_app = extensions->GetHostedAppByURL(
diff --git a/chrome/renderer/extensions/app_bindings.h b/chrome/renderer/extensions/app_bindings.h
index 63b5996..9f1fead 100644
--- a/chrome/renderer/extensions/app_bindings.h
+++ b/chrome/renderer/extensions/app_bindings.h
@@ -11,11 +11,13 @@
 #ifndef CHROME_RENDERER_EXTENSIONS_APP_BINDINGS_H_
 #define CHROME_RENDERER_EXTENSIONS_APP_BINDINGS_H_
 
-#include "base/compiler_specific.h"
 #include "base/macros.h"
 #include "chrome/renderer/extensions/chrome_v8_extension_handler.h"
 #include "extensions/renderer/object_backed_native_handler.h"
-#include "third_party/WebKit/public/web/WebFrame.h"
+
+namespace blink {
+class WebLocalFrame;
+}
 
 namespace extensions {
 class Dispatcher;
diff --git a/chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc b/chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc
index 61b51afbd..c2c6ed2 100644
--- a/chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc
+++ b/chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc
@@ -42,6 +42,7 @@
 #include "extensions/renderer/script_context.h"
 #include "media/media_features.h"
 #include "third_party/WebKit/public/platform/WebString.h"
+#include "third_party/WebKit/public/platform/WebURL.h"
 #include "third_party/WebKit/public/web/WebSecurityPolicy.h"
 
 #if BUILDFLAG(ENABLE_WEBRTC)
diff --git a/chrome/renderer/resources/extensions/app_custom_bindings.js b/chrome/renderer/resources/extensions/app_custom_bindings.js
index 4d58054b..1ef181ca 100644
--- a/chrome/renderer/resources/extensions/app_custom_bindings.js
+++ b/chrome/renderer/resources/extensions/app_custom_bindings.js
@@ -35,13 +35,21 @@
 //
 // So, define it manually, and let the getIsInstalled function act as its
 // documentation.
-app.__defineGetter__('isInstalled', wrapForLogging(appNatives.GetIsInstalled));
+var isInstalled = wrapForLogging(appNatives.GetIsInstalled);
+$Object.defineProperty(
+    app, 'isInstalled',
+    {
+      __proto__: null,
+      configurable: true,
+      enumerable: true,
+      get: function() { return isInstalled(); },
+    });
 
 // Called by app_bindings.cc.
 function onInstallStateResponse(state, callbackId) {
   var callback = callbacks[callbackId];
   delete callbacks[callbackId];
-  if (typeof(callback) == 'function') {
+  if (typeof callback == 'function') {
     try {
       callback(state);
     } catch (e) {
@@ -52,16 +60,24 @@
 }
 
 // TODO(kalman): move this stuff to its own custom bindings.
-var callbacks = {};
+var callbacks = { __proto__: null };
 var nextCallbackId = 1;
 
-app.installState = function getInstallState(callback) {
+function getInstallState(callback) {
   var callbackId = nextCallbackId++;
   callbacks[callbackId] = callback;
   appNatives.GetInstallState(callbackId);
-};
-if (extensionId)
-  app.installState = wrapForLogging(app.installState);
+}
+
+$Object.defineProperty(
+    app, 'installState',
+    {
+      __proto__: null,
+      configurable: true,
+      enumerable: true,
+      value: wrapForLogging(getInstallState),
+      writable: true,
+    });
 
 exports.$set('binding', app);
 exports.$set('onInstallStateResponse', onInstallStateResponse);
diff --git a/chrome/service/service_utility_process_host.cc b/chrome/service/service_utility_process_host.cc
index d440ccf..77af2c7 100644
--- a/chrome/service/service_utility_process_host.cc
+++ b/chrome/service/service_utility_process_host.cc
@@ -277,7 +277,8 @@
   if (success) {
     broker_client_invitation_.Send(
         process_.Handle(),
-        mojo::edk::ConnectionParams(std::move(parent_handle)));
+        mojo::edk::ConnectionParams(mojo::edk::TransportProtocol::kLegacy,
+                                    std::move(parent_handle)));
   }
 
   return success;
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index fe4b390..d4c30117 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -4102,7 +4102,10 @@
       "../browser/ui/input_method/input_method_engine_unittest.cc",
     ]
   }
-  if (!is_android && !is_chromeos) {
+
+  if (is_android || is_chromeos) {
+    sources += [ "../browser/media/protected_media_identifier_permission_context_unittest.cc" ]
+  } else {
     sources += [
       "../browser/net/disk_cache_dir_policy_handler_unittest.cc",
       "//chrome/browser/profiles/profile_list_desktop_unittest.cc",
diff --git a/chrome/test/android/javatests/src/org/chromium/chrome/test/util/RenderUtils.java b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/RenderUtils.java
index 8543851..221f03c7 100644
--- a/chrome/test/android/javatests/src/org/chromium/chrome/test/util/RenderUtils.java
+++ b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/RenderUtils.java
@@ -7,6 +7,7 @@
 import android.app.Activity;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
+import android.graphics.Color;
 import android.graphics.Point;
 import android.os.Build;
 import android.view.View;
@@ -28,8 +29,12 @@
 public class RenderUtils {
     private static final String TAG = "RenderUtils";
 
+    private static final String DIFF_FOLDER_RELATIVE = "/diffs";
+
     private static final String FAILURE_FOLDER_RELATIVE = "/failures";
 
+    private static final String GOLDEN_FOLDER_RELATIVE = "/goldens";
+
     /**
      * This is a list of devices that we maintain golden images for. If render tests are being run
      * on a device in this list, golden images should exist and their absence is a test failure.
@@ -45,6 +50,11 @@
      */
     private static final boolean REPORT_ONLY_DO_NOT_FAIL = true;
 
+    /**
+     * How many pixels can be different in an image before counting the images as different.
+     */
+    private static final int PIXEL_DIFF_THRESHOLD = 0;
+
     private enum ComparisonResult { MATCH, MISMATCH, GOLDEN_NOT_FOUND }
 
     /**
@@ -72,11 +82,19 @@
         private final Activity mActivity;
         private final String mGoldenFolder;
         private final String mTestClass;
+        private String mOutputDirectory;
 
         public ViewRenderer(Activity activity, String goldenFolder, String testClass) {
             mActivity = activity;
             mGoldenFolder = goldenFolder;
             mTestClass = testClass;
+
+            // Render test will output results to subdirectory of |goldenFolder| unless
+            // --render-test-output-dir is passed.
+            mOutputDirectory = CommandLine.getInstance().getSwitchValue("render-test-output-dir");
+            if (mOutputDirectory == null) {
+                mOutputDirectory = UrlUtils.getIsolatedTestFilePath(mGoldenFolder);
+            }
         }
 
         /**
@@ -93,20 +111,34 @@
          */
         public void renderAndCompare(final View view, String id) throws IOException {
             // Compare the image against the Golden.
-            Bitmap bitmap = ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Bitmap>() {
-                @Override
-                public Bitmap call() throws Exception {
-                    return UiUtils.generateScaledScreenshot(view, 0, Bitmap.Config.ARGB_8888);
-                }
-            });
+            Bitmap testBitmap =
+                    ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Bitmap>() {
+                        @Override
+                        public Bitmap call() throws Exception {
+                            return UiUtils.generateScaledScreenshot(
+                                    view, 0, Bitmap.Config.ARGB_8888);
+                        }
+                    });
 
             String imagename = imageName(mActivity, mTestClass, id);
-            File goldenFile = createPath(mGoldenFolder, imagename);
-            ComparisonResult result = compareBmpToGolden(bitmap, goldenFile);
 
-            if (REPORT_ONLY_DO_NOT_FAIL && !isGenerateMode()) {
-                Log.d(TAG, "Image comparison for %s: %s", id, result.name());
-                return;
+            File goldenFile =
+                    createPath(UrlUtils.getIsolatedTestFilePath(mGoldenFolder), imagename);
+            BitmapFactory.Options options = new BitmapFactory.Options();
+            options.inPreferredConfig = testBitmap.getConfig();
+            Bitmap goldenBitmap = BitmapFactory.decodeFile(goldenFile.getAbsolutePath(), options);
+
+            Bitmap diffBitmap = null;
+            ComparisonResult result = null;
+
+            if (goldenBitmap == null) {
+                result = ComparisonResult.GOLDEN_NOT_FOUND;
+            } else {
+                diffBitmap = Bitmap.createBitmap(
+                        Math.max(testBitmap.getWidth(), goldenBitmap.getWidth()),
+                        Math.max(testBitmap.getHeight(), goldenBitmap.getHeight()),
+                        testBitmap.getConfig());
+                result = compareBitmapToGolden(testBitmap, goldenBitmap, diffBitmap);
             }
 
             if (result == ComparisonResult.MATCH) {
@@ -116,12 +148,28 @@
                 return;
             }
 
-            // Save the rendered View.
-            File failureFile = createPath(mGoldenFolder + FAILURE_FOLDER_RELATIVE, imagename);
-            saveBitmap(bitmap, failureFile);
+            File failureOutputFile =
+                    createPath(mOutputDirectory + FAILURE_FOLDER_RELATIVE, imagename);
+            saveBitmap(testBitmap, failureOutputFile);
+
+            if (result != ComparisonResult.GOLDEN_NOT_FOUND) {
+                File goldenOutputFile =
+                        createPath(mOutputDirectory + GOLDEN_FOLDER_RELATIVE, imagename);
+                saveBitmap(goldenBitmap, goldenOutputFile);
+
+                File diffOutputFile =
+                        createPath(mOutputDirectory + DIFF_FOLDER_RELATIVE, imagename);
+                saveBitmap(diffBitmap, diffOutputFile);
+            }
 
             if (isGenerateMode()) {
-                Log.i(TAG, "%s - generated image saved to %s.", id, failureFile.getAbsolutePath());
+                Log.i(TAG, "%s - generated image saved to %s.", id,
+                        failureOutputFile.getAbsolutePath());
+                return;
+            }
+
+            if (REPORT_ONLY_DO_NOT_FAIL) {
+                Log.d(TAG, "Image comparison for %s: %s", id, result.name());
                 return;
             }
 
@@ -137,8 +185,7 @@
             } else if (result == ComparisonResult.MISMATCH) {
                 throw new ImageMismatchException(
                         String.format("Image comparison failed on %s. Failure image saved to %s.",
-                                id, failureFile.getAbsolutePath()));
-
+                                id, failureOutputFile.getAbsolutePath()));
             }
         }
     }
@@ -163,6 +210,9 @@
     /**
      * Creates an image name combining the image description with details about the device
      * (eg model, current orientation).
+     *
+     * This function must be kept in sync with |RE_RENDER_IMAGE_NAME| from
+     * src/build/android/pylib/local/device/local_device_instrumentation_test_run.py.
      */
     private static String imageName(Activity activity, String testClass, String desc) {
         Point outSize = new Point();
@@ -185,14 +235,13 @@
     }
 
     /**
-     * Convenience method to create a File pointing to |filename| in |folder| in the external
-     * storage directory.
+     * Convenience method to create a File pointing to |filename| in |folder|.
      * @throws IOException
      */
     private static File createPath(String folder, String filename) throws IOException {
-        File path = new File(UrlUtils.getIsolatedTestFilePath(folder));
+        File path = new File(folder);
         if (!path.exists()) {
-            if (!path.mkdir()) {
+            if (!path.mkdirs()) {
                 throw new IOException("Could not create " + path.getAbsolutePath());
             }
         }
@@ -202,12 +251,111 @@
     /**
      * Returns whether the given |bitmap| is equal to the one stored in |file|.
      */
-    private static ComparisonResult compareBmpToGolden(Bitmap bitmap, File file) {
-        BitmapFactory.Options options = new BitmapFactory.Options();
-        options.inPreferredConfig = bitmap.getConfig();
-        Bitmap golden = BitmapFactory.decodeFile(file.getAbsolutePath(), options);
+    private static ComparisonResult compareBitmapToGolden(Bitmap test, Bitmap golden, Bitmap diff) {
+        int maxWidth = Math.max(test.getWidth(), golden.getWidth());
+        int maxHeight = Math.max(test.getHeight(), golden.getHeight());
+        int minWidth = Math.min(test.getWidth(), golden.getWidth());
+        int minHeight = Math.min(test.getHeight(), golden.getHeight());
 
-        if (golden == null) return ComparisonResult.GOLDEN_NOT_FOUND;
-        return bitmap.sameAs(golden) ? ComparisonResult.MATCH : ComparisonResult.MISMATCH;
+        int diffPixelsCount = comparePixels(test, golden, diff, 0, 0, minWidth, 0, minHeight)
+                + compareSizes(diff, minWidth, maxWidth, minHeight, maxHeight);
+
+        if (diffPixelsCount > PIXEL_DIFF_THRESHOLD) {
+            return ComparisonResult.MISMATCH;
+        }
+        return ComparisonResult.MATCH;
+    }
+
+    /**
+     * Compares two bitmaps pixel-wise.
+     *
+     * @param testImage Bitmap of test image.
+     *
+     * @param goldenImage Bitmap of golden image.
+     *
+     * @param diffImage This is an output argument. Function will set pixels in the |diffImage| to
+     * either transparent or red depending on whether that pixel differed in the golden and test
+     * bitmaps. diffImage should have its width and height be the max width and height of the
+     * golden and test bitmaps.
+     *
+     * @param diffThreshold Threshold for when to consider two color values as different. These
+     * values are 8 bit (256) so this threshold value should be in range 0-256.
+     *
+     * @param startWidth Start x-coord to start diffing the Bitmaps.
+     *
+     * @param endWidth End x-coord to start diffing the Bitmaps.
+     *
+     * @param startHeight Start y-coord to start diffing the Bitmaps.
+     *
+     * @param endHeight End x-coord to start diffing the Bitmaps.
+     *
+     * @return Returns number of pixels that differ between |goldenImage| and |testImage|
+     */
+    private static int comparePixels(Bitmap testImage, Bitmap goldenImage, Bitmap diffImage,
+            int diffThreshold, int startWidth, int endWidth, int startHeight, int endHeight) {
+        int diffPixels = 0;
+
+        for (int x = startWidth; x < endWidth; x++) {
+            for (int y = startHeight; y < endHeight; y++) {
+                int goldenImageColor = goldenImage.getPixel(x, y);
+                int testImageColor = testImage.getPixel(x, y);
+
+                int redDiff = Math.abs(Color.red(goldenImageColor) - Color.red(testImageColor));
+                int blueDiff =
+                        Math.abs(Color.green(goldenImageColor) - Color.green(testImageColor));
+                int greenDiff = Math.abs(Color.blue(goldenImageColor) - Color.blue(testImageColor));
+                int alphaDiff =
+                        Math.abs(Color.alpha(goldenImageColor) - Color.alpha(testImageColor));
+
+                if (redDiff > diffThreshold || blueDiff > diffThreshold || greenDiff > diffThreshold
+                        || alphaDiff > diffThreshold) {
+                    diffPixels++;
+                    diffImage.setPixel(x, y, Color.RED);
+                } else {
+                    diffImage.setPixel(x, y, Color.TRANSPARENT);
+                }
+            }
+        }
+        return diffPixels;
+    }
+
+    /**
+     * Compares two bitmaps size.
+     *
+     * @param diffImage This is an output argument. Function will set pixels in the |diffImage| to
+     * either transparent or red depending on whether that pixel coordinate occurs in the
+     * dimensions of the golden and not the test bitmap or vice-versa.
+     *
+     * @param minWidth Min width of golden and test bitmaps.
+     *
+     * @param maxWidth Max width of golden and test bitmaps.
+     *
+     * @param minHeight Min height of golden and test bitmaps.
+     *
+     * @param maxHeight Max height of golden and test bitmaps.
+     *
+     * @return Returns number of pixels that differ between |goldenImage| and |testImage| due to
+     * their size.
+     */
+    private static int compareSizes(
+            Bitmap diffImage, int minWidth, int maxWidth, int minHeight, int maxHeight) {
+        int diffPixels = 0;
+        if (maxWidth > minWidth) {
+            for (int x = minWidth; x < maxWidth; x++) {
+                for (int y = 0; y < maxHeight; y++) {
+                    diffImage.setPixel(x, y, Color.RED);
+                }
+            }
+            diffPixels += (maxWidth - minWidth) * maxHeight;
+        }
+        if (maxHeight > minHeight) {
+            for (int x = 0; x < maxWidth; x++) {
+                for (int y = minHeight; y < maxHeight; y++) {
+                    diffImage.setPixel(x, y, Color.RED);
+                }
+            }
+            diffPixels += (maxHeight - minHeight) * minWidth;
+        }
+        return diffPixels;
     }
 }
diff --git a/chrome/test/base/mojo_test_connector.cc b/chrome/test/base/mojo_test_connector.cc
index fc2d968..ebfa5087 100644
--- a/chrome/test/base/mojo_test_connector.cc
+++ b/chrome/test/base/mojo_test_connector.cc
@@ -86,7 +86,8 @@
     platform_channel_->ChildProcessLaunched();
     broker_client_invitation_.Send(
         handle,
-        mojo::edk::ConnectionParams(platform_channel_->PassServerHandle()));
+        mojo::edk::ConnectionParams(mojo::edk::TransportProtocol::kLegacy,
+                                    platform_channel_->PassServerHandle()));
 
     main_task_runner_->PostTask(FROM_HERE,
                                 base::Bind(&MojoTestState::SetupService,
diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py
index 8919513..18da3110 100755
--- a/chrome/test/chromedriver/test/run_py_tests.py
+++ b/chrome/test/chromedriver/test/run_py_tests.py
@@ -73,8 +73,6 @@
 
 _VERSION_SPECIFIC_FILTER = {}
 _VERSION_SPECIFIC_FILTER['HEAD'] = [
-    # https://bugs.chromium.org/p/chromedriver/issues/detail?id=1803
-    'ChromeDriverTest.testAlertHandlingOnPageUnload',
 ]
 _VERSION_SPECIFIC_FILTER['58'] = [
     # https://bugs.chromium.org/p/chromedriver/issues/detail?id=1673
@@ -173,8 +171,6 @@
         'ChromeDriverTest.testHoverOverElement',
         # https://bugs.chromium.org/p/chromedriver/issues/detail?id=1478
         'ChromeDriverTest.testShouldHandleNewWindowLoadingProperly',
-        # https://bugs.chromium.org/p/chromedriver/issues/detail?id=1803
-        'ChromeDriverTest.testAlertHandlingOnPageUnload',
     ]
 )
 _ANDROID_NEGATIVE_FILTER['chromedriver_webview_shell'] = (
@@ -681,6 +677,7 @@
   def testAlertHandlingOnPageUnload(self):
     self._driver.Load(self.GetHttpUrlForFile('/chromedriver/empty.html'))
     self._driver.ExecuteScript('window.onbeforeunload=function(){return true}')
+    self._driver.FindElement('tag name', 'body').Click()
     self._driver.GoBack()
     self.assertTrue(self._driver.IsAlertOpen())
     self._driver.HandleAlert(True)
diff --git a/chrome/test/data/extensions/signin_screen_test_app/app/background.js b/chrome/test/data/extensions/signin_screen_test_app/app/background.js
index bab4458..6683e241 100644
--- a/chrome/test/data/extensions/signin_screen_test_app/app/background.js
+++ b/chrome/test/data/extensions/signin_screen_test_app/app/background.js
@@ -2,4 +2,358 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-console.log('The sign-in screen test app loaded');
+// The background script of the test app.
+//
+// The app exposes a certificate to Chrome via chrome.certificateProvider API.
+// This allows to test that the app and the API work by initiating an SSL
+// connection that requests the client certificate. The app also tests
+// displaying of the PIN dialog. Note that the app does NOT implement the real
+// signing operation, therefore it's expected that the SSL connections will fail
+// to establish in the end.
+//
+// Note that the debug output from this app is printed to the JavaScript
+// console, which on the login screen may only be accessed via remote debugging.
+// For instructions, please refer to:
+// * https://chromedevtools.github.io/devtools-protocol/#remote
+// * https://www.chromium.org/developers/how-tos/run-chromium-with-flags#TOC-Setting-Flags-for-Chrome-OS
+
+
+// Raw contents of the DER-encoded X.509 certificate.
+// Generated using the following command (assuming that the certificate was
+// bundled in the PKCS #12 archive <path_to_pkcs12_file>):
+//   openssl pkcs12 -in <path_to_pkcs12_file> -nodes | \
+//     openssl x509 -outform der | xxd -i
+// Current certificate expires on Dec 15, 2017.
+// In case an update is required, please reach out to the managed-devices@
+// mailing list.
+var TEST_CERTIFICATE =
+    (new Uint8Array([
+      0x30, 0x82, 0x06, 0x78, 0x30, 0x82, 0x05, 0x60, 0xa0, 0x03, 0x02, 0x01,
+      0x02, 0x02, 0x0a, 0x17, 0xa5, 0x51, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x8a, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
+      0x01, 0x0a, 0x30, 0x00, 0x30, 0x64, 0x31, 0x13, 0x30, 0x11, 0x06, 0x0a,
+      0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x03,
+      0x6e, 0x65, 0x74, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x0a, 0x09, 0x92, 0x26,
+      0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x0b, 0x74, 0x6f, 0x74,
+      0x68, 0x65, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x31, 0x12, 0x30, 0x10,
+      0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19,
+      0x16, 0x02, 0x61, 0x64, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04,
+      0x03, 0x13, 0x13, 0x54, 0x6f, 0x74, 0x68, 0x65, 0x63, 0x6c, 0x6f, 0x75,
+      0x64, 0x73, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e,
+      0x17, 0x0d, 0x31, 0x36, 0x31, 0x32, 0x31, 0x35, 0x31, 0x34, 0x34, 0x34,
+      0x31, 0x39, 0x5a, 0x17, 0x0d, 0x31, 0x37, 0x31, 0x32, 0x31, 0x35, 0x31,
+      0x34, 0x34, 0x34, 0x31, 0x39, 0x5a, 0x30, 0x81, 0x9e, 0x31, 0x13, 0x30,
+      0x11, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01,
+      0x19, 0x16, 0x03, 0x6e, 0x65, 0x74, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x0a,
+      0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x0b,
+      0x74, 0x6f, 0x74, 0x68, 0x65, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x31,
+      0x12, 0x30, 0x10, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c,
+      0x64, 0x01, 0x19, 0x16, 0x02, 0x61, 0x64, 0x31, 0x0e, 0x30, 0x0c, 0x06,
+      0x03, 0x55, 0x04, 0x03, 0x13, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x31,
+      0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0a, 0x61, 0x64,
+      0x66, 0x73, 0x20, 0x74, 0x65, 0x73, 0x74, 0x31, 0x31, 0x31, 0x30, 0x2f,
+      0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16,
+      0x22, 0x61, 0x64, 0x66, 0x73, 0x2d, 0x74, 0x65, 0x73, 0x74, 0x31, 0x40,
+      0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x6e, 0x6f, 0x6d, 0x61,
+      0x64, 0x69, 0x63, 0x66, 0x65, 0x65, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30,
+      0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
+      0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30,
+      0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xdf, 0xf4, 0x9a, 0x94,
+      0xad, 0x0f, 0xf4, 0xaf, 0xd6, 0x0e, 0xc5, 0x15, 0xf9, 0x20, 0x73, 0xa3,
+      0x73, 0x04, 0xb7, 0x6a, 0x32, 0xec, 0xa6, 0x1a, 0x91, 0x1f, 0x80, 0x1f,
+      0xc6, 0xfa, 0x33, 0x17, 0x1d, 0x9b, 0xb3, 0xd5, 0xe1, 0x2f, 0xcf, 0x1e,
+      0xfb, 0xd7, 0x43, 0xe9, 0xe8, 0x5f, 0x8e, 0x9d, 0x9e, 0x83, 0x9b, 0x95,
+      0x98, 0x5d, 0x21, 0xd2, 0xc9, 0x8a, 0x45, 0x5f, 0x0f, 0x98, 0x84, 0xfa,
+      0xe8, 0x0a, 0x7d, 0x9c, 0xab, 0xe6, 0xbe, 0x03, 0x18, 0x05, 0x2a, 0x46,
+      0xf0, 0x03, 0x2b, 0xf1, 0x36, 0xf6, 0x1f, 0x0a, 0xac, 0x04, 0xd6, 0x22,
+      0x0a, 0xce, 0x2c, 0x3f, 0x2f, 0x25, 0xd5, 0xad, 0x84, 0xf4, 0x6b, 0xd9,
+      0xbe, 0x77, 0x78, 0xcb, 0xa3, 0xe4, 0x8c, 0x2c, 0x8d, 0xdc, 0x83, 0x61,
+      0x18, 0x00, 0x0f, 0x2e, 0x2c, 0x57, 0x6b, 0xfa, 0xfb, 0x1d, 0x19, 0xf7,
+      0x8b, 0x2f, 0xdc, 0x3c, 0xb5, 0x69, 0x44, 0xfa, 0x81, 0x7d, 0x3d, 0x26,
+      0x84, 0xad, 0xe5, 0xe6, 0xce, 0x0f, 0x1b, 0x13, 0xf6, 0x60, 0xd4, 0x5d,
+      0x3f, 0xce, 0x09, 0x2d, 0x2f, 0x71, 0xda, 0x3f, 0x88, 0x51, 0xe1, 0x75,
+      0xcd, 0xf0, 0xbf, 0x84, 0xa8, 0xc5, 0xb5, 0x4e, 0x26, 0x59, 0x92, 0x0a,
+      0x3f, 0x5f, 0x5f, 0xcd, 0xa8, 0x67, 0x4b, 0xed, 0x22, 0xa0, 0x0d, 0x41,
+      0x31, 0x0a, 0x73, 0x10, 0x42, 0xa0, 0x08, 0xe1, 0x94, 0x1b, 0xd5, 0x3e,
+      0x97, 0x2b, 0x53, 0x9c, 0x65, 0xd3, 0xc8, 0x1d, 0x56, 0x0e, 0x0b, 0x4d,
+      0x32, 0x6d, 0x54, 0xfc, 0x5a, 0xa8, 0x3b, 0x61, 0xc1, 0xe2, 0xf7, 0x79,
+      0x16, 0xec, 0x9e, 0x81, 0x58, 0xf6, 0x9b, 0x13, 0xd9, 0x2f, 0x9b, 0x3c,
+      0x5c, 0x47, 0x87, 0xff, 0x5b, 0x8d, 0xc0, 0xbe, 0x34, 0xaf, 0xd3, 0x23,
+      0xeb, 0x67, 0x5a, 0xa1, 0xff, 0x9a, 0xb2, 0xf3, 0xea, 0x74, 0xbc, 0x89,
+      0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x02, 0xef, 0x30, 0x82, 0x02,
+      0xeb, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
+      0xbe, 0x17, 0x87, 0x1f, 0xa6, 0x79, 0xe3, 0xa6, 0x50, 0x93, 0x97, 0xa8,
+      0x11, 0x60, 0x09, 0x45, 0x85, 0xd4, 0x87, 0xad, 0x30, 0x1f, 0x06, 0x03,
+      0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xd0, 0xd1, 0x3f,
+      0x7c, 0xcd, 0xc8, 0xe5, 0xff, 0x3f, 0x17, 0xb2, 0xfb, 0xc7, 0x51, 0xf1,
+      0xbd, 0x99, 0x5d, 0x27, 0xc0, 0x30, 0x82, 0x01, 0x72, 0x06, 0x03, 0x55,
+      0x1d, 0x1f, 0x04, 0x82, 0x01, 0x69, 0x30, 0x82, 0x01, 0x65, 0x30, 0x82,
+      0x01, 0x61, 0xa0, 0x82, 0x01, 0x5d, 0xa0, 0x82, 0x01, 0x59, 0x86, 0x81,
+      0xd1, 0x6c, 0x64, 0x61, 0x70, 0x3a, 0x2f, 0x2f, 0x2f, 0x43, 0x4e, 0x3d,
+      0x54, 0x6f, 0x74, 0x68, 0x65, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x25,
+      0x32, 0x30, 0x52, 0x6f, 0x6f, 0x74, 0x25, 0x32, 0x30, 0x43, 0x41, 0x2c,
+      0x43, 0x4e, 0x3d, 0x77, 0x69, 0x6e, 0x2d, 0x70, 0x6b, 0x69, 0x2d, 0x73,
+      0x65, 0x72, 0x76, 0x65, 0x72, 0x30, 0x31, 0x2c, 0x43, 0x4e, 0x3d, 0x43,
+      0x44, 0x50, 0x2c, 0x43, 0x4e, 0x3d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63,
+      0x25, 0x32, 0x30, 0x4b, 0x65, 0x79, 0x25, 0x32, 0x30, 0x53, 0x65, 0x72,
+      0x76, 0x69, 0x63, 0x65, 0x73, 0x2c, 0x43, 0x4e, 0x3d, 0x53, 0x65, 0x72,
+      0x76, 0x69, 0x63, 0x65, 0x73, 0x2c, 0x43, 0x4e, 0x3d, 0x43, 0x6f, 0x6e,
+      0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x44,
+      0x43, 0x3d, 0x61, 0x64, 0x2c, 0x44, 0x43, 0x3d, 0x74, 0x6f, 0x74, 0x68,
+      0x65, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x2c, 0x44, 0x43, 0x3d, 0x6e,
+      0x65, 0x74, 0x3f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
+      0x74, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+      0x4c, 0x69, 0x73, 0x74, 0x3f, 0x62, 0x61, 0x73, 0x65, 0x3f, 0x6f, 0x62,
+      0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x63, 0x52,
+      0x4c, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f,
+      0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x86, 0x41, 0x68, 0x74, 0x74, 0x70,
+      0x3a, 0x2f, 0x2f, 0x70, 0x6b, 0x69, 0x2e, 0x74, 0x6f, 0x74, 0x68, 0x65,
+      0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x43,
+      0x65, 0x72, 0x74, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x2f, 0x54, 0x6f,
+      0x74, 0x68, 0x65, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x25, 0x32, 0x30,
+      0x52, 0x6f, 0x6f, 0x74, 0x25, 0x32, 0x30, 0x43, 0x41, 0x2e, 0x63, 0x72,
+      0x6c, 0x86, 0x40, 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x2f, 0x2f, 0x5c, 0x5c,
+      0x77, 0x69, 0x6e, 0x2d, 0x70, 0x6b, 0x69, 0x2d, 0x73, 0x65, 0x72, 0x76,
+      0x65, 0x72, 0x30, 0x31, 0x5c, 0x43, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x72,
+      0x6f, 0x6c, 0x6c, 0x5c, 0x54, 0x6f, 0x74, 0x68, 0x65, 0x63, 0x6c, 0x6f,
+      0x75, 0x64, 0x73, 0x25, 0x32, 0x30, 0x52, 0x6f, 0x6f, 0x74, 0x25, 0x32,
+      0x30, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, 0x06, 0x08, 0x2b,
+      0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x2f, 0x30, 0x2d, 0x30,
+      0x2b, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86,
+      0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x70, 0x6b, 0x69, 0x2e,
+      0x74, 0x6f, 0x74, 0x68, 0x65, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x2e,
+      0x6e, 0x65, 0x74, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x30, 0x17, 0x06, 0x09,
+      0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x14, 0x02, 0x04, 0x0a, 0x1e,
+      0x08, 0x00, 0x55, 0x00, 0x73, 0x00, 0x65, 0x00, 0x72, 0x30, 0x0e, 0x06,
+      0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x05,
+      0xa0, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x22, 0x30, 0x20,
+      0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x0a, 0x03, 0x04,
+      0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x04, 0x06, 0x08,
+      0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, 0x5c, 0x06, 0x03,
+      0x55, 0x1d, 0x11, 0x04, 0x55, 0x30, 0x53, 0xa0, 0x2d, 0x06, 0x0a, 0x2b,
+      0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x14, 0x02, 0x03, 0xa0, 0x1f, 0x0c,
+      0x1d, 0x61, 0x64, 0x66, 0x73, 0x2d, 0x74, 0x65, 0x73, 0x74, 0x31, 0x40,
+      0x61, 0x64, 0x2e, 0x74, 0x6f, 0x74, 0x68, 0x65, 0x63, 0x6c, 0x6f, 0x75,
+      0x64, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x81, 0x22, 0x61, 0x64, 0x66, 0x73,
+      0x2d, 0x74, 0x65, 0x73, 0x74, 0x31, 0x40, 0x64, 0x65, 0x76, 0x69, 0x63,
+      0x65, 0x73, 0x2e, 0x6e, 0x6f, 0x6d, 0x61, 0x64, 0x69, 0x63, 0x66, 0x65,
+      0x65, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x44, 0x06, 0x09, 0x2a, 0x86,
+      0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x0f, 0x04, 0x37, 0x30, 0x35, 0x30,
+      0x0e, 0x06, 0x08, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x03, 0x02, 0x02,
+      0x02, 0x00, 0x80, 0x30, 0x0e, 0x06, 0x08, 0x2a, 0x86, 0x48, 0x86, 0xf7,
+      0x0d, 0x03, 0x04, 0x02, 0x02, 0x00, 0x80, 0x30, 0x07, 0x06, 0x05, 0x2b,
+      0x0e, 0x03, 0x02, 0x07, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0x86,
+      0xf7, 0x0d, 0x03, 0x07, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
+      0xf7, 0x0d, 0x01, 0x01, 0x0a, 0x30, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00,
+      0x2d, 0xb1, 0x92, 0xad, 0xc5, 0x3d, 0x4d, 0x41, 0x51, 0x7d, 0x38, 0xa0,
+      0x7a, 0x9b, 0x67, 0x51, 0x7e, 0x5b, 0x8f, 0xd6, 0x2a, 0x6f, 0xb5, 0x67,
+      0x58, 0xeb, 0x86, 0x1f, 0xf6, 0x9e, 0xfa, 0x06, 0x12, 0x5d, 0x3d, 0xce,
+      0x61, 0xba, 0x8f, 0x23, 0x89, 0xba, 0xd4, 0x2a, 0x50, 0xee, 0x1d, 0xda,
+      0x23, 0x7f, 0x19, 0x30, 0x10, 0xf6, 0xa4, 0xea, 0xbf, 0x0d, 0xbb, 0x4d,
+      0x3d, 0x4b, 0x1c, 0x03, 0xd5, 0x85, 0xbc, 0x42, 0x69, 0x59, 0xed, 0xb2,
+      0x0c, 0x68, 0x39, 0x7e, 0x8a, 0x00, 0xd0, 0x46, 0xe3, 0x59, 0xa4, 0xf5,
+      0x99, 0x43, 0xb1, 0xdf, 0x36, 0xfa, 0x18, 0x3c, 0xef, 0xc2, 0x51, 0x96,
+      0x55, 0x35, 0x79, 0xb6, 0x01, 0x1f, 0x54, 0xd1, 0xf0, 0xc5, 0x36, 0xe7,
+      0x11, 0x6f, 0xe7, 0x33, 0x5c, 0x87, 0xb5, 0x23, 0x9b, 0xcd, 0x5c, 0x97,
+      0x3e, 0x8c, 0x64, 0x43, 0xb3, 0xe0, 0x73, 0x1c, 0x89, 0xd5, 0x83, 0x60,
+      0x8c, 0xa7, 0xc7, 0x57, 0x8f, 0xc1, 0x62, 0x0a, 0x65, 0x5e, 0x80, 0x66,
+      0x76, 0xb8, 0x69, 0x71, 0x6a, 0x00, 0x3a, 0xda, 0x26, 0x07, 0x9e, 0x9e,
+      0x9f, 0x39, 0x62, 0x98, 0x6f, 0x76, 0x84, 0xbc, 0x8b, 0xd0, 0x12, 0x41,
+      0x2e, 0x1e, 0xca, 0x58, 0xae, 0x36, 0x9a, 0x1f, 0x10, 0x6b, 0x95, 0xda,
+      0x93, 0x34, 0x41, 0xba, 0xc8, 0x02, 0x37, 0x91, 0xb7, 0x28, 0x2a, 0xc5,
+      0x61, 0xc6, 0x2d, 0xd0, 0x27, 0xa2, 0xeb, 0xbc, 0x51, 0xe4, 0xf2, 0x79,
+      0x14, 0x2f, 0x13, 0x0a, 0xb1, 0x77, 0x0f, 0x01, 0x9a, 0xf9, 0x92, 0x2a,
+      0x98, 0xb7, 0x64, 0xf2, 0xef, 0x7d, 0xb8, 0x11, 0x25, 0x2d, 0xb9, 0xce,
+      0x9b, 0xb2, 0x4c, 0xde, 0x5b, 0x1e, 0x33, 0x6e, 0xa9, 0x1b, 0xbf, 0x8b,
+      0x1c, 0x9a, 0x00, 0x3b, 0x28, 0x13, 0x00, 0x5c, 0x3c, 0x3b, 0x69, 0x50,
+      0x5e, 0xb6, 0xfd, 0x98
+    ])).buffer;
+
+// Pretend to support all types of hashes (as documented at
+// https://developer.chrome.com/extensions/certificateProvider#type-Hash).
+var TEST_CERTIFICATE_SUPPORTED_HASHES =
+    ['MD5_SHA1', 'SHA1', 'SHA256', 'SHA384', 'SHA512'];
+
+// The expected PIN code.
+var VALID_PIN = '1234';
+
+// The number of wrong attempts after which requesting the PIN will be stopped.
+var MAXIMUM_PIN_FAILED_ATTEMPT_COUNT = 3;
+
+// Data that is used as a response for the sign digest request. This data is
+// random and invalid (as obtaining the real signature requires bundling the
+// app with a private key and with a piece of cryptographic code).
+var FAKE_SIGN_DIGEST_REQUEST_RESPONSE = (new Uint8Array([1, 2, 3])).buffer;
+
+
+function log(message) {
+  console.log('[Sign-in Screen Test App] ' + message);
+}
+
+function logError(message) {
+  console.error('[Sign-in Screen Test App] ' + message);
+}
+
+function arrayBufferToByteArray(arrayBuffer) {
+  return Array.from(new Uint8Array(arrayBuffer));
+}
+
+// Returns the text dump of the array of objects of CertificateInfo type from
+// the chrome.certificateProvider API.
+function dumpCertificateInfos(certificateInfos) {
+  var transformedList = certificateInfos.map(function(certificateInfo) {
+    var transformedItem = Object.assign({}, certificateInfo);
+    transformedItem.certificate = arrayBufferToByteArray(
+        transformedItem.certificate);
+    return transformedItem;
+  });
+  return JSON.stringify(transformedList);
+}
+
+function dumpArrayBuffer(arrayBuffer) {
+  return JSON.stringify(arrayBufferToByteArray(arrayBuffer));
+}
+
+function dumpArrayBuffers(arrayBuffers) {
+  return JSON.stringify(arrayBuffers.map(function(arrayBuffer) {
+    return arrayBufferToByteArray(arrayBuffer);
+  }));
+}
+
+function arrayBufferEquals(firstArrayBuffer, secondArrayBuffer) {
+  return dumpArrayBuffer(firstArrayBuffer) ==
+      dumpArrayBuffer(secondArrayBuffer);
+}
+
+// Listener for the chrome.certificateProvider.onCertificatesRequested event.
+function certificatesRequestedListener(reportCallback) {
+  log('The onCertificatesRequested event received');
+  var response = [{
+    certificate: TEST_CERTIFICATE,
+    supportedHashes: TEST_CERTIFICATE_SUPPORTED_HASHES
+  }];
+  log('Responding with ' + response.length +
+      ' certificate(s): ' + dumpCertificateInfos(response));
+  reportCallback(response, function(rejectedCertificates) {
+    if (chrome.runtime.lastError) {
+      logError(
+          'Failed to report the certificates: ' +
+          chrome.runtime.lastError.message);
+      return;
+    }
+    if (rejectedCertificates.length) {
+      logError(
+          rejectedCertificates.length + ' certificate(s) were rejected: ' +
+          dumpArrayBuffers(rejectedCertificates));
+      return;
+    }
+    log('Successfully reported the certificates');
+  });
+}
+
+// Listener for the chrome.certificateProvider.onSignDigestRequested event.
+function signDigestRequestedListener(request, reportCallback) {
+  log('The onSignDigestRequested event received: signRequestId=' +
+      request.signRequestId + ', digest=' + dumpArrayBuffer(request.digest) +
+      ', hash="' + request.hash +
+      '", certificate=' + dumpArrayBuffer(request.certificate));
+  if (!arrayBufferEquals(request.certificate, TEST_CERTIFICATE)) {
+    logError('The signing request refers to an unknown certificate');
+    abandonSignRequest(request, reportCallback);
+    return;
+  }
+  inputPinAndProcessSignRequest(
+      1 /* attemptNumber */, null /* errorType */, request, reportCallback);
+}
+
+// Requests the PIN from the user and responds to the sign digest request - with
+// some data if the PIN was entered successfully, or with an error otherwise.
+function inputPinAndProcessSignRequest(
+    attemptNumber, errorType, signRequest, signRequestReportCallback) {
+  requestPin(
+      signRequest.signRequestId, attemptNumber, errorType, function(userInput) {
+        if (chrome.runtime.lastError) {
+          logError(
+              'The PIN request failed: ' + chrome.runtime.lastError.message);
+          abandonSignRequest(signRequest, signRequestReportCallback);
+          return;
+        }
+        log('The PIN dialog returned "' + userInput + '"');
+        if (userInput == VALID_PIN) {
+          log('The entered PIN is correct');
+          stopPinRequest(null /* errorType */, signRequest.signRequestId);
+          processSignRequestWithValidPin(
+              signRequest, signRequestReportCallback);
+        } else if (attemptNumber < MAXIMUM_PIN_FAILED_ATTEMPT_COUNT) {
+          log('The entered PIN is wrong, showing the dialog again');
+          inputPinAndProcessSignRequest(
+              attemptNumber + 1, 'INVALID_PIN', signRequest,
+              signRequestReportCallback);
+        } else {
+          log('The entered PIN is wrong, and no attempts left');
+          stopPinRequest('MAX_ATTEMPTS_EXCEEDED', signRequest.signRequestId);
+          abandonSignRequest(signRequest, signRequestReportCallback);
+        }
+      });
+}
+
+// Requests the PIN from the user by displaying the PIN dialog. The passed
+// callback will be called with the string entered by the user, or with null in
+// case of an error.
+function requestPin(signRequestId, attemptNumber, errorType, callback) {
+  var parameters = {signRequestId: signRequestId};
+  if (errorType) {
+    parameters.errorType = errorType;
+    parameters.attemptsLeft =
+        MAXIMUM_PIN_FAILED_ATTEMPT_COUNT - attemptNumber + 1;
+  }
+  log('Requesting PIN with parameters ' + JSON.stringify(parameters));
+  chrome.certificateProvider.requestPin(parameters, function(result) {
+    callback(result ? result.userInput : null);
+  });
+}
+
+// Stops the PIN request: if no error is passed (null), the PIN dialog is
+// closed; if there is some, then the corresponding message will be displayed in
+// the dialog that allows no further input.
+function stopPinRequest(errorType, signRequestId) {
+  var parameters = {signRequestId: signRequestId};
+  if (errorType)
+    parameters.errorType = errorType;
+  log('Stopping the PIN request with parameters ' + JSON.stringify(parameters));
+  chrome.certificateProvider.stopPinRequest(parameters, function() {
+    if (chrome.runtime.lastError) {
+      logError(
+          'Failed to stop the PIN request: ' +
+          chrome.runtime.lastError.message);
+      return;
+    }
+    log('Successfully stopped the PIN request');
+  });
+}
+
+// Responds to the signing request after the PIN was entered correctly.
+function processSignRequestWithValidPin(
+    signRequest, signRequestReportCallback) {
+  log('Responding to the signing request with a fake data');
+  signRequestReportCallback(FAKE_SIGN_DIGEST_REQUEST_RESPONSE);
+}
+
+// Responds to the signing request with an error, which unblocks Chrome from
+// waiting for the response from this extension.
+function abandonSignRequest(signRequest, signRequestReportCallback) {
+  log('Responding to the signing request with an error');
+  signRequestReportCallback();
+}
+
+
+log('Loaded');
+if (chrome.certificateProvider) {
+  chrome.certificateProvider.onCertificatesRequested.addListener(
+      certificatesRequestedListener);
+  chrome.certificateProvider.onSignDigestRequested.addListener(
+      signDigestRequestedListener);
+  log('Successfully set up listeners for the certificateProvider API');
+} else {
+  logError('The certificateProvider API is unavailable');
+}
diff --git a/chrome/test/data/extensions/signin_screen_test_app/app/manifest.json b/chrome/test/data/extensions/signin_screen_test_app/app/manifest.json
index d331322..45bf15c 100644
--- a/chrome/test/data/extensions/signin_screen_test_app/app/manifest.json
+++ b/chrome/test/data/extensions/signin_screen_test_app/app/manifest.json
@@ -2,10 +2,11 @@
   "manifest_version": 2,
   "name": "Sign-in Screen Test App",
   "description": "The app for testing the apps installation in the Chrome OS sign-in profile",
-  "version": "2.0",
+  "version": "3.0",
   "app": {
     "background": {
       "scripts": ["background.js"]
     }
-  }
+  },
+  "permissions": ["certificateProvider"]
 }
diff --git a/chrome/utility/importer/firefox_importer_unittest_utils_mac.cc b/chrome/utility/importer/firefox_importer_unittest_utils_mac.cc
index 94abd24..ac22dfe 100644
--- a/chrome/utility/importer/firefox_importer_unittest_utils_mac.cc
+++ b/chrome/utility/importer/firefox_importer_unittest_utils_mac.cc
@@ -160,10 +160,12 @@
   mojo::edk::PlatformChannelPair channel_pair;
   child_process_ = LaunchNSSDecrypterChildProcess(
       nss_path, channel_pair.PassClientHandle(), token);
-  if (child_process_.IsValid())
+  if (child_process_.IsValid()) {
     invitation.Send(
         child_process_.Handle(),
-        mojo::edk::ConnectionParams(channel_pair.PassServerHandle()));
+        mojo::edk::ConnectionParams(mojo::edk::TransportProtocol::kLegacy,
+                                    channel_pair.PassServerHandle()));
+  }
   return child_process_.IsValid();
 }
 
diff --git a/components/arc/arc_session.cc b/components/arc/arc_session.cc
index 87c89272..b27415a 100644
--- a/components/arc/arc_session.cc
+++ b/components/arc/arc_session.cc
@@ -452,8 +452,10 @@
   std::string token = mojo::edk::GenerateRandomToken();
   mojo::ScopedMessagePipeHandle pipe = invitation.AttachMessagePipe(token);
 
-  invitation.Send(kUnusedChildProcessHandle,
-                  mojo::edk::ConnectionParams(channel_pair.PassServerHandle()));
+  invitation.Send(
+      kUnusedChildProcessHandle,
+      mojo::edk::ConnectionParams(mojo::edk::TransportProtocol::kLegacy,
+                                  channel_pair.PassServerHandle()));
 
   mojo::edk::ScopedPlatformHandleVectorPtr handles(
       new mojo::edk::PlatformHandleVector{
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc
index 6e464cb..7a5f5dc 100644
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.cc
@@ -292,6 +292,8 @@
     data = DataReductionProxyData::GetDataAndCreateIfNecessary(request);
     if (data)
       data->set_used_data_reduction_proxy(true);
+
+    headers->RemoveHeader(chrome_proxy_header());
     VerifyHttpRequestHeaders(false, *headers);
     return;
   }
@@ -319,6 +321,7 @@
       lofi_decider->RemoveAcceptTransformHeader(headers);
     }
     RemoveChromeProxyECTHeader(headers);
+    headers->RemoveHeader(chrome_proxy_header());
     VerifyHttpRequestHeaders(false, *headers);
     return;
   }
diff --git a/components/feature_engagement_tracker/DEPS b/components/feature_engagement_tracker/DEPS
index 13473986..925a7c7 100644
--- a/components/feature_engagement_tracker/DEPS
+++ b/components/feature_engagement_tracker/DEPS
@@ -2,4 +2,5 @@
   "-content",
   "+jni",
   "+components/keyed_service",
+  "+components/leveldb_proto",
 ]
diff --git a/components/feature_engagement_tracker/components_unittests.filter b/components/feature_engagement_tracker/components_unittests.filter
index f11d8c8..8b84948 100644
--- a/components/feature_engagement_tracker/components_unittests.filter
+++ b/components/feature_engagement_tracker/components_unittests.filter
@@ -10,5 +10,6 @@
 ModelImplTest.*
 NeverConditionValidatorTest.*
 OnceConditionValidatorTest.*
+PersistentStoreTest.*
 SingleInvalidConfigurationTest.*
 SystemTimeProviderTest.*
diff --git a/components/feature_engagement_tracker/internal/BUILD.gn b/components/feature_engagement_tracker/internal/BUILD.gn
index 910256a..566d3103 100644
--- a/components/feature_engagement_tracker/internal/BUILD.gn
+++ b/components/feature_engagement_tracker/internal/BUILD.gn
@@ -37,6 +37,8 @@
     "never_storage_validator.h",
     "once_condition_validator.cc",
     "once_condition_validator.h",
+    "persistent_store.cc",
+    "persistent_store.h",
     "single_invalid_configuration.cc",
     "single_invalid_configuration.h",
     "storage_validator.h",
@@ -54,6 +56,7 @@
     "//base",
     "//components/feature_engagement_tracker/public",
     "//components/keyed_service/core",
+    "//components/leveldb_proto",
   ]
 
   if (is_android) {
@@ -86,6 +89,7 @@
     "never_condition_validator_unittest.cc",
     "never_storage_validator_unittest.cc",
     "once_condition_validator_unittest.cc",
+    "persistent_store_unittest.cc",
     "single_invalid_configuration_unittest.cc",
     "system_time_provider_unittest.cc",
   ]
@@ -93,6 +97,8 @@
   deps = [
     ":internal",
     "//base/test:test_support",
+    "//components/feature_engagement_tracker/internal/test:test_support",
+    "//components/leveldb_proto:test_support",
     "//testing/gtest",
   ]
 }
diff --git a/components/feature_engagement_tracker/internal/feature_engagement_tracker_impl.cc b/components/feature_engagement_tracker/internal/feature_engagement_tracker_impl.cc
index 244938e..2c93fa2c 100644
--- a/components/feature_engagement_tracker/internal/feature_engagement_tracker_impl.cc
+++ b/components/feature_engagement_tracker/internal/feature_engagement_tracker_impl.cc
@@ -14,10 +14,12 @@
 #include "components/feature_engagement_tracker/internal/never_condition_validator.h"
 #include "components/feature_engagement_tracker/internal/never_storage_validator.h"
 #include "components/feature_engagement_tracker/internal/once_condition_validator.h"
+#include "components/feature_engagement_tracker/internal/persistent_store.h"
 #include "components/feature_engagement_tracker/internal/single_invalid_configuration.h"
 #include "components/feature_engagement_tracker/internal/system_time_provider.h"
 #include "components/feature_engagement_tracker/public/feature_constants.h"
 #include "components/feature_engagement_tracker/public/feature_list.h"
+#include "components/leveldb_proto/proto_database_impl.h"
 
 namespace feature_engagement_tracker {
 
@@ -53,11 +55,16 @@
 // static
 FeatureEngagementTracker* FeatureEngagementTracker::Create(
     const base::FilePath& storage_dir,
-    const scoped_refptr<base::SequencedTaskRunner>& background__task_runner) {
+    const scoped_refptr<base::SequencedTaskRunner>& background_task_runner) {
   if (base::FeatureList::IsEnabled(kIPHDemoMode))
     return CreateDemoModeFeatureEngagementTracker().release();
 
-  std::unique_ptr<Store> store = base::MakeUnique<InMemoryStore>();
+  std::unique_ptr<leveldb_proto::ProtoDatabase<Event>> db =
+      base::MakeUnique<leveldb_proto::ProtoDatabaseImpl<Event>>(
+          background_task_runner);
+
+  std::unique_ptr<Store> store =
+      base::MakeUnique<PersistentStore>(storage_dir, std::move(db));
   std::unique_ptr<Configuration> configuration =
       base::MakeUnique<SingleInvalidConfiguration>();
   std::unique_ptr<ConditionValidator> condition_validator =
diff --git a/components/feature_engagement_tracker/internal/model_impl_unittest.cc b/components/feature_engagement_tracker/internal/model_impl_unittest.cc
index fff5e72e1..b94d2a4 100644
--- a/components/feature_engagement_tracker/internal/model_impl_unittest.cc
+++ b/components/feature_engagement_tracker/internal/model_impl_unittest.cc
@@ -18,6 +18,7 @@
 #include "components/feature_engagement_tracker/internal/in_memory_store.h"
 #include "components/feature_engagement_tracker/internal/never_storage_validator.h"
 #include "components/feature_engagement_tracker/internal/proto/event.pb.h"
+#include "components/feature_engagement_tracker/internal/test/event_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace feature_engagement_tracker {
@@ -37,42 +38,6 @@
   configuration->SetConfiguration(&feature, config);
 }
 
-void SetEventCountForDay(Event* event, uint32_t day, uint32_t count) {
-  Event_Count* event_count = event->add_events();
-  event_count->set_day(day);
-  event_count->set_count(count);
-}
-
-// Verifies that the given |event| contains a |day| with the correct |count|,
-// and that the day only exists a single time.
-void VerifyEventCount(const Event* event, uint32_t day, uint32_t count) {
-  bool found_day = false;
-  for (int i = 0; i < event->events_size(); ++i) {
-    Event_Count event_count = event->events(i);
-    if (event_count.day() == day) {
-      EXPECT_FALSE(found_day);
-      found_day = true;
-      EXPECT_EQ(count, event_count.count());
-    }
-  }
-  EXPECT_TRUE(found_day);
-}
-
-// Verifies that the event |a| and |b| contain the exact same data.
-void VerifyEqual(const Event* a, const Event* b) {
-  if (!a || !b) {
-    // If one of the events are nullptr, both should be nullptr.
-    ASSERT_EQ(a, b);
-    return;
-  }
-
-  EXPECT_EQ(a->name(), b->name());
-  EXPECT_EQ(a->events_size(), b->events_size());
-  for (int i = 0; i < a->events_size(); ++i) {
-    VerifyEventCount(b, a->events(i).day(), a->events(i).count());
-  }
-}
-
 // A test-only implementation of InMemoryStore that tracks calls to
 // WriteEvent(...).
 class TestInMemoryStore : public InMemoryStore {
@@ -108,21 +73,21 @@
 
   Event foo;
   foo.set_name("foo");
-  SetEventCountForDay(&foo, 1, 1);
+  test::SetEventCountForDay(&foo, 1, 1);
   events->push_back(foo);
 
   Event bar;
   bar.set_name("bar");
-  SetEventCountForDay(&bar, 1, 3);
-  SetEventCountForDay(&bar, 2, 3);
-  SetEventCountForDay(&bar, 5, 5);
+  test::SetEventCountForDay(&bar, 1, 3);
+  test::SetEventCountForDay(&bar, 2, 3);
+  test::SetEventCountForDay(&bar, 5, 5);
   events->push_back(bar);
 
   Event qux;
   qux.set_name("qux");
-  SetEventCountForDay(&qux, 1, 5);
-  SetEventCountForDay(&qux, 2, 1);
-  SetEventCountForDay(&qux, 3, 2);
+  test::SetEventCountForDay(&qux, 1, 5);
+  test::SetEventCountForDay(&qux, 2, 1);
+  test::SetEventCountForDay(&qux, 3, 2);
   events->push_back(qux);
 
   return base::MakeUnique<TestInMemoryStore>(std::move(events), true);
@@ -195,21 +160,21 @@
   const Event* foo_event = model_->GetEvent("foo");
   EXPECT_EQ("foo", foo_event->name());
   EXPECT_EQ(1, foo_event->events_size());
-  VerifyEventCount(foo_event, 1u, 1u);
+  test::VerifyEventCount(foo_event, 1u, 1u);
 
   const Event* bar_event = model_->GetEvent("bar");
   EXPECT_EQ("bar", bar_event->name());
   EXPECT_EQ(3, bar_event->events_size());
-  VerifyEventCount(bar_event, 1u, 3u);
-  VerifyEventCount(bar_event, 2u, 3u);
-  VerifyEventCount(bar_event, 5u, 5u);
+  test::VerifyEventCount(bar_event, 1u, 3u);
+  test::VerifyEventCount(bar_event, 2u, 3u);
+  test::VerifyEventCount(bar_event, 5u, 5u);
 
   const Event* qux_event = model_->GetEvent("qux");
   EXPECT_EQ("qux", qux_event->name());
   EXPECT_EQ(3, qux_event->events_size());
-  VerifyEventCount(qux_event, 1u, 5u);
-  VerifyEventCount(qux_event, 2u, 1u);
-  VerifyEventCount(qux_event, 3u, 2u);
+  test::VerifyEventCount(qux_event, 1u, 5u);
+  test::VerifyEventCount(qux_event, 2u, 1u);
+  test::VerifyEventCount(qux_event, 3u, 2u);
 }
 
 TEST_F(ModelImplTest, RetrievingNewEventsShouldYieldNullptr) {
@@ -220,7 +185,7 @@
 
   const Event* no_event = model_->GetEvent("no");
   EXPECT_EQ(nullptr, no_event);
-  VerifyEqual(nullptr, store_->GetLastWrittenEvent());
+  test::VerifyEventsEqual(nullptr, store_->GetLastWrittenEvent());
 }
 
 TEST_F(ModelImplTest, IncrementingNonExistingEvent) {
@@ -234,8 +199,8 @@
   const Event* event1 = model_->GetEvent("nonexisting");
   EXPECT_EQ("nonexisting", event1->name());
   EXPECT_EQ(1, event1->events_size());
-  VerifyEventCount(event1, 1u, 1u);
-  VerifyEqual(event1, store_->GetLastWrittenEvent());
+  test::VerifyEventCount(event1, 1u, 1u);
+  test::VerifyEventsEqual(event1, store_->GetLastWrittenEvent());
 
   // Incrementing the event after it has been initialized to 1, it should now
   // have a count of 2 for the given day.
@@ -243,8 +208,8 @@
   const Event* event2 = model_->GetEvent("nonexisting");
   Event_Count event2_count = event2->events(0);
   EXPECT_EQ(1, event2->events_size());
-  VerifyEventCount(event2, 1u, 2u);
-  VerifyEqual(event2, store_->GetLastWrittenEvent());
+  test::VerifyEventCount(event2, 1u, 2u);
+  test::VerifyEventsEqual(event2, store_->GetLastWrittenEvent());
 }
 
 TEST_F(ModelImplTest, IncrementingNonExistingEventMultipleDays) {
@@ -259,10 +224,10 @@
   model_->IncrementEvent("nonexisting", 3u);
   const Event* event = model_->GetEvent("nonexisting");
   EXPECT_EQ(3, event->events_size());
-  VerifyEventCount(event, 1u, 1u);
-  VerifyEventCount(event, 2u, 2u);
-  VerifyEventCount(event, 3u, 1u);
-  VerifyEqual(event, store_->GetLastWrittenEvent());
+  test::VerifyEventCount(event, 1u, 1u);
+  test::VerifyEventCount(event, 2u, 2u);
+  test::VerifyEventCount(event, 3u, 1u);
+  test::VerifyEventsEqual(event, store_->GetLastWrittenEvent());
 }
 
 TEST_F(ModelImplTest, IncrementingSingleDayExistingEvent) {
@@ -275,14 +240,14 @@
   const Event* foo_event = model_->GetEvent("foo");
   EXPECT_EQ("foo", foo_event->name());
   EXPECT_EQ(1, foo_event->events_size());
-  VerifyEventCount(foo_event, 1u, 1u);
+  test::VerifyEventCount(foo_event, 1u, 1u);
 
   // Incrementing |foo| should change count to 2.
   model_->IncrementEvent("foo", 1u);
   const Event* foo_event2 = model_->GetEvent("foo");
   EXPECT_EQ(1, foo_event2->events_size());
-  VerifyEventCount(foo_event2, 1u, 2u);
-  VerifyEqual(foo_event2, store_->GetLastWrittenEvent());
+  test::VerifyEventCount(foo_event2, 1u, 2u);
+  test::VerifyEventsEqual(foo_event2, store_->GetLastWrittenEvent());
 }
 
 TEST_F(ModelImplTest, IncrementingSingleDayExistingEventTwice) {
@@ -297,8 +262,8 @@
   model_->IncrementEvent("foo", 1u);
   const Event* foo_event = model_->GetEvent("foo");
   EXPECT_EQ(1, foo_event->events_size());
-  VerifyEventCount(foo_event, 1u, 3u);
-  VerifyEqual(foo_event, store_->GetLastWrittenEvent());
+  test::VerifyEventCount(foo_event, 1u, 3u);
+  test::VerifyEventsEqual(foo_event, store_->GetLastWrittenEvent());
 }
 
 TEST_F(ModelImplTest, IncrementingExistingMultiDayEvent) {
@@ -310,11 +275,11 @@
   // |bar| is inserted into the store with a count of 3 at day 2. Incrementing
   // that day should lead to a count of 4.
   const Event* bar_event = model_->GetEvent("bar");
-  VerifyEventCount(bar_event, 2u, 3u);
+  test::VerifyEventCount(bar_event, 2u, 3u);
   model_->IncrementEvent("bar", 2u);
   const Event* bar_event2 = model_->GetEvent("bar");
-  VerifyEventCount(bar_event2, 2u, 4u);
-  VerifyEqual(bar_event2, store_->GetLastWrittenEvent());
+  test::VerifyEventCount(bar_event2, 2u, 4u);
+  test::VerifyEventsEqual(bar_event2, store_->GetLastWrittenEvent());
 }
 
 TEST_F(ModelImplTest, IncrementingExistingMultiDayEventNewDay) {
@@ -327,12 +292,12 @@
   // the day.
   model_->IncrementEvent("bar", 10u);
   const Event* bar_event = model_->GetEvent("bar");
-  VerifyEventCount(bar_event, 10u, 1u);
-  VerifyEqual(bar_event, store_->GetLastWrittenEvent());
+  test::VerifyEventCount(bar_event, 10u, 1u);
+  test::VerifyEventsEqual(bar_event, store_->GetLastWrittenEvent());
   model_->IncrementEvent("bar", 10u);
   const Event* bar_event2 = model_->GetEvent("bar");
-  VerifyEventCount(bar_event2, 10u, 2u);
-  VerifyEqual(bar_event2, store_->GetLastWrittenEvent());
+  test::VerifyEventCount(bar_event2, 10u, 2u);
+  test::VerifyEventsEqual(bar_event2, store_->GetLastWrittenEvent());
 }
 
 TEST_F(ModelImplTest, ShowState) {
diff --git a/components/feature_engagement_tracker/internal/persistent_store.cc b/components/feature_engagement_tracker/internal/persistent_store.cc
new file mode 100644
index 0000000..8841e05a
--- /dev/null
+++ b/components/feature_engagement_tracker/internal/persistent_store.cc
@@ -0,0 +1,76 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/feature_engagement_tracker/internal/persistent_store.h"
+
+#include <vector>
+
+#include "base/bind.h"
+#include "base/memory/ptr_util.h"
+
+namespace feature_engagement_tracker {
+namespace {
+// Corresponds to a UMA suffix "LevelDBOpenResults" in histograms.xml.
+// Please do not change.
+const char kDatabaseUMAName[] = "FeatureEngagementTrackerStore";
+
+using KeyEventPair = std::pair<std::string, Event>;
+using KeyEventList = std::vector<KeyEventPair>;
+
+void NoopUpdateCallback(bool success) {}
+}  // namespace
+
+PersistentStore::PersistentStore(
+    const base::FilePath& storage_dir,
+    std::unique_ptr<leveldb_proto::ProtoDatabase<Event>> db)
+    : storage_dir_(storage_dir),
+      db_(std::move(db)),
+      ready_(false),
+      weak_ptr_factory_(this) {}
+
+PersistentStore::~PersistentStore() = default;
+
+void PersistentStore::Load(const OnLoadedCallback& callback) {
+  DCHECK(!ready_);
+
+  db_->Init(kDatabaseUMAName, storage_dir_,
+            base::Bind(&PersistentStore::OnInitComplete,
+                       weak_ptr_factory_.GetWeakPtr(), callback));
+}
+
+bool PersistentStore::IsReady() const {
+  return ready_;
+}
+
+void PersistentStore::WriteEvent(const Event& event) {
+  DCHECK(IsReady());
+  std::unique_ptr<KeyEventList> entries = base::MakeUnique<KeyEventList>();
+  entries->push_back(KeyEventPair(event.name(), event));
+
+  // TODO(dtrainor, nyquist): Consider tracking failures here and storing UMA.
+  db_->UpdateEntries(std::move(entries),
+                     base::MakeUnique<std::vector<std::string>>(),
+                     base::Bind(&NoopUpdateCallback));
+}
+
+void PersistentStore::OnInitComplete(const OnLoadedCallback& callback,
+                                     bool success) {
+  if (!success) {
+    callback.Run(false, base::MakeUnique<std::vector<Event>>());
+    return;
+  }
+
+  db_->LoadEntries(base::Bind(&PersistentStore::OnLoadComplete,
+                              weak_ptr_factory_.GetWeakPtr(), callback));
+}
+
+void PersistentStore::OnLoadComplete(
+    const OnLoadedCallback& callback,
+    bool success,
+    std::unique_ptr<std::vector<Event>> entries) {
+  ready_ = success;
+  callback.Run(success, std::move(entries));
+}
+
+}  // namespace feature_engagement_tracker
diff --git a/components/feature_engagement_tracker/internal/persistent_store.h b/components/feature_engagement_tracker/internal/persistent_store.h
new file mode 100644
index 0000000..3e259f0
--- /dev/null
+++ b/components/feature_engagement_tracker/internal/persistent_store.h
@@ -0,0 +1,58 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_FEATURE_ENGAGEMENT_TRACKER_INTERNAL_PERSISTENT_STORE_H_
+#define COMPONENTS_FEATURE_ENGAGEMENT_TRACKER_INTERNAL_PERSISTENT_STORE_H_
+
+#include <memory>
+#include <vector>
+
+#include "base/files/file_path.h"
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "components/feature_engagement_tracker/internal/proto/event.pb.h"
+#include "components/feature_engagement_tracker/internal/store.h"
+#include "components/leveldb_proto/proto_database.h"
+
+namespace feature_engagement_tracker {
+
+// A PersistentStore provides a DB layer that persists the data to disk.  The
+// data is retrieved once during the load process and after that this store is
+// write only.  Data will be persisted asynchronously so it is not guaranteed to
+// always save every write during shutdown.
+class PersistentStore : public Store {
+ public:
+  // Builds a PersistentStore backed by the ProtoDatabase |db|.  The database
+  // will be loaded and/or created at |storage_dir|.
+  PersistentStore(const base::FilePath& storage_dir,
+                  std::unique_ptr<leveldb_proto::ProtoDatabase<Event>> db);
+  ~PersistentStore() override;
+
+  // Store implementation.
+  void Load(const OnLoadedCallback& callback) override;
+  bool IsReady() const override;
+  void WriteEvent(const Event& event) override;
+
+ private:
+  void OnInitComplete(const OnLoadedCallback& callback, bool success);
+  void OnLoadComplete(const OnLoadedCallback& callback,
+                      bool success,
+                      std::unique_ptr<std::vector<Event>> entries);
+
+  const base::FilePath storage_dir_;
+  std::unique_ptr<leveldb_proto::ProtoDatabase<Event>> db_;
+
+  // Whether or not the underlying ProtoDatabase is ready.  This will be false
+  // until the OnLoadedCallback is broadcast.  It will also be false if loading
+  // fails.
+  bool ready_;
+
+  base::WeakPtrFactory<PersistentStore> weak_ptr_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(PersistentStore);
+};
+
+}  // namespace feature_engagement_tracker
+
+#endif  // COMPONENTS_FEATURE_ENGAGEMENT_TRACKER_INTERNAL_PERSISTENT_STORE_H_
diff --git a/components/feature_engagement_tracker/internal/persistent_store_unittest.cc b/components/feature_engagement_tracker/internal/persistent_store_unittest.cc
new file mode 100644
index 0000000..4068662
--- /dev/null
+++ b/components/feature_engagement_tracker/internal/persistent_store_unittest.cc
@@ -0,0 +1,193 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/feature_engagement_tracker/internal/persistent_store.h"
+
+#include <map>
+
+#include "base/files/file_path.h"
+#include "base/memory/ptr_util.h"
+#include "base/optional.h"
+#include "components/feature_engagement_tracker/internal/proto/event.pb.h"
+#include "components/feature_engagement_tracker/internal/test/event_util.h"
+#include "components/leveldb_proto/proto_database.h"
+#include "components/leveldb_proto/testing/fake_db.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace feature_engagement_tracker {
+
+namespace {
+
+void VerifyEventsInListAndMap(const std::map<std::string, Event>& map,
+                              const std::vector<Event>& list) {
+  ASSERT_EQ(map.size(), list.size());
+
+  for (const auto& event : list) {
+    const auto& it = map.find(event.name());
+    ASSERT_NE(map.end(), it);
+    test::VerifyEventsEqual(&event, &it->second);
+  }
+}
+
+class PersistentStoreTest : public ::testing::Test {
+ public:
+  PersistentStoreTest()
+      : db_(nullptr),
+        storage_dir_(FILE_PATH_LITERAL("/persistent/store/lalala")) {
+    load_callback_ =
+        base::Bind(&PersistentStoreTest::LoadCallback, base::Unretained(this));
+  }
+
+  void TearDown() override {
+    db_events_.clear();
+    db_ = nullptr;
+    store_.reset();
+  }
+
+ protected:
+  void SetUpDB() {
+    DCHECK(!db_);
+    DCHECK(!store_);
+
+    auto db = base::MakeUnique<leveldb_proto::test::FakeDB<Event>>(&db_events_);
+    db_ = db.get();
+    store_.reset(new PersistentStore(storage_dir_, std::move(db)));
+  }
+
+  void LoadCallback(bool success, std::unique_ptr<std::vector<Event>> events) {
+    load_successful_ = success;
+    load_results_ = std::move(events);
+  }
+
+  // Callback results.
+  base::Optional<bool> load_successful_;
+  std::unique_ptr<std::vector<Event>> load_results_;
+
+  Store::OnLoadedCallback load_callback_;
+  std::map<std::string, Event> db_events_;
+  leveldb_proto::test::FakeDB<Event>* db_;
+  std::unique_ptr<Store> store_;
+
+  // Constant test data.
+  base::FilePath storage_dir_;
+};
+
+}  // namespace
+
+TEST_F(PersistentStoreTest, StorageDirectory) {
+  SetUpDB();
+  store_->Load(load_callback_);
+  EXPECT_EQ(storage_dir_, db_->GetDirectory());
+}
+
+TEST_F(PersistentStoreTest, SuccessfulInitAndLoadEmptyStore) {
+  SetUpDB();
+
+  store_->Load(load_callback_);
+
+  // The initialize should not trigger a response to the callback.
+  db_->InitCallback(true);
+  EXPECT_FALSE(load_successful_.has_value());
+
+  // The load should trigger a response to the callback.
+  db_->LoadCallback(true);
+  EXPECT_TRUE(load_successful_.value());
+
+  // Validate that we have no entries.
+  EXPECT_NE(nullptr, load_results_);
+  EXPECT_TRUE(load_results_->empty());
+}
+
+TEST_F(PersistentStoreTest, SuccessfulInitAndLoadWithEvents) {
+  // Populate fake Event entries.
+  Event event1;
+  event1.set_name("event1");
+  test::SetEventCountForDay(&event1, 1, 1);
+
+  Event event2;
+  event2.set_name("event2");
+  test::SetEventCountForDay(&event2, 1, 3);
+  test::SetEventCountForDay(&event2, 2, 5);
+
+  db_events_.insert(std::pair<std::string, Event>(event1.name(), event1));
+  db_events_.insert(std::pair<std::string, Event>(event2.name(), event2));
+
+  SetUpDB();
+
+  // The initialize should not trigger a response to the callback.
+  store_->Load(load_callback_);
+  db_->InitCallback(true);
+  EXPECT_FALSE(load_successful_.has_value());
+
+  // The load should trigger a response to the callback.
+  db_->LoadCallback(true);
+  EXPECT_TRUE(load_successful_.value());
+  EXPECT_NE(nullptr, load_results_);
+
+  // Validate that we have the two events that we expect.
+  VerifyEventsInListAndMap(db_events_, *load_results_);
+}
+
+TEST_F(PersistentStoreTest, SuccessfulInitBadLoad) {
+  SetUpDB();
+
+  store_->Load(load_callback_);
+
+  // The initialize should not trigger a response to the callback.
+  db_->InitCallback(true);
+  EXPECT_FALSE(load_successful_.has_value());
+
+  // The load will fail and should trigger the callback.
+  db_->LoadCallback(false);
+  EXPECT_FALSE(load_successful_.value());
+  EXPECT_FALSE(store_->IsReady());
+}
+
+TEST_F(PersistentStoreTest, BadInit) {
+  SetUpDB();
+
+  store_->Load(load_callback_);
+
+  // The initialize will fail and should trigger the callback.
+  db_->InitCallback(false);
+  EXPECT_FALSE(load_successful_.value());
+  EXPECT_FALSE(store_->IsReady());
+}
+
+TEST_F(PersistentStoreTest, IsReady) {
+  SetUpDB();
+  EXPECT_FALSE(store_->IsReady());
+
+  store_->Load(load_callback_);
+  EXPECT_FALSE(store_->IsReady());
+
+  db_->InitCallback(true);
+  EXPECT_FALSE(store_->IsReady());
+
+  db_->LoadCallback(true);
+  EXPECT_TRUE(store_->IsReady());
+}
+
+TEST_F(PersistentStoreTest, WriteEvent) {
+  SetUpDB();
+
+  store_->Load(load_callback_);
+  db_->InitCallback(true);
+  db_->LoadCallback(true);
+
+  Event event;
+  event.set_name("event");
+  test::SetEventCountForDay(&event, 1, 2);
+
+  store_->WriteEvent(event);
+  db_->UpdateCallback(true);
+
+  EXPECT_EQ(1U, db_events_.size());
+
+  const auto& it = db_events_.find("event");
+  EXPECT_NE(db_events_.end(), it);
+  test::VerifyEventsEqual(&event, &it->second);
+}
+
+}  // namespace feature_engagement_tracker
diff --git a/components/feature_engagement_tracker/internal/test/BUILD.gn b/components/feature_engagement_tracker/internal/test/BUILD.gn
new file mode 100644
index 0000000..8300138
--- /dev/null
+++ b/components/feature_engagement_tracker/internal/test/BUILD.gn
@@ -0,0 +1,19 @@
+# Copyright 2017 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+source_set("test_support") {
+  testonly = true
+
+  visibility = [ "//components/feature_engagement_tracker/internal:unit_tests" ]
+
+  sources = [
+    "event_util.cc",
+    "event_util.h",
+  ]
+
+  deps = [
+    "//components/feature_engagement_tracker/internal/proto",
+    "//testing/gtest",
+  ]
+}
diff --git a/components/feature_engagement_tracker/internal/test/event_util.cc b/components/feature_engagement_tracker/internal/test/event_util.cc
new file mode 100644
index 0000000..af6a351
--- /dev/null
+++ b/components/feature_engagement_tracker/internal/test/event_util.cc
@@ -0,0 +1,46 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/feature_engagement_tracker/internal/test/event_util.h"
+
+#include "components/feature_engagement_tracker/internal/proto/event.pb.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace feature_engagement_tracker {
+namespace test {
+
+void SetEventCountForDay(Event* event, uint32_t day, uint32_t count) {
+  Event_Count* event_count = event->add_events();
+  event_count->set_day(day);
+  event_count->set_count(count);
+}
+
+void VerifyEventCount(const Event* event, uint32_t day, uint32_t count) {
+  bool found_day = false;
+  for (const auto& event_count : event->events()) {
+    if (event_count.day() == day) {
+      EXPECT_FALSE(found_day);
+      found_day = true;
+      EXPECT_EQ(count, event_count.count());
+    }
+  }
+  EXPECT_TRUE(found_day);
+}
+
+void VerifyEventsEqual(const Event* a, const Event* b) {
+  if (!a || !b) {
+    // If one of the events are nullptr, both should be nullptr.
+    ASSERT_EQ(a, b);
+    return;
+  }
+
+  EXPECT_EQ(a->name(), b->name());
+  EXPECT_EQ(a->events_size(), b->events_size());
+  for (int i = 0; i < a->events_size(); ++i) {
+    VerifyEventCount(b, a->events(i).day(), a->events(i).count());
+  }
+}
+
+}  // namespace test
+}  // namespace feature_engagement_tracker
diff --git a/components/feature_engagement_tracker/internal/test/event_util.h b/components/feature_engagement_tracker/internal/test/event_util.h
new file mode 100644
index 0000000..f4cc90ad
--- /dev/null
+++ b/components/feature_engagement_tracker/internal/test/event_util.h
@@ -0,0 +1,29 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_FEATURE_ENGAGEMENT_TRACKER_INTERNAL_TEST_EVENT_UTIL_H_
+#define COMPONENTS_FEATURE_ENGAGEMENT_TRACKER_INTERNAL_TEST_EVENT_UTIL_H_
+
+#include <stdint.h>
+
+namespace feature_engagement_tracker {
+
+class Event;
+
+namespace test {
+
+// Adds an Event count entry for |event|.
+void SetEventCountForDay(Event* event, uint32_t day, uint32_t count);
+
+// Verifies that the given |event| contains a |day| with the correct |count|,
+// and that the day only exists a single time.
+void VerifyEventCount(const Event* event, uint32_t day, uint32_t count);
+
+// Verifies that the event |a| and |b| contain the exact same data.
+void VerifyEventsEqual(const Event* a, const Event* b);
+
+}  // namespace test
+}  // namespace feature_engagement_tracker
+
+#endif  // COMPONENTS_FEATURE_ENGAGEMENT_TRACKER_INTERNAL_TEST_EVENT_UTIL_H_
diff --git a/components/nacl/broker/nacl_broker_listener.cc b/components/nacl/broker/nacl_broker_listener.cc
index bab6db6..24ac3c8 100644
--- a/components/nacl/broker/nacl_broker_listener.cc
+++ b/components/nacl/broker/nacl_broker_listener.cc
@@ -133,8 +133,10 @@
         this, cmd_line, handles, &loader_process);
 
     if (result == sandbox::SBOX_ALL_OK) {
-      invitation.Send(loader_process.Handle(),
-                      mojo::edk::ConnectionParams(std::move(parent_handle)));
+      invitation.Send(
+          loader_process.Handle(),
+          mojo::edk::ConnectionParams(mojo::edk::TransportProtocol::kLegacy,
+                                      std::move(parent_handle)));
 
       // Note: PROCESS_DUP_HANDLE is necessary here, because:
       // 1) The current process is the broker, which is the loader's parent.
diff --git a/components/prefs/overlay_user_pref_store.cc b/components/prefs/overlay_user_pref_store.cc
index ddc47c8..48271fb0 100644
--- a/components/prefs/overlay_user_pref_store.cc
+++ b/components/prefs/overlay_user_pref_store.cc
@@ -44,22 +44,17 @@
 
   if (overlay_.GetValue(key, result))
     return true;
-  return underlay_->GetValue(GetUnderlayKey(key), result);
+  return underlay_->GetValue(key, result);
 }
 
 std::unique_ptr<base::DictionaryValue> OverlayUserPrefStore::GetValues() const {
   auto values = underlay_->GetValues();
   auto overlay_values = overlay_.AsDictionaryValue();
-  for (const auto& overlay_mapping : overlay_to_underlay_names_map_) {
-    const std::string& overlay_key = overlay_mapping.first;
-    const std::string& underlay_key = overlay_mapping.second;
+  for (const auto& key : overlay_names_set_) {
     std::unique_ptr<base::Value> out_value;
-    if (overlay_key != underlay_key) {
-      values->Remove(underlay_key, &out_value);
-    }
-    overlay_values->Remove(overlay_key, &out_value);
+    overlay_values->Remove(key, &out_value);
     if (out_value) {
-      values->Set(overlay_key, std::move(out_value));
+      values->Set(key, std::move(out_value));
     }
   }
   return values;
@@ -68,14 +63,14 @@
 bool OverlayUserPrefStore::GetMutableValue(const std::string& key,
                                            base::Value** result) {
   if (!ShallBeStoredInOverlay(key))
-    return underlay_->GetMutableValue(GetUnderlayKey(key), result);
+    return underlay_->GetMutableValue(key, result);
 
   if (overlay_.GetValue(key, result))
     return true;
 
   // Try to create copy of underlay if the overlay does not contain a value.
   base::Value* underlay_value = NULL;
-  if (!underlay_->GetMutableValue(GetUnderlayKey(key), &underlay_value))
+  if (!underlay_->GetMutableValue(key, &underlay_value))
     return false;
 
   *result = underlay_value->DeepCopy();
@@ -87,7 +82,7 @@
                                     std::unique_ptr<base::Value> value,
                                     uint32_t flags) {
   if (!ShallBeStoredInOverlay(key)) {
-    underlay_->SetValue(GetUnderlayKey(key), std::move(value), flags);
+    underlay_->SetValue(key, std::move(value), flags);
     return;
   }
 
@@ -99,7 +94,7 @@
                                             std::unique_ptr<base::Value> value,
                                             uint32_t flags) {
   if (!ShallBeStoredInOverlay(key)) {
-    underlay_->SetValueSilently(GetUnderlayKey(key), std::move(value), flags);
+    underlay_->SetValueSilently(key, std::move(value), flags);
     return;
   }
 
@@ -108,7 +103,7 @@
 
 void OverlayUserPrefStore::RemoveValue(const std::string& key, uint32_t flags) {
   if (!ShallBeStoredInOverlay(key)) {
-    underlay_->RemoveValue(GetUnderlayKey(key), flags);
+    underlay_->RemoveValue(key, flags);
     return;
   }
 
@@ -153,8 +148,8 @@
 }
 
 void OverlayUserPrefStore::OnPrefValueChanged(const std::string& key) {
-  if (!overlay_.GetValue(GetOverlayKey(key), NULL))
-    ReportValueChanged(GetOverlayKey(key), DEFAULT_PREF_WRITE_FLAGS);
+  if (!overlay_.GetValue(key, NULL))
+    ReportValueChanged(key, DEFAULT_PREF_WRITE_FLAGS);
 }
 
 void OverlayUserPrefStore::OnInitializationCompleted(bool succeeded) {
@@ -163,22 +158,10 @@
 }
 
 void OverlayUserPrefStore::RegisterOverlayPref(const std::string& key) {
-  RegisterOverlayPref(key, key);
-}
-
-void OverlayUserPrefStore::RegisterOverlayPref(
-    const std::string& overlay_key,
-    const std::string& underlay_key) {
-  DCHECK(!overlay_key.empty()) << "Overlay key is empty";
-  DCHECK(overlay_to_underlay_names_map_.find(overlay_key) ==
-         overlay_to_underlay_names_map_.end()) <<
-      "Overlay key already registered";
-  DCHECK(!underlay_key.empty()) << "Underlay key is empty";
-  DCHECK(underlay_to_overlay_names_map_.find(underlay_key) ==
-         underlay_to_overlay_names_map_.end()) <<
-      "Underlay key already registered";
-  overlay_to_underlay_names_map_[overlay_key] = underlay_key;
-  underlay_to_overlay_names_map_[underlay_key] = overlay_key;
+  DCHECK(!key.empty()) << "Key is empty";
+  DCHECK(overlay_names_set_.find(key) == overlay_names_set_.end())
+      << "Key already registered";
+  overlay_names_set_.insert(key);
 }
 
 void OverlayUserPrefStore::ClearMutableValues() {
@@ -189,22 +172,7 @@
   underlay_->RemoveObserver(this);
 }
 
-const std::string& OverlayUserPrefStore::GetOverlayKey(
-    const std::string& underlay_key) const {
-  NamesMap::const_iterator i =
-      underlay_to_overlay_names_map_.find(underlay_key);
-  return i != underlay_to_overlay_names_map_.end() ? i->second : underlay_key;
-}
-
-const std::string& OverlayUserPrefStore::GetUnderlayKey(
-    const std::string& overlay_key) const {
-  NamesMap::const_iterator i =
-      overlay_to_underlay_names_map_.find(overlay_key);
-  return i != overlay_to_underlay_names_map_.end() ? i->second : overlay_key;
-}
-
 bool OverlayUserPrefStore::ShallBeStoredInOverlay(
     const std::string& key) const {
-  return overlay_to_underlay_names_map_.find(key) !=
-      overlay_to_underlay_names_map_.end();
+  return overlay_names_set_.find(key) != overlay_names_set_.end();
 }
diff --git a/components/prefs/overlay_user_pref_store.h b/components/prefs/overlay_user_pref_store.h
index 7d9eb307..7766dcd 100644
--- a/components/prefs/overlay_user_pref_store.h
+++ b/components/prefs/overlay_user_pref_store.h
@@ -62,8 +62,6 @@
   void OnInitializationCompleted(bool succeeded) override;
 
   void RegisterOverlayPref(const std::string& key);
-  void RegisterOverlayPref(const std::string& overlay_key,
-                           const std::string& underlay_key);
 
   void ClearMutableValues() override;
 
@@ -71,10 +69,7 @@
   ~OverlayUserPrefStore() override;
 
  private:
-  typedef std::map<std::string, std::string> NamesMap;
-
-  const std::string& GetOverlayKey(const std::string& underlay_key) const;
-  const std::string& GetUnderlayKey(const std::string& overlay_key) const;
+  typedef std::set<std::string> NamesSet;
 
   // Returns true if |key| corresponds to a preference that shall be stored in
   // an in-memory PrefStore that is not persisted to disk.
@@ -83,8 +78,7 @@
   base::ObserverList<PrefStore::Observer, true> observers_;
   PrefValueMap overlay_;
   scoped_refptr<PersistentPrefStore> underlay_;
-  NamesMap overlay_to_underlay_names_map_;
-  NamesMap underlay_to_overlay_names_map_;
+  NamesSet overlay_names_set_;
 
   DISALLOW_COPY_AND_ASSIGN(OverlayUserPrefStore);
 };
diff --git a/components/prefs/overlay_user_pref_store_unittest.cc b/components/prefs/overlay_user_pref_store_unittest.cc
index 5dded13..e32bf1e 100644
--- a/components/prefs/overlay_user_pref_store_unittest.cc
+++ b/components/prefs/overlay_user_pref_store_unittest.cc
@@ -24,10 +24,6 @@
 const char* const overlay_key = kBrowserWindowPlacement;
 const char* const regular_key = kShowBookmarkBar;
 const char* const shared_key = kSharedKey;
-// With the removal of the kWebKitGlobalXXX prefs, we'll no longer have real
-// prefs using the overlay pref store, so make up keys here.
-const char mapped_overlay_key[] = "test.per_tab.javascript_enabled";
-const char mapped_underlay_key[] = "test.per_profile.javascript_enabled";
 
 }  // namespace
 
@@ -38,7 +34,6 @@
         overlay_(new OverlayUserPrefStore(underlay_.get())) {
     overlay_->RegisterOverlayPref(overlay_key);
     overlay_->RegisterOverlayPref(shared_key);
-    overlay_->RegisterOverlayPref(mapped_overlay_key, mapped_underlay_key);
   }
 
   ~OverlayUserPrefStoreTest() override {}
@@ -211,80 +206,6 @@
   EXPECT_TRUE(obs.changed_keys.empty());
 }
 
-// Check that names mapping works correctly.
-TEST_F(OverlayUserPrefStoreTest, NamesMapping) {
-  PrefStoreObserverMock obs;
-  overlay_->AddObserver(&obs);
-
-  const Value* value = NULL;
-
-  // Check that if there is no override in the overlay, changing underlay value
-  // is reported as changing an overlay value.
-  underlay_->SetValue(mapped_underlay_key, base::WrapUnique(new Value(42)),
-                      WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
-  obs.VerifyAndResetChangedKey(mapped_overlay_key);
-
-  // Check that underlay overwriting is reported.
-  underlay_->SetValue(mapped_underlay_key, base::WrapUnique(new Value(43)),
-                      WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
-  obs.VerifyAndResetChangedKey(mapped_overlay_key);
-
-  // Check that we get this value from the overlay with both keys
-  EXPECT_TRUE(overlay_->GetValue(mapped_overlay_key, &value));
-  EXPECT_TRUE(base::Value(43).Equals(value));
-  // In this case, overlay reads directly from the underlay.
-  EXPECT_TRUE(overlay_->GetValue(mapped_underlay_key, &value));
-  EXPECT_TRUE(base::Value(43).Equals(value));
-
-  // Check that overwriting change in overlay is reported.
-  overlay_->SetValue(mapped_overlay_key, base::WrapUnique(new Value(44)),
-                     WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
-  obs.VerifyAndResetChangedKey(mapped_overlay_key);
-
-  // Check that we get an overriden value from overlay, while reading the
-  // value from underlay still holds an old value.
-  EXPECT_TRUE(overlay_->GetValue(mapped_overlay_key, &value));
-  EXPECT_TRUE(base::Value(44).Equals(value));
-  EXPECT_TRUE(overlay_->GetValue(mapped_underlay_key, &value));
-  EXPECT_TRUE(base::Value(43).Equals(value));
-  EXPECT_TRUE(underlay_->GetValue(mapped_underlay_key, &value));
-  EXPECT_TRUE(base::Value(43).Equals(value));
-
-  // Check that hidden underlay change is not reported.
-  underlay_->SetValue(mapped_underlay_key, base::WrapUnique(new Value(45)),
-                      WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
-  EXPECT_TRUE(obs.changed_keys.empty());
-
-  // Check that overlay remove is reported.
-  overlay_->RemoveValue(mapped_overlay_key,
-                        WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
-  obs.VerifyAndResetChangedKey(mapped_overlay_key);
-
-  // Check that underlay remove is reported.
-  underlay_->RemoveValue(mapped_underlay_key,
-                         WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
-  obs.VerifyAndResetChangedKey(mapped_overlay_key);
-
-  // Check that value was removed.
-  EXPECT_FALSE(overlay_->GetValue(mapped_overlay_key, &value));
-  EXPECT_FALSE(overlay_->GetValue(mapped_underlay_key, &value));
-
-  // Check respecting of silence.
-  overlay_->SetValueSilently(mapped_overlay_key,
-                             base::WrapUnique(new Value(46)),
-                             WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
-  EXPECT_TRUE(obs.changed_keys.empty());
-
-  overlay_->RemoveObserver(&obs);
-
-  // Check successful unsubscription.
-  underlay_->SetValue(mapped_underlay_key, base::WrapUnique(new Value(47)),
-                      WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
-  overlay_->SetValue(mapped_overlay_key, base::WrapUnique(new Value(48)),
-                     WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
-  EXPECT_TRUE(obs.changed_keys.empty());
-}
-
 // Check that mutable values are removed correctly.
 TEST_F(OverlayUserPrefStoreTest, ClearMutableValues) {
   // Set in overlay and underlay the same preference.
@@ -315,10 +236,6 @@
                       WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
   overlay_->SetValue(shared_key, base::WrapUnique(new Value(43)),
                      WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
-  underlay_->SetValue(mapped_underlay_key, base::WrapUnique(new Value(42)),
-                      WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
-  overlay_->SetValue(mapped_overlay_key, base::WrapUnique(new Value(43)),
-                     WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
 
   auto values = overlay_->GetValues();
   const Value* value = nullptr;
@@ -333,11 +250,6 @@
   // Check that the overlay is preferred.
   ASSERT_TRUE(values->Get(shared_key, &value));
   EXPECT_TRUE(base::Value(43).Equals(value));
-
-  // Check that mapping works.
-  ASSERT_TRUE(values->Get(mapped_overlay_key, &value));
-  EXPECT_TRUE(base::Value(43).Equals(value));
-  EXPECT_FALSE(values->Get(mapped_underlay_key, &value));
 }
 
 }  // namespace base
diff --git a/components/spellcheck/common/BUILD.gn b/components/spellcheck/common/BUILD.gn
index 69d4d0c..4806ceef 100644
--- a/components/spellcheck/common/BUILD.gn
+++ b/components/spellcheck/common/BUILD.gn
@@ -2,9 +2,10 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("//mojo/public/tools/bindings/mojom.gni")
+
 source_set("common") {
   sources = [
-    "spellcheck_bdict_language.h",
     "spellcheck_common.cc",
     "spellcheck_common.h",
     "spellcheck_features.cc",
@@ -18,11 +19,23 @@
   ]
 
   public_deps = [
+    ":interfaces",
     "//components/spellcheck:build_features",
   ]
+
   deps = [
     "//base:i18n",
     "//ipc",
     "//third_party/icu",
   ]
 }
+
+mojom("interfaces") {
+  sources = [
+    "spellcheck.mojom",
+  ]
+
+  public_deps = [
+    "//mojo/common:common_custom_types",
+  ]
+}
diff --git a/components/spellcheck/common/OWNERS b/components/spellcheck/common/OWNERS
index 42444bc..ef88cc7 100644
--- a/components/spellcheck/common/OWNERS
+++ b/components/spellcheck/common/OWNERS
@@ -1,2 +1,4 @@
 per-file *_messages*.h=set noparent
 per-file *_messages*.h=file://ipc/SECURITY_OWNERS
+per-file *.mojom=set noparent
+per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/components/spellcheck/common/spellcheck.mojom b/components/spellcheck/common/spellcheck.mojom
new file mode 100644
index 0000000..9195261
--- /dev/null
+++ b/components/spellcheck/common/spellcheck.mojom
@@ -0,0 +1,28 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+module spellcheck.mojom;
+
+import "mojo/common/file.mojom";
+
+// Render process interface exposed to the browser for receiving process-
+// wide spellcheck control and updates from the browser process.
+//
+interface SpellChecker {
+  // Initialize the render process spellchecker. Called after startup and
+  // also in response to a render process RequestDictionary request.
+  Initialize(array<SpellCheckBDictLanguage> dictionaries,
+             array<string> custom_words,
+             bool enable);
+
+  // Custom dictionary words have been added or removed: update the local
+  // custom word list.
+  CustomDictionaryChanged(array<string> words_added,
+                          array<string> words_removed);
+};
+
+struct SpellCheckBDictLanguage {
+  mojo.common.mojom.File? file;
+  string language;
+};
diff --git a/components/spellcheck/common/spellcheck_bdict_language.h b/components/spellcheck/common/spellcheck_bdict_language.h
deleted file mode 100644
index 95022944..0000000
--- a/components/spellcheck/common/spellcheck_bdict_language.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_SPELLCHECK_COMMON_SPELLCHECK_BDICT_LANGUAGE_H_
-#define COMPONENTS_SPELLCHECK_COMMON_SPELLCHECK_BDICT_LANGUAGE_H_
-
-#include <string>
-
-#include "ipc/ipc_platform_file.h"
-
-struct SpellCheckBDictLanguage {
-  IPC::PlatformFileForTransit file;
-  std::string language;
-};
-
-#endif  // COMPONENTS_SPELLCHECK_COMMON_SPELLCHECK_BDICT_LANGUAGE_H_
diff --git a/components/spellcheck/common/spellcheck_messages.h b/components/spellcheck/common/spellcheck_messages.h
index c36a6c83..e8e83a8 100644
--- a/components/spellcheck/common/spellcheck_messages.h
+++ b/components/spellcheck/common/spellcheck_messages.h
@@ -7,11 +7,9 @@
 
 #include <stdint.h>
 
-#include "components/spellcheck/common/spellcheck_bdict_language.h"
 #include "components/spellcheck/common/spellcheck_result.h"
 #include "components/spellcheck/spellcheck_build_features.h"
 #include "ipc/ipc_message_macros.h"
-#include "ipc/ipc_platform_file.h"
 
 #if !BUILDFLAG(ENABLE_SPELLCHECK)
 #error "Spellcheck should be enabled"
@@ -28,28 +26,8 @@
   IPC_STRUCT_TRAITS_MEMBER(replacement)
 IPC_STRUCT_TRAITS_END()
 
-IPC_STRUCT_TRAITS_BEGIN(SpellCheckBDictLanguage)
-  IPC_STRUCT_TRAITS_MEMBER(file)
-  IPC_STRUCT_TRAITS_MEMBER(language)
-IPC_STRUCT_TRAITS_END()
-
 // Messages sent from the browser to the renderer.
 
-IPC_MESSAGE_CONTROL1(SpellCheckMsg_EnableSpellCheck, bool)
-
-// Passes some initialization params from the browser to the renderer's
-// spellchecker. This can be called directly after startup or in (async)
-// response to a RequestDictionary ViewHost message.
-IPC_MESSAGE_CONTROL2(SpellCheckMsg_Init,
-                     std::vector<SpellCheckBDictLanguage> /* bdict_languages */,
-                     std::set<std::string> /* custom_dict_words */)
-
-// Words have been added and removed in the custom dictionary; update the local
-// custom word list.
-IPC_MESSAGE_CONTROL2(SpellCheckMsg_CustomDictionaryChanged,
-                     std::set<std::string> /* words_added */,
-                     std::set<std::string> /* words_removed */)
-
 #if !BUILDFLAG(USE_BROWSER_SPELLCHECKER)
 // Sends text-check results from the Spelling service when the service finishes
 // checking text received by a SpellCheckHostMsg_CallSpellingService message.
diff --git a/components/spellcheck/renderer/BUILD.gn b/components/spellcheck/renderer/BUILD.gn
index 2af3945f..96c1cb9 100644
--- a/components/spellcheck/renderer/BUILD.gn
+++ b/components/spellcheck/renderer/BUILD.gn
@@ -46,8 +46,10 @@
   deps = [
     "//base:i18n",
     "//components/spellcheck/common",
+    "//content/public/common",
     "//content/public/renderer",
     "//ipc",
+    "//services/service_manager/public/cpp",
     "//third_party/WebKit/public:blink",
     "//third_party/icu",
   ]
diff --git a/components/spellcheck/renderer/DEPS b/components/spellcheck/renderer/DEPS
index 16305c7..5911cd86 100644
--- a/components/spellcheck/renderer/DEPS
+++ b/components/spellcheck/renderer/DEPS
@@ -1,6 +1,9 @@
 include_rules = [
+  "+content/public/common",
   "+content/public/renderer",
   "+ipc",
-  "+third_party/WebKit/public",
+  "+mojo/public/cpp/bindings",
+  "+services/service_manager/public/cpp",
   "+third_party/hunspell",
+  "+third_party/WebKit/public",
 ]
diff --git a/components/spellcheck/renderer/spellcheck.cc b/components/spellcheck/renderer/spellcheck.cc
index cc9b2382..4ef53a06 100644
--- a/components/spellcheck/renderer/spellcheck.cc
+++ b/components/spellcheck/renderer/spellcheck.cc
@@ -20,16 +20,18 @@
 #include "build/build_config.h"
 #include "components/spellcheck/common/spellcheck_common.h"
 #include "components/spellcheck/common/spellcheck_features.h"
-#include "components/spellcheck/common/spellcheck_messages.h"
 #include "components/spellcheck/common/spellcheck_result.h"
 #include "components/spellcheck/common/spellcheck_switches.h"
 #include "components/spellcheck/renderer/spellcheck_language.h"
 #include "components/spellcheck/renderer/spellcheck_provider.h"
 #include "components/spellcheck/spellcheck_build_features.h"
+#include "content/public/common/service_manager_connection.h"
+#include "content/public/common/simple_connection_filter.h"
 #include "content/public/renderer/render_frame.h"
 #include "content/public/renderer/render_frame_visitor.h"
 #include "content/public/renderer/render_thread.h"
-#include "ipc/ipc_platform_file.h"
+#include "services/service_manager/public/cpp/bind_source_info.h"
+#include "services/service_manager/public/cpp/binder_registry.h"
 #include "third_party/WebKit/public/platform/WebString.h"
 #include "third_party/WebKit/public/platform/WebVector.h"
 #include "third_party/WebKit/public/web/WebLocalFrame.h"
@@ -149,7 +151,22 @@
 // and as such the SpellCheckProviders will never be notified of different
 // values.
 // TODO(groby): Simplify this.
-SpellCheck::SpellCheck() : spellcheck_enabled_(true) {}
+SpellCheck::SpellCheck() : spellcheck_enabled_(true) {
+  if (!content::ChildThread::Get())
+    return;  // Can be NULL in tests.
+
+  auto* service_manager_connection =
+      content::ChildThread::Get()->GetServiceManagerConnection();
+  DCHECK(service_manager_connection);
+
+  auto registry = base::MakeUnique<service_manager::BinderRegistry>();
+  registry->AddInterface(
+      base::Bind(&SpellCheck::SpellCheckerRequest, base::Unretained(this)),
+      base::ThreadTaskRunnerHandle::Get());
+
+  service_manager_connection->AddConnectionFilter(
+      base::MakeUnique<content::SimpleConnectionFilter>(std::move(registry)));
+}
 
 SpellCheck::~SpellCheck() {
 }
@@ -183,51 +200,46 @@
   }
 }
 
-bool SpellCheck::OnControlMessageReceived(const IPC::Message& message) {
-  bool handled = true;
-  IPC_BEGIN_MESSAGE_MAP(SpellCheck, message)
-    IPC_MESSAGE_HANDLER(SpellCheckMsg_Init, OnInit)
-    IPC_MESSAGE_HANDLER(SpellCheckMsg_CustomDictionaryChanged,
-                        OnCustomDictionaryChanged)
-    IPC_MESSAGE_HANDLER(SpellCheckMsg_EnableSpellCheck, OnEnableSpellCheck)
-    IPC_MESSAGE_UNHANDLED(handled = false)
-  IPC_END_MESSAGE_MAP()
-
-  return handled;
+void SpellCheck::SpellCheckerRequest(
+    const service_manager::BindSourceInfo& source_info,
+    spellcheck::mojom::SpellCheckerRequest request) {
+  spellchecker_bindings_.AddBinding(this, std::move(request));
 }
 
-void SpellCheck::OnInit(
-    const std::vector<SpellCheckBDictLanguage>& bdict_languages,
-    const std::set<std::string>& custom_words) {
+void SpellCheck::Initialize(
+    std::vector<spellcheck::mojom::SpellCheckBDictLanguagePtr> dictionaries,
+    const std::vector<std::string>& custom_words,
+    bool enable) {
   languages_.clear();
-  for (const auto& bdict_language : bdict_languages) {
-    AddSpellcheckLanguage(
-        IPC::PlatformFileForTransitToFile(bdict_language.file),
-        bdict_language.language);
-  }
 
-  custom_dictionary_.Init(custom_words);
+  for (const auto& dictionary : dictionaries)
+    AddSpellcheckLanguage(std::move(dictionary->file), dictionary->language);
+
+  custom_dictionary_.Init(
+      std::set<std::string>(custom_words.begin(), custom_words.end()));
 #if !BUILDFLAG(USE_BROWSER_SPELLCHECKER)
   PostDelayedSpellCheckTask(pending_request_param_.release());
 #endif
-}
 
-void SpellCheck::OnCustomDictionaryChanged(
-    const std::set<std::string>& words_added,
-    const std::set<std::string>& words_removed) {
-  custom_dictionary_.OnCustomDictionaryChanged(words_added, words_removed);
-  if (words_added.empty())
-    return;
-  DocumentMarkersRemover markersRemover(words_added);
-  content::RenderFrame::ForEach(&markersRemover);
-}
-
-void SpellCheck::OnEnableSpellCheck(bool enable) {
   spellcheck_enabled_ = enable;
   UpdateSpellcheckEnabled updater(enable);
   content::RenderFrame::ForEach(&updater);
 }
 
+void SpellCheck::CustomDictionaryChanged(
+    const std::vector<std::string>& words_added,
+    const std::vector<std::string>& words_removed) {
+  const std::set<std::string> added(words_added.begin(), words_added.end());
+
+  custom_dictionary_.OnCustomDictionaryChanged(
+      added, std::set<std::string>(words_removed.begin(), words_removed.end()));
+  if (added.empty())
+    return;
+
+  DocumentMarkersRemover markersRemover(added);
+  content::RenderFrame::ForEach(&markersRemover);
+}
+
 // TODO(groby): Make sure we always have a spelling engine, even before
 // AddSpellcheckLanguage() is called.
 void SpellCheck::AddSpellcheckLanguage(base::File file,
diff --git a/components/spellcheck/renderer/spellcheck.h b/components/spellcheck/renderer/spellcheck.h
index 4e85825..c5a839f7 100644
--- a/components/spellcheck/renderer/spellcheck.h
+++ b/components/spellcheck/renderer/spellcheck.h
@@ -15,11 +15,12 @@
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "base/strings/string16.h"
+#include "components/spellcheck/common/spellcheck.mojom.h"
 #include "components/spellcheck/renderer/custom_dictionary_engine.h"
 #include "components/spellcheck/spellcheck_build_features.h"
 #include "content/public/renderer/render_thread_observer.h"
+#include "mojo/public/cpp/bindings/binding_set.h"
 
-struct SpellCheckBDictLanguage;
 class SpellcheckLanguage;
 struct SpellCheckResult;
 
@@ -29,8 +30,8 @@
 template <typename T> class WebVector;
 }
 
-namespace IPC {
-class Message;
+namespace service_manager {
+struct BindSourceInfo;
 }
 
 // TODO(morrita): Needs reorg with SpellCheckProvider.
@@ -38,7 +39,8 @@
 // Shared spellchecking logic/data for a RenderProcess. All RenderViews use
 // this object to perform spellchecking tasks.
 class SpellCheck : public content::RenderThreadObserver,
-                   public base::SupportsWeakPtr<SpellCheck> {
+                   public base::SupportsWeakPtr<SpellCheck>,
+                   public spellcheck::mojom::SpellChecker {
  public:
   // TODO(groby): I wonder if this can be private, non-mac only.
   class SpellcheckRequest;
@@ -121,15 +123,18 @@
        const std::vector<std::vector<base::string16>>& suggestions_list,
        std::vector<base::string16>* optional_suggestions);
 
-  // RenderThreadObserver implementation:
-   bool OnControlMessageReceived(const IPC::Message& message) override;
+   // Binds requests for the SpellChecker interface.
+   void SpellCheckerRequest(const service_manager::BindSourceInfo& source_info,
+                            spellcheck::mojom::SpellCheckerRequest request);
 
-  // Message handlers.
-   void OnInit(const std::vector<SpellCheckBDictLanguage>& bdict_languages,
-               const std::set<std::string>& custom_words);
-   void OnCustomDictionaryChanged(const std::set<std::string>& words_added,
-                                  const std::set<std::string>& words_removed);
-  void OnEnableSpellCheck(bool enable);
+   // spellcheck::mojom::SpellChecker:
+   void Initialize(
+       std::vector<spellcheck::mojom::SpellCheckBDictLanguagePtr> dictionaries,
+       const std::vector<std::string>& custom_words,
+       bool enable) override;
+   void CustomDictionaryChanged(
+       const std::vector<std::string>& words_added,
+       const std::vector<std::string>& words_removed) override;
 
 #if !BUILDFLAG(USE_BROWSER_SPELLCHECKER)
   // Posts delayed spellcheck task and clear it if any.
@@ -147,6 +152,9 @@
   std::unique_ptr<SpellcheckRequest> pending_request_param_;
 #endif
 
+  // Bindings for SpellChecker clients.
+  mojo::BindingSet<spellcheck::mojom::SpellChecker> spellchecker_bindings_;
+
   // A vector of objects used to actually check spelling, one for each enabled
   // language.
   std::vector<std::unique_ptr<SpellcheckLanguage>> languages_;
diff --git a/components/translate/core/browser/translate_ranker_impl.cc b/components/translate/core/browser/translate_ranker_impl.cc
index b68c27f..1a4bcc1 100644
--- a/components/translate/core/browser/translate_ranker_impl.cc
+++ b/components/translate/core/browser/translate_ranker_impl.cc
@@ -152,8 +152,6 @@
         base::Bind(&TranslateRankerImpl::OnModelAvailable,
                    weak_ptr_factory_.GetWeakPtr()),
         model_path, model_url, kUmaPrefix);
-    // Kick off the initial load from cache.
-    model_loader_->NotifyOfRankerActivity();
   }
 }
 
diff --git a/components/ukm/debug_page/BUILD.gn b/components/ukm/debug_page/BUILD.gn
new file mode 100644
index 0000000..9fa0912
--- /dev/null
+++ b/components/ukm/debug_page/BUILD.gn
@@ -0,0 +1,17 @@
+# Copyright 2017 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+static_library("debug_page") {
+  sources = [
+    "debug_page.cc",
+    "debug_page.h",
+  ]
+
+  deps = [
+    "//base",
+    "//components/ukm",
+    "//content/public/browser",
+    "//url",
+  ]
+}
diff --git a/components/ukm/debug_page/DEPS b/components/ukm/debug_page/DEPS
new file mode 100644
index 0000000..fe7bb13
--- /dev/null
+++ b/components/ukm/debug_page/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+  "+content/public",
+]
diff --git a/components/ukm/debug_page/debug_page.cc b/components/ukm/debug_page/debug_page.cc
new file mode 100644
index 0000000..c3fb9e8d8
--- /dev/null
+++ b/components/ukm/debug_page/debug_page.cc
@@ -0,0 +1,85 @@
+// Copyright (c) 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/ukm/debug_page/debug_page.h"
+
+#include <inttypes.h>
+
+#include "base/memory/ref_counted_memory.h"
+#include "base/strings/stringprintf.h"
+#include "components/ukm/ukm_entry.h"
+#include "components/ukm/ukm_service.h"
+#include "components/ukm/ukm_source.h"
+#include "url/gurl.h"
+
+namespace ukm {
+namespace debug {
+
+DebugPage::DebugPage(ServiceGetter service_getter)
+    : service_getter_(service_getter) {}
+
+DebugPage::~DebugPage() {}
+
+std::string DebugPage::GetSource() const {
+  return "ukm";
+}
+
+std::string DebugPage::GetMimeType(const std::string& path) const {
+  return "text/html";
+}
+
+void DebugPage::StartDataRequest(
+    const std::string& path,
+    const content::ResourceRequestInfo::WebContentsGetter& wc_getter,
+    const content::URLDataSource::GotDataCallback& callback) {
+  std::string data;
+  data.append(R"""(<!DOCTYPE html>
+  <html>
+    <head>
+      <meta http-equiv="Content-Security-Policy"
+            content="object-src 'none'; script-src 'none'">
+      <title>UKM Debug</title>
+    </head>
+    <body>
+      <h1>UKM Debug page</h1>
+  )""");
+  UkmService* ukm_service = service_getter_.Run();
+  if (ukm_service) {
+    data.append(
+        base::StringPrintf("<p>IsEnabled:%s</p>",
+                           ukm_service->recording_enabled_ ? "True" : "False"));
+    data.append(base::StringPrintf("<p>ClientId:%" PRIu64 "</p>",
+                                   ukm_service->client_id_));
+    data.append(
+        base::StringPrintf("<p>SessionId:%d</p>", ukm_service->session_id_));
+
+    data.append("<h2>Sources</h2>");
+    for (const auto& kv : ukm_service->sources_) {
+      const auto* src = kv.second.get();
+      data.append(base::StringPrintf("<p>Id:%d Url:%s</p>", src->id(),
+                                     src->url().spec().c_str()));
+    }
+
+    data.append("<h2>Entries</h2>");
+    for (const auto& v : ukm_service->entries_) {
+      const auto* entry = v.get();
+      data.append(base::StringPrintf("<h3>Id:%d Hash:%" PRIu64 "</h3>",
+                                     entry->source_id(), entry->event_hash()));
+    }
+  }
+
+  data.append(R"""(
+    </body>
+  </html>
+  )""");
+
+  callback.Run(base::RefCountedString::TakeString(&data));
+}
+
+bool DebugPage::AllowCaching() const {
+  return false;
+}
+
+}  // namespace debug
+}  // namespace ukm
diff --git a/components/ukm/debug_page/debug_page.h b/components/ukm/debug_page/debug_page.h
new file mode 100644
index 0000000..52ae7a1
--- /dev/null
+++ b/components/ukm/debug_page/debug_page.h
@@ -0,0 +1,47 @@
+// Copyright (c) 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_UKM_DEBUG_PAGE_REQUEST_JOB_H_
+#define COMPONENTS_UKM_DEBUG_PAGE_REQUEST_JOB_H_
+
+#include <string>
+
+#include "base/callback.h"
+#include "base/macros.h"
+#include "content/public/browser/url_data_source.h"
+
+namespace ukm {
+
+class UkmService;
+
+namespace debug {
+
+// Implements the chrome://ukm page for debugging UKM state.
+class DebugPage : public content::URLDataSource {
+ public:
+  typedef base::Callback<UkmService*()> ServiceGetter;
+
+  explicit DebugPage(ServiceGetter service_getter);
+
+  // content::URLDataSource:
+  std::string GetSource() const override;
+  std::string GetMimeType(const std::string& path) const override;
+  void StartDataRequest(
+      const std::string& path,
+      const content::ResourceRequestInfo::WebContentsGetter& wc_getter,
+      const content::URLDataSource::GotDataCallback& callback) override;
+  bool AllowCaching() const override;
+
+ private:
+  ~DebugPage() override;
+
+  ServiceGetter service_getter_;
+
+  DISALLOW_IMPLICIT_CONSTRUCTORS(DebugPage);
+};
+
+}  // namespace debug
+}  // namespace ukm
+
+#endif  // COMPONENTS_UKM_DEBUG_PAGE_REQUEST_JOB_H_
diff --git a/components/ukm/ukm_service.h b/components/ukm/ukm_service.h
index 9b493a2a..584be39f9 100644
--- a/components/ukm/ukm_service.h
+++ b/components/ukm/ukm_service.h
@@ -47,6 +47,10 @@
 class UkmEntryBuilder;
 class UkmSource;
 
+namespace debug {
+class DebugPage;
+}
+
 // This feature controls whether UkmService should be created.
 extern const base::Feature kUkmFeature;
 
@@ -117,6 +121,7 @@
   }
 
  private:
+  friend ::ukm::debug::DebugPage;
   friend autofill::AutofillMetrics;
   friend payments::JourneyLogger;
   friend PluginInfoMessageFilter;
diff --git a/components/viz/frame_sinks/gpu_compositor_frame_sink.cc b/components/viz/frame_sinks/gpu_compositor_frame_sink.cc
index 683374f..81acb03 100644
--- a/components/viz/frame_sinks/gpu_compositor_frame_sink.cc
+++ b/components/viz/frame_sinks/gpu_compositor_frame_sink.cc
@@ -36,8 +36,8 @@
 
 GpuCompositorFrameSink::~GpuCompositorFrameSink() {}
 
-void GpuCompositorFrameSink::EvictFrame() {
-  support_->EvictFrame();
+void GpuCompositorFrameSink::EvictCurrentSurface() {
+  support_->EvictCurrentSurface();
 }
 
 void GpuCompositorFrameSink::SetNeedsBeginFrame(bool needs_begin_frame) {
diff --git a/components/viz/frame_sinks/gpu_compositor_frame_sink.h b/components/viz/frame_sinks/gpu_compositor_frame_sink.h
index beb2bd2..1d0e0433 100644
--- a/components/viz/frame_sinks/gpu_compositor_frame_sink.h
+++ b/components/viz/frame_sinks/gpu_compositor_frame_sink.h
@@ -37,7 +37,7 @@
   ~GpuCompositorFrameSink() override;
 
   // cc::mojom::MojoCompositorFrameSink:
-  void EvictFrame() override;
+  void EvictCurrentSurface() override;
   void SetNeedsBeginFrame(bool needs_begin_frame) override;
   void SubmitCompositorFrame(const cc::LocalSurfaceId& local_surface_id,
                              cc::CompositorFrame frame) override;
diff --git a/components/viz/frame_sinks/gpu_root_compositor_frame_sink.cc b/components/viz/frame_sinks/gpu_root_compositor_frame_sink.cc
index 5aa6bad..b614fe8 100644
--- a/components/viz/frame_sinks/gpu_root_compositor_frame_sink.cc
+++ b/components/viz/frame_sinks/gpu_root_compositor_frame_sink.cc
@@ -75,8 +75,8 @@
   display_->SetLocalSurfaceId(local_surface_id, scale_factor);
 }
 
-void GpuRootCompositorFrameSink::EvictFrame() {
-  support_->EvictFrame();
+void GpuRootCompositorFrameSink::EvictCurrentSurface() {
+  support_->EvictCurrentSurface();
 }
 
 void GpuRootCompositorFrameSink::SetNeedsBeginFrame(bool needs_begin_frame) {
diff --git a/components/viz/frame_sinks/gpu_root_compositor_frame_sink.h b/components/viz/frame_sinks/gpu_root_compositor_frame_sink.h
index 5dceef59..dc973c2 100644
--- a/components/viz/frame_sinks/gpu_root_compositor_frame_sink.h
+++ b/components/viz/frame_sinks/gpu_root_compositor_frame_sink.h
@@ -55,7 +55,7 @@
                          float scale_factor) override;
 
   // cc::mojom::MojoCompositorFrameSink:
-  void EvictFrame() override;
+  void EvictCurrentSurface() override;
   void SetNeedsBeginFrame(bool needs_begin_frame) override;
   void SubmitCompositorFrame(const cc::LocalSurfaceId& local_surface_id,
                              cc::CompositorFrame frame) override;
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
index 8b8f8b33..4503ca0 100644
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -323,6 +323,8 @@
     "appcache/appcache_navigation_handle.h",
     "appcache/appcache_navigation_handle_core.cc",
     "appcache/appcache_navigation_handle_core.h",
+    "appcache/appcache_network_service_handler.cc",
+    "appcache/appcache_network_service_handler.h",
     "appcache/appcache_policy.h",
     "appcache/appcache_quota_client.cc",
     "appcache/appcache_quota_client.h",
diff --git a/content/browser/accessibility/browser_accessibility_manager.cc b/content/browser/accessibility/browser_accessibility_manager.cc
index cb926b1..264a86b 100644
--- a/content/browser/accessibility/browser_accessibility_manager.cc
+++ b/content/browser/accessibility/browser_accessibility_manager.cc
@@ -387,6 +387,13 @@
     connected_to_parent_tree_node_ = false;
   }
 
+  // Fire any events related to changes to the tree.
+  for (auto& event : tree_events_) {
+    NotifyAccessibilityEvent(BrowserAccessibilityEvent::FromTreeChange,
+                             event.first, event.second);
+  }
+  tree_events_.clear();
+
   // Based on the changes to the tree, first fire focus events if needed.
   // Screen readers might not do the right thing if they're not aware of what
   // has focus, so always try that first. Nothing will be fired if the window
@@ -394,8 +401,8 @@
   GetRootManager()->FireFocusEventsIfNeeded(
       BrowserAccessibilityEvent::FromBlink);
 
-  // Now iterate over the events again and fire the events other than focus
-  // events.
+  // Now iterate over the events from the renderer and fire the events
+  // other than focus events.
   for (uint32_t index = 0; index < details.size(); index++) {
     const AXEventNotificationDetails& detail = details[index];
 
@@ -1184,11 +1191,10 @@
     BrowserAccessibility* object = GetFromAXNode(created_node);
     if (object && object->HasStringAttribute(ui::AX_ATTR_LIVE_STATUS)) {
       if (object->GetRole() == ui::AX_ROLE_ALERT) {
-        NotifyAccessibilityEvent(BrowserAccessibilityEvent::FromTreeChange,
-                                 ui::AX_EVENT_ALERT, object);
+        tree_events_.push_back(std::make_pair(ui::AX_EVENT_ALERT, object));
       } else {
-        NotifyAccessibilityEvent(BrowserAccessibilityEvent::FromTreeChange,
-                                 ui::AX_EVENT_LIVE_REGION_CREATED, object);
+        tree_events_.push_back(
+            std::make_pair(ui::AX_EVENT_LIVE_REGION_CREATED, object));
       }
     }
   }
diff --git a/content/browser/accessibility/browser_accessibility_manager.h b/content/browser/accessibility/browser_accessibility_manager.h
index a0bb255..6bd0d1b 100644
--- a/content/browser/accessibility/browser_accessibility_manager.h
+++ b/content/browser/accessibility/browser_accessibility_manager.h
@@ -441,6 +441,11 @@
   // A mapping from a node id to its wrapper of type BrowserAccessibility.
   base::hash_map<int32_t, BrowserAccessibility*> id_wrapper_map_;
 
+  // A list of accessibility events to fire based on changes to the
+  // accessibility tree. Only used within the scope of one call to
+  // OnAccessibilityEvents, so it's safe to store raw pointers.
+  std::vector<std::pair<ui::AXEvent, BrowserAccessibility*>> tree_events_;
+
   // True if the user has initiated a navigation to another page.
   bool user_is_navigating_away_;
 
diff --git a/content/browser/accessibility/dump_accessibility_events_browsertest.cc b/content/browser/accessibility/dump_accessibility_events_browsertest.cc
index d099d9e7..0d2e892 100644
--- a/content/browser/accessibility/dump_accessibility_events_browsertest.cc
+++ b/content/browser/accessibility/dump_accessibility_events_browsertest.cc
@@ -152,7 +152,6 @@
 }
 
 // TODO(dmazzoni): port these tests to run on all platforms.
-// TODO(crbug.com/617146): All tests flaky on Windows 8.
 #if defined(OS_WIN) || defined(OS_MACOSX)
 
 // This is tasteless, but then so's the snippet it's replacing.
@@ -162,6 +161,12 @@
 #define DISABLED_ON_WIN(name) name
 #endif
 
+#if defined(OS_MACOSX)
+#define DISABLED_ON_MAC(name) DISABLED_##name
+#else
+#define DISABLED_ON_MAC(name) name
+#endif
+
 #if defined(OS_WIN) || defined(OS_MACOSX)
 #define DISABLED_ON_WIN_AND_MAC(name) DISABLED_ ## name
 #else
@@ -173,27 +178,24 @@
   RunEventTest(FILE_PATH_LITERAL("aria-combo-box-collapse.html"));
 }
 
-// https://crbug.com/652706
 IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
-    DISABLED_ON_WIN(AccessibilityEventsAriaComboBoxExpand)) {
+                       AccessibilityEventsAriaComboBoxExpand) {
   RunEventTest(FILE_PATH_LITERAL("aria-combo-box-expand.html"));
 }
 
-// Mac: https://crbug.com/615411, Win: https://crbug.com/652706
+// https://crbug.com/719030
 IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
     DISABLED_ON_WIN_AND_MAC(AccessibilityEventsAriaComboBoxFocus)) {
   RunEventTest(FILE_PATH_LITERAL("aria-combo-box-focus.html"));
 }
 
-// https://crbug.com/652706
 IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
-    DISABLED_ON_WIN(AccessibilityEventsAriaComboBoxNext)) {
+                       AccessibilityEventsAriaComboBoxNext) {
   RunEventTest(FILE_PATH_LITERAL("aria-combo-box-next.html"));
 }
 
-// https://crbug.com/652706
 IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
-    DISABLED_ON_WIN(AccessibilityEventsAddAlert)) {
+                       AccessibilityEventsAddAlert) {
   RunEventTest(FILE_PATH_LITERAL("add-alert.html"));
 }
 
@@ -247,16 +249,10 @@
   RunEventTest(FILE_PATH_LITERAL("inner-html-change.html"));
 }
 
-#if defined(OS_MACOSX)
-// Mac failures: http://crbug.com/598527.
-#define MAYBE_AccessibilityEventsInputTypeTextValueChanged \
-    DISABLED_AccessibilityEventsInputTypeTextValueChanged
-#else
-#define MAYBE_AccessibilityEventsInputTypeTextValueChanged \
-    AccessibilityEventsInputTypeTextValueChanged
-#endif
-IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
-                       MAYBE_AccessibilityEventsInputTypeTextValueChanged) {
+// http://crbug.com/719030
+IN_PROC_BROWSER_TEST_F(
+    DumpAccessibilityEventsTest,
+    DISABLED_ON_MAC(AccessibilityEventsInputTypeTextValueChanged)) {
   RunEventTest(FILE_PATH_LITERAL("input-type-text-value-changed.html"));
 }
 
@@ -265,8 +261,6 @@
   RunEventTest(FILE_PATH_LITERAL("listbox-focus.html"));
 }
 
-// Flaky on Windows: http://crbug.com/486861
-// Flaky on Mac: http://crbug.com/588271
 IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
                        AccessibilityEventsListboxNext) {
   RunEventTest(FILE_PATH_LITERAL("listbox-next.html"));
@@ -277,7 +271,7 @@
   RunEventTest(FILE_PATH_LITERAL("menulist-collapse.html"));
 }
 
-// Mac: https://crbug.com/615411, Win: https://crbug.com/652706
+// https://crbug.com/719030
 IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
     DISABLED_ON_WIN_AND_MAC(AccessibilityEventsMenuListExpand)) {
   RunEventTest(FILE_PATH_LITERAL("menulist-expand.html"));
@@ -288,13 +282,13 @@
   RunEventTest(FILE_PATH_LITERAL("menulist-focus.html"));
 }
 
-// Mac: https://crbug.com/615411, Win: https://crbug.com/652706
+// https://crbug.com/719030
 IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
     DISABLED_ON_WIN_AND_MAC(AccessibilityEventsMenuListNext)) {
   RunEventTest(FILE_PATH_LITERAL("menulist-next.html"));
 }
 
-// Flaky on Windows: http://crbug.com/486861
+// http://crbug.com/719030
 IN_PROC_BROWSER_TEST_F(DumpAccessibilityEventsTest,
                        DISABLED_AccessibilityEventsMenuListPopup) {
   RunEventTest(FILE_PATH_LITERAL("menulist-popup.html"));
diff --git a/content/browser/appcache/appcache_job.cc b/content/browser/appcache/appcache_job.cc
index 0666c92..27a5897 100644
--- a/content/browser/appcache/appcache_job.cc
+++ b/content/browser/appcache/appcache_job.cc
@@ -42,6 +42,10 @@
   return nullptr;
 }
 
+AppCacheURLLoaderJob* AppCacheJob::AsURLLoaderJob() {
+  return nullptr;
+}
+
 AppCacheJob::AppCacheJob() : weak_factory_(this) {}
 
 }  // namespace content
diff --git a/content/browser/appcache/appcache_job.h b/content/browser/appcache/appcache_job.h
index a28bc33..bc7a14b 100644
--- a/content/browser/appcache/appcache_job.h
+++ b/content/browser/appcache/appcache_job.h
@@ -25,6 +25,7 @@
 class AppCacheHost;
 class AppCacheRequest;
 class AppCacheStorage;
+class AppCacheURLLoaderJob;
 class URLRequestJob;
 
 // Interface for an AppCache job. This is used to send data stored in the
@@ -100,9 +101,13 @@
   virtual const GURL& GetURL() const = 0;
 
   // Returns the underlying URLRequestJob if any. This only applies to
-  // AppCaches loaded via the URLRequest mechanism.
+  // AppCaches loaded via the URLLoader mechanism.
   virtual net::URLRequestJob* AsURLRequestJob();
 
+  // Returns the underlying ApppCacheURLLoaderJob if any. This only applies to
+  // AppCaches loaded via the URLRequest mechanism.
+  virtual AppCacheURLLoaderJob* AsURLLoaderJob();
+
  protected:
   AppCacheJob();
 
diff --git a/content/browser/appcache/appcache_network_service_handler.cc b/content/browser/appcache/appcache_network_service_handler.cc
new file mode 100644
index 0000000..3029421d1
--- /dev/null
+++ b/content/browser/appcache/appcache_network_service_handler.cc
@@ -0,0 +1,68 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/appcache/appcache_network_service_handler.h"
+#include "base/bind.h"
+#include "base/logging.h"
+#include "content/browser/appcache/appcache_entry.h"
+#include "content/browser/appcache/appcache_host.h"
+#include "content/browser/appcache/appcache_navigation_handle_core.h"
+#include "content/browser/appcache/appcache_policy.h"
+#include "content/browser/appcache/appcache_request.h"
+#include "content/public/browser/browser_thread.h"
+
+namespace content {
+
+AppCacheNetworkServiceHandler::AppCacheNetworkServiceHandler(
+    std::unique_ptr<ResourceRequest> resource_request,
+    AppCacheNavigationHandleCore* navigation_handle_core,
+    base::Callback<void(mojom::URLLoaderFactoryPtrInfo,
+                        std::unique_ptr<ResourceRequest>)> callback)
+    : resource_request_(std::move(resource_request)),
+      callback_(callback),
+      storage_(navigation_handle_core->host()->storage()),
+      host_(navigation_handle_core->host()) {}
+
+AppCacheNetworkServiceHandler::~AppCacheNetworkServiceHandler() {}
+
+void AppCacheNetworkServiceHandler::Start() {
+  storage_->FindResponseForMainRequest(resource_request_->url, GURL(), this);
+}
+
+void AppCacheNetworkServiceHandler::OnMainResponseFound(
+    const GURL& url,
+    const AppCacheEntry& entry,
+    const GURL& fallback_url,
+    const AppCacheEntry& fallback_entry,
+    int64_t cache_id,
+    int64_t group_id,
+    const GURL& manifest_url) {
+  AppCachePolicy* policy = host_->service()->appcache_policy();
+  bool was_blocked_by_policy =
+      !manifest_url.is_empty() && policy &&
+      !policy->CanLoadAppCache(manifest_url, host_->first_party_url());
+
+  if (was_blocked_by_policy || !entry.has_response_id() ||
+      cache_id == kAppCacheNoCacheId) {
+    BrowserThread::PostTask(
+        BrowserThread::UI, FROM_HERE,
+        base::Bind(callback_,
+                   base::Passed(mojom::URLLoaderFactoryPtrInfo()),
+                   base::Passed(std::move(resource_request_))));
+  } else {
+    DLOG(WARNING) << "AppCache found for url " << url
+                  << " falling back to network for now\n";
+    // TODO(ananta)
+    // Pass a URLLoaderFactory pointer which supports serving URL requests from
+    // the cache. The other option is to create the loader directly here.
+    BrowserThread::PostTask(
+        BrowserThread::UI, FROM_HERE,
+        base::Bind(callback_,
+                   base::Passed(mojom::URLLoaderFactoryPtrInfo()),
+                   base::Passed(std::move(resource_request_))));
+  }
+  delete this;
+}
+
+}  // namespace content
\ No newline at end of file
diff --git a/content/browser/appcache/appcache_network_service_handler.h b/content/browser/appcache/appcache_network_service_handler.h
new file mode 100644
index 0000000..1a1e27b
--- /dev/null
+++ b/content/browser/appcache/appcache_network_service_handler.h
@@ -0,0 +1,83 @@
+// Copyright (c) 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_BROWSER_APPCACHE_APPCACHE_NETWORK_SERVICE_HANDLER_
+#define CONTENT_BROWSER_APPCACHE_APPCACHE_NETWORK_SERVICE_HANDLER_
+
+#include <memory>
+
+#include "base/macros.h"
+#include "content/browser/appcache/appcache_service_impl.h"
+#include "content/browser/appcache/appcache_storage.h"
+#include "content/common/content_export.h"
+#include "content/common/url_loader_factory.mojom.h"
+#include "content/public/common/resource_type.h"
+
+namespace content {
+class AppCacheEntry;
+class AppCacheHost;
+class AppCacheNavigationHandleCore;
+class AppCacheStorage;
+class ResourceContext;
+struct ResourceRequest;
+
+// This class is instantiated during navigation, to check if the URL being
+// navigated to can be served out of the AppCache.
+// The AppCacheRequestHandler class provides this functionality as well.
+// However it is tightly coupled with the underlying job and the lifetime
+// of that class gets a touch complicated. The AppCacheRequestHandler is
+// generally associated with a request and it dies when the request goes away.
+// For this case, we are just checking if the URL can be served out of the
+// cache. If yes, then the plan is to create a URLLoaderFactory which can serve
+// URL requests from the cache.
+// TODO(ananta)
+// Look into whether we can get rid of this class when the overall picture of
+// how AppCache interacts with the network service gets clearer.
+class CONTENT_EXPORT AppCacheNetworkServiceHandler
+    : public AppCacheStorage::Delegate {
+ public:
+  AppCacheNetworkServiceHandler(
+      std::unique_ptr<ResourceRequest> resource_request,
+      AppCacheNavigationHandleCore* navigation_handle_core,
+      base::Callback<void(mojom::URLLoaderFactoryPtrInfo,
+                          std::unique_ptr<ResourceRequest>)> callback);
+
+  ~AppCacheNetworkServiceHandler() override;
+
+  // Called to start the process of looking up the URL in the AppCache
+  // database,
+  void Start();
+
+  // AppCacheStorage::Delegate methods
+  // The AppCacheNetworkServiceHandler instance is deleted on return from this
+  // function.
+  void OnMainResponseFound(const GURL& url,
+                           const AppCacheEntry& entry,
+                           const GURL& fallback_url,
+                           const AppCacheEntry& fallback_entry,
+                           int64_t cache_id,
+                           int64_t group_id,
+                           const GURL& mainfest_url) override;
+
+ private:
+  std::unique_ptr<ResourceRequest> resource_request_;
+
+  // Callback to invoke when we make a determination on whether the request is
+  // to be served from the cache or network.
+  base::Callback<void(mojom::URLLoaderFactoryPtrInfo,
+                      std::unique_ptr<ResourceRequest>)> callback_;
+
+  AppCacheStorage* storage_;
+
+  // The precreated host pointer from the AppCacheNavigationHandleCore class.
+  // The ownership of this pointer stays with the AppCacheNavigationHandleCore
+  // class.
+  AppCacheHost* host_;
+
+  DISALLOW_COPY_AND_ASSIGN(AppCacheNetworkServiceHandler);
+};
+
+}  // namespace content
+
+#endif  // CONTENT_BROWSER_APPCACHE_APPCACHE_NETWORK_SERVICE_HANDLER_
diff --git a/content/browser/appcache/appcache_request_handler.cc b/content/browser/appcache/appcache_request_handler.cc
index 870fa7d..d9dd4f12 100644
--- a/content/browser/appcache/appcache_request_handler.cc
+++ b/content/browser/appcache/appcache_request_handler.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "content/browser/appcache/appcache.h"
 #include "content/browser/appcache/appcache_backend_impl.h"
+#include "content/browser/appcache/appcache_network_service_handler.h"
 #include "content/browser/appcache/appcache_policy.h"
 #include "content/browser/appcache/appcache_request.h"
 #include "content/browser/appcache/appcache_url_request_job.h"
@@ -223,6 +224,23 @@
   CompleteCrossSiteTransfer(old_process_id_, old_host_id_);
 }
 
+// static.
+void AppCacheRequestHandler::InitializeForNavigationNetworkService(
+    std::unique_ptr<ResourceRequest> resource_request,
+    ResourceContext* resource_context,
+    AppCacheNavigationHandleCore* navigation_handle_core,
+    ResourceType resource_type,
+    base::Callback<void(mojom::URLLoaderFactoryPtrInfo,
+                        std::unique_ptr<ResourceRequest>)> callback) {
+  // This instance is deleted when it receives a callback from the
+  // AppCacheStorage class which contains information about the AppCache
+  // status for the URL being served by the |resource_request|.
+  AppCacheNetworkServiceHandler* network_service_handler =
+      new AppCacheNetworkServiceHandler(
+          std::move(resource_request), navigation_handle_core, callback);
+  network_service_handler->Start();
+}
+
 void AppCacheRequestHandler::OnDestructionImminent(AppCacheHost* host) {
   storage()->CancelDelegateCallbacks(this);
   host_ = NULL;  // no need to RemoveObserver, the host is being deleted
diff --git a/content/browser/appcache/appcache_request_handler.h b/content/browser/appcache/appcache_request_handler.h
index 3b7e167..0e3450f 100644
--- a/content/browser/appcache/appcache_request_handler.h
+++ b/content/browser/appcache/appcache_request_handler.h
@@ -17,6 +17,7 @@
 #include "content/browser/appcache/appcache_host.h"
 #include "content/browser/appcache/appcache_service_impl.h"
 #include "content/common/content_export.h"
+#include "content/common/url_loader_factory.mojom.h"
 #include "content/public/common/resource_type.h"
 
 namespace net {
@@ -26,9 +27,11 @@
 
 namespace content {
 class AppCacheJob;
+class AppCacheNavigationHandleCore;
 class AppCacheRequest;
 class AppCacheRequestHandlerTest;
 class AppCacheURLRequestJob;
+class ResourceContext;
 
 // An instance is created for each net::URLRequest. The instance survives all
 // http transactions involved in the processing of its net::URLRequest, and is
@@ -69,6 +72,20 @@
            type == RESOURCE_TYPE_SHARED_WORKER;
   }
 
+  // PlzNavigate and --enable-network-service.
+  // Checks whether the |resource_request| can be served out of the AppCache
+  // and invokes the |callback| accordingly. If the request can be served
+  // out of the AppCache, we could return a URLLoaderFactory which can serve
+  // requests out of the AppCache to the callback, or we could create the
+  // loader right there. At this point we are leaning towards the latter.
+  static void InitializeForNavigationNetworkService(
+      std::unique_ptr<ResourceRequest> resource_request,
+      ResourceContext* resource_context,
+      AppCacheNavigationHandleCore* navigation_handle_core,
+      ResourceType resource_type,
+      base::Callback<void(mojom::URLLoaderFactoryPtrInfo,
+                          std::unique_ptr<ResourceRequest>)> callback);
+
  private:
   friend class AppCacheHost;
 
diff --git a/content/browser/appcache/appcache_url_loader_request.cc b/content/browser/appcache/appcache_url_loader_request.cc
index e049c25..c85de029 100644
--- a/content/browser/appcache/appcache_url_loader_request.cc
+++ b/content/browser/appcache/appcache_url_loader_request.cc
@@ -8,25 +8,28 @@
 namespace content {
 
 // static
-AppCacheURLLoaderRequest* AppCacheURLLoaderRequest::Create(
-    const ResourceRequest& request) {
-  return new AppCacheURLLoaderRequest(request);
+std::unique_ptr<AppCacheURLLoaderRequest> AppCacheURLLoaderRequest::Create(
+    std::unique_ptr<ResourceRequest> request) {
+  return std::unique_ptr<AppCacheURLLoaderRequest>(
+      new AppCacheURLLoaderRequest(std::move(request)));
 }
 
+AppCacheURLLoaderRequest::~AppCacheURLLoaderRequest() {}
+
 const GURL& AppCacheURLLoaderRequest::GetURL() const {
-  return request_.url;
+  return request_->url;
 }
 
 const std::string& AppCacheURLLoaderRequest::GetMethod() const {
-  return request_.method;
+  return request_->method;
 }
 
 const GURL& AppCacheURLLoaderRequest::GetFirstPartyForCookies() const {
-  return request_.first_party_for_cookies;
+  return request_->first_party_for_cookies;
 }
 
 const GURL AppCacheURLLoaderRequest::GetReferrer() const {
-  return request_.referrer;
+  return request_->referrer;
 }
 
 bool AppCacheURLLoaderRequest::IsSuccess() const {
@@ -51,13 +54,11 @@
 }
 
 ResourceRequest* AppCacheURLLoaderRequest::GetResourceRequest() {
-  return &request_;
+  return request_.get();
 }
 
 AppCacheURLLoaderRequest::AppCacheURLLoaderRequest(
-    const ResourceRequest& request)
-    : request_(request) {}
-
-AppCacheURLLoaderRequest::~AppCacheURLLoaderRequest() {}
+    std::unique_ptr<ResourceRequest> request)
+    : request_(std::move(request)) {}
 
 }  // namespace content
diff --git a/content/browser/appcache/appcache_url_loader_request.h b/content/browser/appcache/appcache_url_loader_request.h
index dde380a..13581f1 100644
--- a/content/browser/appcache/appcache_url_loader_request.h
+++ b/content/browser/appcache/appcache_url_loader_request.h
@@ -16,7 +16,10 @@
  public:
   // Factory function to create an instance of the AppCacheResourceRequest
   // class.
-  static AppCacheURLLoaderRequest* Create(const ResourceRequest& request);
+  static std::unique_ptr<AppCacheURLLoaderRequest> Create(
+      std::unique_ptr<ResourceRequest> request);
+
+  ~AppCacheURLLoaderRequest() override;
 
   // AppCacheRequest overrides.
   // TODO(ananta)
@@ -39,11 +42,10 @@
   ResourceRequest* GetResourceRequest() override;
 
  protected:
-  explicit AppCacheURLLoaderRequest(const ResourceRequest& request);
-  ~AppCacheURLLoaderRequest() override;
+  explicit AppCacheURLLoaderRequest(std::unique_ptr<ResourceRequest> request);
 
  private:
-  ResourceRequest request_;
+  std::unique_ptr<ResourceRequest> request_;
 
   DISALLOW_COPY_AND_ASSIGN(AppCacheURLLoaderRequest);
 };
diff --git a/content/browser/blob_storage/blob_internals_url_loader.cc b/content/browser/blob_storage/blob_internals_url_loader.cc
index fe5d62b2..84906c8 100644
--- a/content/browser/blob_storage/blob_internals_url_loader.cc
+++ b/content/browser/blob_storage/blob_internals_url_loader.cc
@@ -26,16 +26,7 @@
 
   std::string output = storage::ViewBlobInternalsJob::GenerateHTML(
       blob_storage_context->context());
-
-  MojoCreateDataPipeOptions options;
-  options.struct_size = sizeof(MojoCreateDataPipeOptions);
-  options.flags = MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE;
-  options.element_num_bytes = 1;
-  options.capacity_num_bytes = output.size();
-  mojo::DataPipe data_pipe(options);
-
-  DCHECK(data_pipe.producer_handle.is_valid());
-  DCHECK(data_pipe.consumer_handle.is_valid());
+  mojo::DataPipe data_pipe(output.size());
 
   void* buffer = nullptr;
   uint32_t num_bytes = output.size();
@@ -50,14 +41,7 @@
   CHECK_EQ(result, MOJO_RESULT_OK);
 
   client->OnStartLoadingResponseBody(std::move(data_pipe.consumer_handle));
-
-  ResourceRequestCompletionStatus request_complete_data;
-  request_complete_data.error_code = net::OK;
-  request_complete_data.exists_in_cache = false;
-  request_complete_data.completion_time = base::TimeTicks::Now();
-  request_complete_data.encoded_data_length = output.size();
-  request_complete_data.encoded_body_length = output.size();
-  client->OnComplete(request_complete_data);
+  client->OnComplete(ResourceRequestCompletionStatus(output.size()));
 }
 
 }  // namespace content
diff --git a/content/browser/child_process_launcher.cc b/content/browser/child_process_launcher.cc
index 2a5fd55..6015c1cf 100644
--- a/content/browser/child_process_launcher.cc
+++ b/content/browser/child_process_launcher.cc
@@ -87,9 +87,11 @@
   if (process_.process.IsValid()) {
     // Set up Mojo IPC to the new process.
     DCHECK(invitation);
-    invitation->Send(process_.process.Handle(),
-                     mojo::edk::ConnectionParams(std::move(server_handle)),
-                     process_error_callback_);
+    invitation->Send(
+        process_.process.Handle(),
+        mojo::edk::ConnectionParams(mojo::edk::TransportProtocol::kLegacy,
+                                    std::move(server_handle)),
+        process_error_callback_);
     client_->OnProcessLaunched();
   } else {
     termination_status_ = base::TERMINATION_STATUS_LAUNCH_FAILED;
diff --git a/content/browser/devtools/render_frame_devtools_agent_host.cc b/content/browser/devtools/render_frame_devtools_agent_host.cc
index d572f3a..951122cd 100644
--- a/content/browser/devtools/render_frame_devtools_agent_host.cc
+++ b/content/browser/devtools/render_frame_devtools_agent_host.cc
@@ -472,12 +472,6 @@
   g_instances.Get().push_back(this);
   AddRef();  // Balanced in RenderFrameHostDestroyed.
 
-  DevToolsManager* manager = DevToolsManager::GetInstance();
-  if (manager->delegate()) {
-    type_ = manager->delegate()->GetTargetType(host);
-    title_ = manager->delegate()->GetTargetTitle(host);
-  }
-
   NotifyCreated();
 }
 
@@ -1020,16 +1014,26 @@
 }
 
 std::string RenderFrameDevToolsAgentHost::GetType() {
-  if (!type_.empty())
-    return type_;
+  DevToolsManager* manager = DevToolsManager::GetInstance();
+  if (manager->delegate() && current_) {
+    std::string type = manager->delegate()->GetTargetType(current_->host());
+    if (!type.empty())
+      return type;
+  }
+
   if (IsChildFrame())
     return kTypeFrame;
   return kTypePage;
 }
 
 std::string RenderFrameDevToolsAgentHost::GetTitle() {
-  if (!title_.empty())
-    return title_;
+  DevToolsManager* manager = DevToolsManager::GetInstance();
+  if (manager->delegate() && current_) {
+    std::string title = manager->delegate()->GetTargetTitle(current_->host());
+    if (!title.empty())
+      return title;
+  }
+
   if (current_ && current_->host()->GetParent())
     return current_->host()->GetLastCommittedURL().spec();
   content::WebContents* web_contents = GetWebContents();
diff --git a/content/browser/devtools/render_frame_devtools_agent_host.h b/content/browser/devtools/render_frame_devtools_agent_host.h
index 7e600114..ff6bbd85 100644
--- a/content/browser/devtools/render_frame_devtools_agent_host.h
+++ b/content/browser/devtools/render_frame_devtools_agent_host.h
@@ -171,8 +171,6 @@
 #endif
   RenderFrameHostImpl* handlers_frame_host_;
   bool current_frame_crashed_;
-  std::string title_;
-  std::string type_;
 
   // PlzNavigate
 
diff --git a/content/browser/frame_host/render_widget_host_view_child_frame.cc b/content/browser/frame_host/render_widget_host_view_child_frame.cc
index 8c14e80..5fdd44e 100644
--- a/content/browser/frame_host/render_widget_host_view_child_frame.cc
+++ b/content/browser/frame_host/render_widget_host_view_child_frame.cc
@@ -679,7 +679,7 @@
 void RenderWidgetHostViewChildFrame::ClearCompositorSurfaceIfNecessary() {
   if (!support_)
     return;
-  support_->EvictFrame();
+  support_->EvictCurrentSurface();
   has_frame_ = false;
 }
 
diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc
index 03fd18bd..454f2589 100644
--- a/content/browser/gpu/gpu_process_host.cc
+++ b/content/browser/gpu/gpu_process_host.cc
@@ -737,7 +737,9 @@
   TRACE_EVENT0("gpu", "GpuProcessHost::CreateGpuMemoryBuffer");
 
   DCHECK(CalledOnValidThread());
-  create_gpu_memory_buffer_requests_.push(callback);
+  DCHECK(create_gpu_memory_buffer_requests_.find(id) ==
+         create_gpu_memory_buffer_requests_.end());
+  create_gpu_memory_buffer_requests_[id] = callback;
   gpu_service_ptr_->CreateGpuMemoryBuffer(
       id, size, format, usage, client_id, surface_handle,
       base::Bind(&GpuProcessHost::OnGpuMemoryBufferCreated,
@@ -793,9 +795,14 @@
     const gfx::GpuMemoryBufferHandle& handle) {
   TRACE_EVENT0("gpu", "GpuProcessHost::OnGpuMemoryBufferCreated");
 
-  DCHECK(!create_gpu_memory_buffer_requests_.empty());
-  auto callback = create_gpu_memory_buffer_requests_.front();
-  create_gpu_memory_buffer_requests_.pop();
+  if (create_gpu_memory_buffer_requests_.find(handle.id) ==
+      create_gpu_memory_buffer_requests_.end()) {
+    DVLOG(1) << "GpuMemoryBuffer creation fails due to missing callback.";
+    return;
+  }
+
+  auto callback = create_gpu_memory_buffer_requests_[handle.id];
+  create_gpu_memory_buffer_requests_.erase(handle.id);
   callback.Run(handle, BufferCreationStatus::SUCCESS);
 }
 
@@ -1078,12 +1085,12 @@
                  EstablishChannelStatus::GPU_HOST_INVALID);
   }
 
-  while (!create_gpu_memory_buffer_requests_.empty()) {
-    auto callback = create_gpu_memory_buffer_requests_.front();
-    create_gpu_memory_buffer_requests_.pop();
+  for (auto& pair : create_gpu_memory_buffer_requests_) {
+    auto callback = pair.second;
     callback.Run(gfx::GpuMemoryBufferHandle(),
                  BufferCreationStatus::GPU_HOST_INVALID);
   }
+  create_gpu_memory_buffer_requests_.clear();
 
   if (!send_destroying_video_surface_done_cb_.is_null())
     base::ResetAndReturn(&send_destroying_video_surface_done_cb_).Run();
diff --git a/content/browser/gpu/gpu_process_host.h b/content/browser/gpu/gpu_process_host.h
index bd98b70..7724755 100644
--- a/content/browser/gpu/gpu_process_host.h
+++ b/content/browser/gpu/gpu_process_host.h
@@ -231,7 +231,8 @@
   std::queue<EstablishChannelCallback> channel_requests_;
 
   // The pending create gpu memory buffer requests we need to reply to.
-  std::queue<CreateGpuMemoryBufferCallback> create_gpu_memory_buffer_requests_;
+  base::flat_map<gfx::GpuMemoryBufferId, CreateGpuMemoryBufferCallback>
+      create_gpu_memory_buffer_requests_;
 
   // A callback to signal the completion of a SendDestroyingVideoSurface call.
   base::Closure send_destroying_video_surface_done_cb_;
diff --git a/content/browser/histogram_internals_url_loader.cc b/content/browser/histogram_internals_url_loader.cc
index 67b37b3c..8e38a9b6 100644
--- a/content/browser/histogram_internals_url_loader.cc
+++ b/content/browser/histogram_internals_url_loader.cc
@@ -22,28 +22,11 @@
 
   base::StatisticsRecorder::ImportProvidedHistograms();
   std::string data = HistogramInternalsRequestJob::GenerateHTML(request.url);
-
-  MojoCreateDataPipeOptions options;
-  options.struct_size = sizeof(MojoCreateDataPipeOptions);
-  options.flags = MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE;
-  options.element_num_bytes = 1;
-  options.capacity_num_bytes = data.size();
-  mojo::DataPipe data_pipe(options);
-
-  DCHECK(data_pipe.producer_handle.is_valid());
-  DCHECK(data_pipe.consumer_handle.is_valid());
-
+  mojo::DataPipe data_pipe(data.size());
   CHECK(mojo::common::BlockingCopyFromString(data, data_pipe.producer_handle));
 
   client->OnStartLoadingResponseBody(std::move(data_pipe.consumer_handle));
-
-  ResourceRequestCompletionStatus request_complete_data;
-  request_complete_data.error_code = net::OK;
-  request_complete_data.exists_in_cache = false;
-  request_complete_data.completion_time = base::TimeTicks::Now();
-  request_complete_data.encoded_data_length = data.size();
-  request_complete_data.encoded_body_length = data.size();
-  client->OnComplete(request_complete_data);
+  client->OnComplete(ResourceRequestCompletionStatus(data.size()));
 }
 
 }  // namespace content
diff --git a/content/browser/loader/navigation_url_loader_network_service.cc b/content/browser/loader/navigation_url_loader_network_service.cc
index be7fcf1..3cf2541 100644
--- a/content/browser/loader/navigation_url_loader_network_service.cc
+++ b/content/browser/loader/navigation_url_loader_network_service.cc
@@ -9,6 +9,9 @@
 #include "base/lazy_instance.h"
 #include "base/memory/ptr_util.h"
 #include "base/trace_event/trace_event.h"
+#include "content/browser/appcache/appcache_navigation_handle.h"
+#include "content/browser/appcache/appcache_navigation_handle_core.h"
+#include "content/browser/appcache/appcache_request_handler.h"
 #include "content/browser/blob_storage/chrome_blob_storage_context.h"
 #include "content/browser/frame_host/frame_tree_node.h"
 #include "content/browser/frame_host/navigation_request_info.h"
@@ -38,21 +41,35 @@
 static base::LazyInstance<mojom::URLLoaderFactoryPtr>::Leaky
     g_url_loader_factory = LAZY_INSTANCE_INITIALIZER;
 
-// This function is called on the IO thread for POST/PUT requests for
-// attaching blob information to the request body.
-void HandleRequestsWithBody(
-    std::unique_ptr<ResourceRequest> request,
-    ResourceContext* resource_context,
-    base::WeakPtr<NavigationURLLoaderNetworkService> url_loader) {
-  DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  DCHECK(request->request_body.get());
+using CompleteNavigationStartCallback =
+    base::Callback<void(mojom::URLLoaderFactoryPtrInfo,
+                        std::unique_ptr<ResourceRequest>)>;
 
-  AttachRequestBodyBlobDataHandles(request->request_body.get(),
-                                    resource_context);
+void PrepareNavigationOnIOThread(
+    std::unique_ptr<ResourceRequest> resource_request,
+    ResourceContext* resource_context,
+    ResourceType resource_type,
+    AppCacheNavigationHandleCore* appcache_handle_core,
+    CompleteNavigationStartCallback complete_request) {
+  if (resource_request->request_body.get()) {
+    AttachRequestBodyBlobDataHandles(resource_request->request_body.get(),
+                                     resource_context);
+  }
+
+  mojom::URLLoaderFactoryPtrInfo url_loader_factory_ptr_info;
+
+  if (appcache_handle_core) {
+    AppCacheRequestHandler::InitializeForNavigationNetworkService(
+        std::move(resource_request), resource_context, appcache_handle_core,
+        resource_type, complete_request);
+    return;
+  }
+
   BrowserThread::PostTask(
       BrowserThread::UI, FROM_HERE,
-      base::Bind(&NavigationURLLoaderNetworkService::StartURLRequest,
-                  url_loader, base::Passed(&request)));
+      base::Bind(complete_request,
+                 base::Passed(std::move(url_loader_factory_ptr_info)),
+                 base::Passed(std::move(resource_request))));
 }
 
 }  // namespace
@@ -105,19 +122,24 @@
   new_request->load_flags = load_flags;
 
   new_request->request_body = request_info_->common_params.post_data.get();
-  if (new_request->request_body.get()) {
-    // The request body may need blob handles to be added to it. This
-    // functionality has to be invoked on the IO thread.
+
+  // AppCache or post data needs some handling on the IO thread.
+  // The request body may need blob handles to be added to it. This
+  // functionality has to be invoked on the IO thread.
+  if (/*appcache_handle || */ new_request->request_body.get()) {
+    ResourceType resource_type = request_info_->is_main_frame
+                                     ? RESOURCE_TYPE_MAIN_FRAME
+                                     : RESOURCE_TYPE_SUB_FRAME;
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
-        base::Bind(&HandleRequestsWithBody,
-                   base::Passed(&new_request),
-                   resource_context,
-                   weak_factory_.GetWeakPtr()));
+        base::Bind(
+            &PrepareNavigationOnIOThread, base::Passed(std::move(new_request)),
+            resource_context, resource_type, appcache_handle->core(),
+            base::Bind(&NavigationURLLoaderNetworkService::StartURLRequest,
+                       weak_factory_.GetWeakPtr())));
     return;
   }
-
-  StartURLRequest(std::move(new_request));
+  StartURLRequest(mojom::URLLoaderFactoryPtrInfo(), std::move(new_request));
 }
 
 NavigationURLLoaderNetworkService::~NavigationURLLoaderNetworkService() {}
@@ -200,9 +222,14 @@
 }
 
 void NavigationURLLoaderNetworkService::StartURLRequest(
+    mojom::URLLoaderFactoryPtrInfo url_loader_factory_info,
     std::unique_ptr<ResourceRequest> request) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
+  // Bind the URLClient implementation to this object to pass to the URLLoader.
+  if (binding_.is_bound())
+    binding_.Unbind();
+
   mojom::URLLoaderClientPtr url_loader_client_ptr_to_pass;
   binding_.Bind(&url_loader_client_ptr_to_pass);
 
@@ -224,8 +251,16 @@
     factory = factory_ptr.get();
   }
 
-  if (!factory)
-    factory = GetURLLoaderFactory();
+  if (!factory) {
+    // If a URLLoaderFactory was provided, then we use that one, otherwise
+    // fall back to connecting directly to the network service.
+    if (url_loader_factory_info.is_valid()) {
+      url_loader_factory_.Bind(std::move(url_loader_factory_info));
+      factory = url_loader_factory_.get();
+    } else {
+      factory = GetURLLoaderFactory();
+    }
+  }
 
   factory->CreateLoaderAndStart(mojo::MakeRequest(&url_loader_associated_ptr_),
                                 0 /* routing_id? */, 0 /* request_id? */,
diff --git a/content/browser/loader/navigation_url_loader_network_service.h b/content/browser/loader/navigation_url_loader_network_service.h
index 30196ee..b5700e1 100644
--- a/content/browser/loader/navigation_url_loader_network_service.h
+++ b/content/browser/loader/navigation_url_loader_network_service.h
@@ -67,7 +67,8 @@
       const ResourceRequestCompletionStatus& completion_status) override;
 
   // Initiates the request.
-  void StartURLRequest(std::unique_ptr<ResourceRequest> request);
+  void StartURLRequest(mojom::URLLoaderFactoryPtrInfo url_loader_factory_info,
+                       std::unique_ptr<ResourceRequest> request);
 
  private:
   void ConnectURLLoaderFactory(
@@ -77,6 +78,7 @@
 
   NavigationURLLoaderDelegate* delegate_;
 
+  mojom::URLLoaderFactoryPtr url_loader_factory_;
   mojo::Binding<mojom::URLLoaderClient> binding_;
   std::unique_ptr<NavigationRequestInfo> request_info_;
   mojom::URLLoaderAssociatedPtr url_loader_associated_ptr_;
diff --git a/content/browser/renderer_host/delegated_frame_host.cc b/content/browser/renderer_host/delegated_frame_host.cc
index 9cc1f75..937512f 100644
--- a/content/browser/renderer_host/delegated_frame_host.cc
+++ b/content/browser/renderer_host/delegated_frame_host.cc
@@ -521,7 +521,7 @@
   if (!has_frame_)
     return;
   client_->DelegatedFrameHostGetLayer()->SetShowSolidColorContent();
-  support_->EvictFrame();
+  support_->EvictCurrentSurface();
   has_frame_ = false;
   resize_lock_.reset();
   frame_evictor_->DiscardedFrame();
diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h
index 7eee0fb..a9807e79 100644
--- a/content/browser/renderer_host/render_widget_host_impl.h
+++ b/content/browser/renderer_host/render_widget_host_impl.h
@@ -585,7 +585,7 @@
   void SubmitCompositorFrame(const cc::LocalSurfaceId& local_surface_id,
                              cc::CompositorFrame frame) override;
   void BeginFrameDidNotSwap(const cc::BeginFrameAck& ack) override;
-  void EvictFrame() override {}
+  void EvictCurrentSurface() override {}
 
  protected:
   // ---------------------------------------------------------------------------
diff --git a/content/browser/webui/web_ui_url_loader_factory.cc b/content/browser/webui/web_ui_url_loader_factory.cc
index a349bd9..1e5bad3 100644
--- a/content/browser/webui/web_ui_url_loader_factory.cc
+++ b/content/browser/webui/web_ui_url_loader_factory.cc
@@ -90,15 +90,7 @@
   uint32_t output_size =
       gzipped ? compression::GetUncompressedSize(input) : bytes->size();
 
-  MojoCreateDataPipeOptions options;
-  options.struct_size = sizeof(MojoCreateDataPipeOptions);
-  options.flags = MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE;
-  options.element_num_bytes = 1;
-  options.capacity_num_bytes = output_size;
-  mojo::DataPipe data_pipe(options);
-
-  DCHECK(data_pipe.producer_handle.is_valid());
-  DCHECK(data_pipe.consumer_handle.is_valid());
+  mojo::DataPipe data_pipe(output_size);
 
   void* buffer = nullptr;
   uint32_t num_bytes = output_size;
@@ -118,14 +110,7 @@
   CHECK_EQ(result, MOJO_RESULT_OK);
 
   client->OnStartLoadingResponseBody(std::move(data_pipe.consumer_handle));
-
-  ResourceRequestCompletionStatus request_complete_data;
-  request_complete_data.error_code = net::OK;
-  request_complete_data.exists_in_cache = false;
-  request_complete_data.completion_time = base::TimeTicks::Now();
-  request_complete_data.encoded_data_length = output_size;
-  request_complete_data.encoded_body_length = output_size;
-  client->OnComplete(request_complete_data);
+  client->OnComplete(ResourceRequestCompletionStatus(output_size));
 }
 
 void DataAvailable(scoped_refptr<ResourceResponse> headers,
diff --git a/content/common/resource_request_completion_status.cc b/content/common/resource_request_completion_status.cc
index 4f2c850..3720d24f 100644
--- a/content/common/resource_request_completion_status.cc
+++ b/content/common/resource_request_completion_status.cc
@@ -4,11 +4,20 @@
 
 #include "content/common/resource_request_completion_status.h"
 
+#include "net/base/net_errors.h"
+
 namespace content {
 
 ResourceRequestCompletionStatus::ResourceRequestCompletionStatus() {}
 ResourceRequestCompletionStatus::ResourceRequestCompletionStatus(
     const ResourceRequestCompletionStatus& status) = default;
+
+ResourceRequestCompletionStatus::ResourceRequestCompletionStatus(int64_t length)
+    : error_code(net::OK),
+      completion_time(base::TimeTicks::Now()),
+      encoded_data_length(length),
+      encoded_body_length(length) {}
+
 ResourceRequestCompletionStatus::~ResourceRequestCompletionStatus() {}
 
 }  // namespace content
diff --git a/content/common/resource_request_completion_status.h b/content/common/resource_request_completion_status.h
index 594119a8..073704e2 100644
--- a/content/common/resource_request_completion_status.h
+++ b/content/common/resource_request_completion_status.h
@@ -17,6 +17,9 @@
   ResourceRequestCompletionStatus();
   ResourceRequestCompletionStatus(
       const ResourceRequestCompletionStatus& status);
+  explicit ResourceRequestCompletionStatus(int64_t length);
+  // Sets error_code to net::OK, completition_time to base::TimeTicks::Now(),
+  // and encoded_data_length = encoded_body_length = |length|;
   ~ResourceRequestCompletionStatus();
 
   // The error code.
diff --git a/content/network/cache_url_loader.cc b/content/network/cache_url_loader.cc
index dc8cc192..67e0ab75 100644
--- a/content/network/cache_url_loader.cc
+++ b/content/network/cache_url_loader.cc
@@ -52,28 +52,13 @@
  private:
   void DataAvailable(int result) {
     DCHECK_EQ(net::OK, result);
-    MojoCreateDataPipeOptions options;
-    options.struct_size = sizeof(MojoCreateDataPipeOptions);
-    options.flags = MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE;
-    options.element_num_bytes = 1;
-    options.capacity_num_bytes = data_.size();
-    mojo::DataPipe data_pipe(options);
-
-    DCHECK(data_pipe.producer_handle.is_valid());
-    DCHECK(data_pipe.consumer_handle.is_valid());
+    mojo::DataPipe data_pipe(data_.size());
 
     CHECK(
         mojo::common::BlockingCopyFromString(data_, data_pipe.producer_handle));
 
     client_->OnStartLoadingResponseBody(std::move(data_pipe.consumer_handle));
-
-    ResourceRequestCompletionStatus request_complete_data;
-    request_complete_data.error_code = net::OK;
-    request_complete_data.exists_in_cache = false;
-    request_complete_data.completion_time = base::TimeTicks::Now();
-    request_complete_data.encoded_data_length = data_.size();
-    request_complete_data.encoded_body_length = data_.size();
-    client_->OnComplete(request_complete_data);
+    client_->OnComplete(ResourceRequestCompletionStatus(data_.size()));
 
     // So we don't delete |this| in the constructor.
     base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this);
diff --git a/content/network/url_loader_impl.cc b/content/network/url_loader_impl.cc
index 80680db..8d2143e 100644
--- a/content/network/url_loader_impl.cc
+++ b/content/network/url_loader_impl.cc
@@ -268,15 +268,7 @@
         std::vector<uint8_t>(data, data + metadata->size()));
   }
 
-  MojoCreateDataPipeOptions options;
-  options.struct_size = sizeof(MojoCreateDataPipeOptions);
-  options.flags = MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE;
-  options.element_num_bytes = 1;
-  options.capacity_num_bytes = kDefaultAllocationSize;
-  mojo::DataPipe data_pipe(options);
-
-  DCHECK(data_pipe.producer_handle.is_valid());
-  DCHECK(data_pipe.consumer_handle.is_valid());
+  mojo::DataPipe data_pipe(kDefaultAllocationSize);
 
   response_body_stream_ = std::move(data_pipe.producer_handle);
   response_body_consumer_handle_ = std::move(data_pipe.consumer_handle);
diff --git a/content/renderer/media_recorder/audio_track_recorder.cc b/content/renderer/media_recorder/audio_track_recorder.cc
index d0dfd3b..9f968018 100644
--- a/content/renderer/media_recorder/audio_track_recorder.cc
+++ b/content/renderer/media_recorder/audio_track_recorder.cc
@@ -13,6 +13,7 @@
 #include "content/renderer/media/media_stream_audio_track.h"
 #include "media/base/audio_bus.h"
 #include "media/base/audio_converter.h"
+#include "media/base/audio_fifo.h"
 #include "media/base/audio_parameters.h"
 #include "media/base/audio_sample_types.h"
 #include "media/base/bind_to_current_loop.h"
@@ -126,7 +127,7 @@
 
   // Sampling rate adapter between an OpusEncoder supported and the provided.
   std::unique_ptr<media::AudioConverter> converter_;
-  std::deque<std::unique_ptr<media::AudioBus>> audio_bus_queue_;
+  std::unique_ptr<media::AudioFifo> fifo_;
 
   // Buffer for passing AudioBus data to OpusEncoder.
   std::unique_ptr<float[]> buffer_;
@@ -134,8 +135,6 @@
   // While |paused_|, AudioBuses are not encoded.
   bool paused_;
 
-  int frames_queued_;
-
   OpusEncoder* opus_encoder_;
 
   DISALLOW_COPY_AND_ASSIGN(AudioEncoder);
@@ -147,7 +146,6 @@
     : on_encoded_audio_cb_(on_encoded_audio_cb),
       bits_per_second_(bits_per_second),
       paused_(false),
-      frames_queued_(0),
       opus_encoder_(nullptr) {
   // AudioEncoder is constructed on the thread that ATR lives on, but should
   // operate only on the encoder thread after that. Reset
@@ -175,7 +173,6 @@
     DLOG(ERROR) << "Invalid params: " << input_params.AsHumanReadableString();
     return;
   }
-
   input_params_ = input_params;
   input_params_.set_frames_per_buffer(input_params_.sample_rate() *
                                       kOpusPreferredBufferDurationMs /
@@ -197,8 +194,9 @@
   converter_->AddInput(this);
   converter_->PrimeWithSilence();
 
-  frames_queued_ = 0;
-  audio_bus_queue_.clear();
+  fifo_.reset(new media::AudioFifo(
+      input_params_.channels(),
+      kMaxNumberOfFifoBuffers * input_params_.frames_per_buffer()));
 
   buffer_.reset(new float[output_params_.channels() *
                           output_params_.frames_per_buffer()]);
@@ -239,19 +237,14 @@
 
   if (!is_initialized() || paused_)
     return;
-
-  frames_queued_ += input_bus->frames();
-  audio_bus_queue_.push_back(std::move(input_bus));
-
-  const int max_frame_limit =
-      kMaxNumberOfFifoBuffers * input_params_.frames_per_buffer();
-  while (frames_queued_ > max_frame_limit) {
-    frames_queued_ -= audio_bus_queue_.front()->frames();
-    audio_bus_queue_.pop_front();
-  }
+  // TODO(mcasas): Consider using a std::deque<std::unique_ptr<AudioBus>>
+  // instead of
+  // an AudioFifo, to avoid copying data needlessly since we know the sizes of
+  // both input and output and they are multiples.
+  fifo_->Push(input_bus.get());
 
   // Wait to have enough |input_bus|s to guarantee a satisfactory conversion.
-  while (frames_queued_ >= input_params_.frames_per_buffer()) {
+  while (fifo_->frames() >= input_params_.frames_per_buffer()) {
     std::unique_ptr<media::AudioBus> audio_bus = media::AudioBus::Create(
         output_params_.channels(), kOpusPreferredFramesPerBuffer);
     converter_->Convert(audio_bus.get());
@@ -263,7 +256,7 @@
                  encoded_data.get())) {
       const base::TimeTicks capture_time_of_first_sample =
           capture_time -
-          base::TimeDelta::FromMicroseconds(frames_queued_ *
+          base::TimeDelta::FromMicroseconds(fifo_->frames() *
                                             base::Time::kMicrosecondsPerSecond /
                                             input_params_.sample_rate());
       on_encoded_audio_cb_.Run(output_params_, std::move(encoded_data),
@@ -275,12 +268,7 @@
 double AudioTrackRecorder::AudioEncoder::ProvideInput(
     media::AudioBus* audio_bus,
     uint32_t frames_delayed) {
-  if (audio_bus_queue_.empty())
-    return 0.0;
-
-  frames_queued_ -= audio_bus->frames();
-  audio_bus_queue_.front()->CopyTo(audio_bus);
-  audio_bus_queue_.pop_front();
+  fifo_->Consume(audio_bus, 0, audio_bus->frames());
   return 1.0;  // Return volume greater than zero to indicate we have more data.
 }
 
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 2e952fd..7cf21c4d 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -775,7 +775,7 @@
 NOINLINE void ExhaustMemory() {
   volatile void* ptr = nullptr;
   do {
-    ptr = malloc(0x10000000);
+    ptr = malloc(0x1000000);
     base::debug::Alias(&ptr);
   } while (ptr);
 }
diff --git a/content/test/data/accessibility/event/aria-combo-box-expand-expected-win.txt b/content/test/data/accessibility/event/aria-combo-box-expand-expected-win.txt
index 6abfe95..bffdd3c 100644
--- a/content/test/data/accessibility/event/aria-combo-box-expand-expected-win.txt
+++ b/content/test/data/accessibility/event/aria-combo-box-expand-expected-win.txt
@@ -1,3 +1,3 @@
 EVENT_OBJECT_STATECHANGE on role=ROLE_SYSTEM_COMBOBOX EXPANDED,FOCUSABLE,HASPOPUP IA2_STATE_EDITABLE,IA2_STATE_SUPPORTS_AUTOCOMPLETION,IA2_STATE_VERTICAL
-EVENT_OBJECT_FOCUS on role= FOCUSED
+EVENT_OBJECT_FOCUS on role=ROLE_SYSTEM_LISTITEM name="Apple" FOCUSED
 IA2_EVENT_ACTIVE_DESCENDANT_CHANGED on role=ROLE_SYSTEM_COMBOBOX EXPANDED,FOCUSABLE,HASPOPUP IA2_STATE_EDITABLE,IA2_STATE_SUPPORTS_AUTOCOMPLETION,IA2_STATE_VERTICAL
diff --git a/content/test/data/accessibility/event/aria-combo-box-next-expected-win.txt b/content/test/data/accessibility/event/aria-combo-box-next-expected-win.txt
index 70e0878..a5a77a8 100644
--- a/content/test/data/accessibility/event/aria-combo-box-next-expected-win.txt
+++ b/content/test/data/accessibility/event/aria-combo-box-next-expected-win.txt
@@ -1,2 +1,2 @@
-EVENT_OBJECT_FOCUS on role= FOCUSED
+EVENT_OBJECT_FOCUS on role=ROLE_SYSTEM_LISTITEM name="Banana" FOCUSED
 IA2_EVENT_ACTIVE_DESCENDANT_CHANGED on role=ROLE_SYSTEM_COMBOBOX EXPANDED,FOCUSABLE,HASPOPUP IA2_STATE_EDITABLE,IA2_STATE_SUPPORTS_AUTOCOMPLETION,IA2_STATE_VERTICAL
diff --git a/device/usb/webusb_descriptors.cc b/device/usb/webusb_descriptors.cc
index 3df67eb..7a0c9700 100644
--- a/device/usb/webusb_descriptors.cc
+++ b/device/usb/webusb_descriptors.cc
@@ -157,24 +157,26 @@
                        uint8_t landing_page_id,
                        std::unique_ptr<std::map<uint8_t, GURL>> url_map,
                        const ReadWebUsbDescriptorsCallback& callback) {
-  for (uint8_t origin_id : allowed_origins->origin_ids) {
-    const auto& it = url_map->find(origin_id);
-    if (it != url_map->end())
-      allowed_origins->origins.push_back(it->second.GetOrigin());
-  }
-
-  for (auto& configuration : allowed_origins->configurations) {
-    for (uint8_t origin_id : configuration.origin_ids) {
+  if (allowed_origins) {
+    for (uint8_t origin_id : allowed_origins->origin_ids) {
       const auto& it = url_map->find(origin_id);
       if (it != url_map->end())
-        configuration.origins.push_back(it->second.GetOrigin());
+        allowed_origins->origins.push_back(it->second.GetOrigin());
     }
 
-    for (auto& function : configuration.functions) {
-      for (uint8_t origin_id : function.origin_ids) {
+    for (auto& configuration : allowed_origins->configurations) {
+      for (uint8_t origin_id : configuration.origin_ids) {
         const auto& it = url_map->find(origin_id);
         if (it != url_map->end())
-          function.origins.push_back(it->second.GetOrigin());
+          configuration.origins.push_back(it->second.GetOrigin());
+      }
+
+      for (auto& function : configuration.functions) {
+        for (uint8_t origin_id : function.origin_ids) {
+          const auto& it = url_map->find(origin_id);
+          if (it != url_map->end())
+            function.origins.push_back(it->second.GetOrigin());
+        }
       }
     }
   }
@@ -223,27 +225,25 @@
 }
 
 // Reads URL descriptors from the device so that it can fill |allowed_origins|
-// with the GURLs matching the indicies already collected.
+// with the GURLs matching the indices already collected.
 void ReadUrlDescriptors(scoped_refptr<UsbDeviceHandle> device_handle,
                         uint8_t vendor_code,
                         uint8_t landing_page_id,
                         const ReadWebUsbDescriptorsCallback& callback,
                         std::unique_ptr<WebUsbAllowedOrigins> allowed_origins) {
-  if (!allowed_origins) {
-    callback.Run(nullptr, GURL());
-    return;
-  }
-
   std::set<uint8_t> to_request;
   if (landing_page_id != 0)
     to_request.insert(landing_page_id);
 
-  to_request.insert(allowed_origins->origin_ids.begin(),
-                    allowed_origins->origin_ids.end());
-  for (auto& config : allowed_origins->configurations) {
-    to_request.insert(config.origin_ids.begin(), config.origin_ids.end());
-    for (auto& function : config.functions) {
-      to_request.insert(function.origin_ids.begin(), function.origin_ids.end());
+  if (allowed_origins) {
+    to_request.insert(allowed_origins->origin_ids.begin(),
+                      allowed_origins->origin_ids.end());
+    for (auto& config : allowed_origins->configurations) {
+      to_request.insert(config.origin_ids.begin(), config.origin_ids.end());
+      for (auto& function : config.functions) {
+        to_request.insert(function.origin_ids.begin(),
+                          function.origin_ids.end());
+      }
     }
   }
 
@@ -255,9 +255,8 @@
       base::Bind(&OnDoneReadingUrls, base::Passed(&allowed_origins),
                  landing_page_id, base::Passed(&url_map), callback));
 
-  for (uint8_t index : to_request) {
+  for (uint8_t index : to_request)
     ReadUrlDescriptor(device_handle, vendor_code, url_map_ptr, index, barrier);
-  }
 }
 
 void OnReadWebUsbAllowedOrigins(
diff --git a/docs/android_debugging_instructions.md b/docs/android_debugging_instructions.md
index 8fd2dd8..fbb4f98 100644
--- a/docs/android_debugging_instructions.md
+++ b/docs/android_debugging_instructions.md
@@ -237,7 +237,7 @@
 To run unit tests use the following command:
 
 ```shell
-out/Debug/bin/run_test_name -f <test_filter_if_any> --test-arguments=--wait-for-debugger -t 6000
+out/Debug/bin/run_test_name -f <test_filter_if_any> --wait-for-debugger -t 6000
 ```
 
 That command will cause the test process to wait until a debugger is attached.
diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json
index b2f637f..944660e 100644
--- a/gpu/config/gpu_driver_bug_list.json
+++ b/gpu/config/gpu_driver_bug_list.json
@@ -1,6 +1,6 @@
 {
   "name": "gpu driver bug list",
-  "version": "10.7",
+  "version": "10.8",
   "entries": [
     {
       "id": 1,
@@ -2447,6 +2447,20 @@
       "features": [
         "avoid_stencil_buffers"
       ]
+    },
+    {
+      "id": 228,
+      "description": "Intel HD 3000 driver crashes frequently on Mac",
+      "cr_bugs": [720152],
+      "os": {
+        "type": "macosx"
+      },
+      "vendor_id": "0x8086",
+      "device_id": ["0x0116", "0x0126"],
+      "multi_gpu_style": "amd_switchable",
+      "features": [
+        "force_discrete_gpu"
+      ]
     }
   ],
   "comment": [
diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json
index 220f853..620eb19 100644
--- a/gpu/config/software_rendering_list.json
+++ b/gpu/config/software_rendering_list.json
@@ -1,6 +1,6 @@
 {
   "name": "software rendering list",
-  "version": "13.6",
+  "version": "13.7",
   "entries": [
     {
       "id": 1,
@@ -1013,7 +1013,6 @@
       },
       "vendor_id": "0x8086",
       "device_id": ["0x0116", "0x0126"],
-      "multi_gpu_category": "any",
       "features": [
         "all"
       ]
diff --git a/ios/chrome/browser/ui/dialogs/javascript_dialog_egtest.mm b/ios/chrome/browser/ui/dialogs/javascript_dialog_egtest.mm
index a70248d..45c395d3 100644
--- a/ios/chrome/browser/ui/dialogs/javascript_dialog_egtest.mm
+++ b/ios/chrome/browser/ui/dialogs/javascript_dialog_egtest.mm
@@ -34,6 +34,7 @@
 #endif
 
 using chrome_test_util::NavigationBarDoneButton;
+using chrome_test_util::OKButton;
 using web::test::HttpServer;
 
 namespace {
@@ -258,12 +259,6 @@
       performAction:grey_typeText(input)];
 }
 
-void TapOK() {
-  id<GREYMatcher> ok_button =
-      chrome_test_util::ButtonWithAccessibilityLabelId(IDS_OK);
-  [[EarlGrey selectElementWithMatcher:ok_button] performAction:grey_tap()];
-}
-
 void TapCancel() {
   [[EarlGrey selectElementWithMatcher:chrome_test_util::CancelButton()]
       performAction:grey_tap()];
@@ -352,8 +347,7 @@
   [self loadBlankTestPage];
   ShowJavaScriptDialog(JavaScriptAlertType::ALERT);
 
-  // Tap the OK button.
-  TapOK();
+  [[EarlGrey selectElementWithMatcher:OKButton()] performAction:grey_tap()];
 
   // Wait for the html body to be reset to the correct value.
   WaitForWebDisplay(kAlertResultBody);
@@ -373,8 +367,7 @@
   [self loadBlankTestPage];
   ShowJavaScriptDialog(JavaScriptAlertType::CONFIRMATION);
 
-  // Tap the OK button.
-  TapOK();
+  [[EarlGrey selectElementWithMatcher:OKButton()] performAction:grey_tap()];
 
   // Wait for the html body to be reset to the correct value.
   WaitForWebDisplay(kConfirmationResultBodyOK);
@@ -418,8 +411,7 @@
   // Enter text into text field.
   TypeInPrompt(@(kPromptTestUserInput));
 
-  // Tap the OK button.
-  TapOK();
+  [[EarlGrey selectElementWithMatcher:OKButton()] performAction:grey_tap()];
 
   // Wait for the html body to be reset to the input text.
   WaitForWebDisplay(kPromptTestUserInput);
@@ -458,8 +450,7 @@
   webState->ExecuteJavaScript(base::SysNSStringToUTF16(script));
   WaitForJavaScripDialogToBeShown();
 
-  // Tap the OK button and wait for another dialog to be shown.
-  TapOK();
+  [[EarlGrey selectElementWithMatcher:OKButton()] performAction:grey_tap()];
   WaitForJavaScripDialogToBeShown();
 
   // Tap the suppress dialogs button.
@@ -511,8 +502,7 @@
   // Make sure the alert is present.
   WaitForJavaScripDialogToBeShown();
 
-  // Tap the OK button.
-  TapOK();
+  [[EarlGrey selectElementWithMatcher:OKButton()] performAction:grey_tap()];
 
   // Wait for the html body to be reset to the correct value.
   WaitForWebDisplay(kAlertResultBody);
@@ -541,8 +531,7 @@
   // Show an alert and assert it is present.
   ShowJavaScriptDialog(JavaScriptAlertType::ALERT);
 
-  // Tap the OK button.
-  TapOK();
+  [[EarlGrey selectElementWithMatcher:OKButton()] performAction:grey_tap()];
 
   // Wait for the html body to be reset to the correct value.
   WaitForWebDisplay(kAlertResultBody);
@@ -596,8 +585,7 @@
   [[EarlGrey selectElementWithMatcher:chrome_test_util::OmniboxText(title)]
       assertWithMatcher:grey_notNil()];
 
-  // Close the alert.
-  TapOK();
+  [[EarlGrey selectElementWithMatcher:OKButton()] performAction:grey_tap()];
 
   // Reenable synchronization on iPads now that the dialog has been dismissed.
   if (IsIPadIdiom()) {
diff --git a/ios/chrome/test/earl_grey/chrome_matchers.h b/ios/chrome/test/earl_grey/chrome_matchers.h
index 3dfec12..2670692 100644
--- a/ios/chrome/test/earl_grey/chrome_matchers.h
+++ b/ios/chrome/test/earl_grey/chrome_matchers.h
@@ -101,6 +101,9 @@
 // Returns matcher for the settings button in the tools menu.
 id<GREYMatcher> SettingsMenuButton();
 
+// Returns matcher for the OK button.
+id<GREYMatcher> OKButton();
+
 }  // namespace chrome_test_util
 
 #endif  // IOS_CHROME_TEST_EARL_GREY_CHROME_MATCHERS_H_
diff --git a/ios/chrome/test/earl_grey/chrome_matchers.mm b/ios/chrome/test/earl_grey/chrome_matchers.mm
index ff63534..a8f244ee 100644
--- a/ios/chrome/test/earl_grey/chrome_matchers.mm
+++ b/ios/chrome/test/earl_grey/chrome_matchers.mm
@@ -186,4 +186,8 @@
   return grey_accessibilityID(kToolsMenuSettingsId);
 }
 
+id<GREYMatcher> OKButton() {
+  return ButtonWithAccessibilityLabelId(IDS_OK);
+}
+
 }  // namespace chrome_test_util
diff --git a/ios/web/navigation/navigation_item_impl.mm b/ios/web/navigation/navigation_item_impl.mm
index 0b8aff9..8927347 100644
--- a/ios/web/navigation/navigation_item_impl.mm
+++ b/ios/web/navigation/navigation_item_impl.mm
@@ -297,7 +297,7 @@
   // For file:// URLs use the filename as the title, not the full path.
   if (url.SchemeIsFile()) {
     base::string16::size_type slashpos = title.rfind('/');
-    if (slashpos != base::string16::npos)
+    if (slashpos != base::string16::npos && slashpos != (title.size() - 1))
       title = title.substr(slashpos + 1);
   }
 
diff --git a/ios/web/navigation/navigation_item_impl_unittest.mm b/ios/web/navigation/navigation_item_impl_unittest.mm
index a286627..57ea40e05 100644
--- a/ios/web/navigation/navigation_item_impl_unittest.mm
+++ b/ios/web/navigation/navigation_item_impl_unittest.mm
@@ -148,5 +148,19 @@
   EXPECT_EQ(original_url, item_->GetURL());
 }
 
+// Tests NavigationItemImpl::GetDisplayTitleForURL method.
+TEST_F(NavigationItemTest, GetDisplayTitleForURL) {
+  base::string16 title;
+
+  title = NavigationItemImpl::GetDisplayTitleForURL(GURL("http://foo.org/"));
+  EXPECT_EQ("foo.org", base::UTF16ToUTF8(title));
+
+  title = NavigationItemImpl::GetDisplayTitleForURL(GURL("file://foo.org/"));
+  EXPECT_EQ("file://foo.org/", base::UTF16ToUTF8(title));
+
+  title = NavigationItemImpl::GetDisplayTitleForURL(GURL("file://foo/1.gz"));
+  EXPECT_EQ("1.gz", base::UTF16ToUTF8(title));
+}
+
 }  // namespace
 }  // namespace web
diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
index 1011947d..7a13243 100644
--- a/media/base/media_switches.cc
+++ b/media/base/media_switches.cc
@@ -68,6 +68,18 @@
 const char kUseCras[] = "use-cras";
 #endif
 
+// For automated testing of protected content, this switch allows specific
+// domains (e.g. example.com) to skip asking the user for permission to share
+// their personal identifier. In this context, domain does not include the
+// port number. This flag will have no effect if user-data-dir is not set and
+// will not affect the user's content settings.
+// Reference: http://crbug.com/718608
+// Example:
+// --unsafely-allow-protected-media-identifier-for-domain=a.com,b.ca
+// --user-data-dir=/test/only/profile/dir
+const char kUnsafelyAllowProtectedMediaIdentifierForDomain[] =
+    "unsafely-allow-protected-media-identifier-for-domain";
+
 #if !defined(OS_ANDROID) || BUILDFLAG(ENABLE_PLUGINS)
 // Enable a internal audio focus management between tabs in such a way that two
 // tabs can't  play on top of each other.
diff --git a/media/base/media_switches.h b/media/base/media_switches.h
index 4ff9c98..f75ce8b 100644
--- a/media/base/media_switches.h
+++ b/media/base/media_switches.h
@@ -49,6 +49,9 @@
 MEDIA_EXPORT extern const char kUseCras[];
 #endif
 
+MEDIA_EXPORT extern const char
+    kUnsafelyAllowProtectedMediaIdentifierForDomain[];
+
 #if !defined(OS_ANDROID) || BUILDFLAG(ENABLE_PLUGINS)
 MEDIA_EXPORT extern const char kEnableAudioFocus[];
 #endif  // !defined(OS_ANDROID) || BUILDFLAG(ENABLE_PLUGINS)
diff --git a/media/blink/multibuffer_data_source.cc b/media/blink/multibuffer_data_source.cc
index c882fae..4d8d045a 100644
--- a/media/blink/multibuffer_data_source.cc
+++ b/media/blink/multibuffer_data_source.cc
@@ -403,7 +403,7 @@
     bytes_read =
         static_cast<int>(std::min<int64_t>(available, read_op_->size()));
     bytes_read = reader_->TryRead(read_op_->data(), bytes_read);
-
+    url_data_->AddBytesRead(bytes_read);
     if (bytes_read == 0 && total_bytes_ == kPositionNotSpecified) {
       // We've reached the end of the file and we didn't know the total size
       // before. Update the total size so Read()s past the end of the file will
diff --git a/media/blink/resource_multibuffer_data_provider.cc b/media/blink/resource_multibuffer_data_provider.cc
index a1e1878..18a8847f 100644
--- a/media/blink/resource_multibuffer_data_provider.cc
+++ b/media/blink/resource_multibuffer_data_provider.cc
@@ -85,6 +85,15 @@
       WebString::FromUTF8(
           net::HttpByteRange::RightUnbounded(byte_pos()).GetHeaderValue()));
 
+  if (url_data_->length() == kPositionNotSpecified &&
+      url_data_->CachedSize() == 0 && url_data_->BytesReadFromCache() == 0) {
+    // This lets the data reduction proxy know that we don't have anything
+    // previously cached data for this resource. We can only send it if this is
+    // the first request for this resource.
+    request.SetHTTPHeaderField(WebString::FromUTF8("chrome-proxy"),
+                               WebString::FromUTF8("frfr"));
+  }
+
   // We would like to send an if-match header with the request to
   // tell the remote server that we really can't handle files other
   // than the one we already started playing. Unfortunately, doing
diff --git a/media/blink/resource_multibuffer_data_provider_unittest.cc b/media/blink/resource_multibuffer_data_provider_unittest.cc
index 079022b..93c453a 100644
--- a/media/blink/resource_multibuffer_data_provider_unittest.cc
+++ b/media/blink/resource_multibuffer_data_provider_unittest.cc
@@ -54,8 +54,16 @@
 
 enum NetworkState { NONE, LOADED, LOADING };
 
+static bool got_frfr = false;
+
 // Predicate that tests that request disallows compressed data.
-static bool CorrectAcceptEncoding(const blink::WebURLRequest& request) {
+static bool CorrectAcceptEncodingAndProxy(const blink::WebURLRequest& request) {
+  std::string chrome_proxy =
+      request.HttpHeaderField(WebString::FromUTF8("chrome-proxy")).Utf8();
+  if (chrome_proxy != (got_frfr ? "" : "frfr")) {
+    return false;
+  }
+
   std::string value = request
                           .HttpHeaderField(WebString::FromUTF8(
                               net::HttpRequestHeaders::kAcceptEncoding))
@@ -105,8 +113,10 @@
 
   void Start() {
     InSequence s;
-    EXPECT_CALL(*url_loader_,
-                LoadAsynchronously(Truly(CorrectAcceptEncoding), loader_));
+    got_frfr = false;
+    EXPECT_CALL(
+        *url_loader_,
+        LoadAsynchronously(Truly(CorrectAcceptEncodingAndProxy), loader_));
 
     loader_->Start();
   }
diff --git a/media/blink/url_index.cc b/media/blink/url_index.cc
index c0f1428..f255cb19 100644
--- a/media/blink/url_index.cc
+++ b/media/blink/url_index.cc
@@ -80,6 +80,7 @@
     if (last_modified_.is_null()) {
       last_modified_ = other->last_modified_;
     }
+    bytes_read_from_cache_ += other->bytes_read_from_cache_;
     multibuffer()->MergeFrom(other->multibuffer());
   }
 }
diff --git a/media/blink/url_index.h b/media/blink/url_index.h
index bce8727..f18d358 100644
--- a/media/blink/url_index.h
+++ b/media/blink/url_index.h
@@ -139,6 +139,9 @@
   // Accessor
   blink::WebFrame* frame() const { return frame_; }
 
+  void AddBytesRead(int64_t b) { bytes_read_from_cache_ += b; }
+  int64_t BytesReadFromCache() { return bytes_read_from_cache_; }
+
  protected:
   UrlData(const GURL& url,
           CORSMode cors_mode,
@@ -170,6 +173,9 @@
   // Length of resource this url points to. (in bytes)
   int64_t length_;
 
+  // Number of bytes read from this resource.
+  int64_t bytes_read_from_cache_ = 0;
+
   // Does the server support ranges?
   bool range_supported_;
 
diff --git a/media/capture/video/linux/v4l2_capture_delegate.cc b/media/capture/video/linux/v4l2_capture_delegate.cc
index 6c76522..773a425 100644
--- a/media/capture/video/linux/v4l2_capture_delegate.cc
+++ b/media/capture/video/linux/v4l2_capture_delegate.cc
@@ -620,8 +620,12 @@
   }
 
   photo_capabilities->iso = mojom::Range::New();
-  photo_capabilities->height = mojom::Range::New();
-  photo_capabilities->width = mojom::Range::New();
+  photo_capabilities->height = mojom::Range::New(
+      capture_format_.frame_size.height(), capture_format_.frame_size.height(),
+      capture_format_.frame_size.height(), 0 /* step */);
+  photo_capabilities->width = mojom::Range::New(
+      capture_format_.frame_size.width(), capture_format_.frame_size.width(),
+      capture_format_.frame_size.width(), 0 /* step */);
   photo_capabilities->exposure_compensation = mojom::Range::New();
   photo_capabilities->red_eye_reduction = mojom::RedEyeReduction::NEVER;
   photo_capabilities->torch = false;
diff --git a/media/capture/video/mac/video_capture_device_mac.h b/media/capture/video/mac/video_capture_device_mac.h
index 0b6b466..9d161f77 100644
--- a/media/capture/video/mac/video_capture_device_mac.h
+++ b/media/capture/video/mac/video_capture_device_mac.h
@@ -64,6 +64,7 @@
       std::unique_ptr<VideoCaptureDevice::Client> client) override;
   void StopAndDeAllocate() override;
   void TakePhoto(TakePhotoCallback callback) override;
+  void GetPhotoCapabilities(GetPhotoCapabilitiesCallback callback) override;
 
   bool Init(VideoCaptureApi capture_api_type);
 
diff --git a/media/capture/video/mac/video_capture_device_mac.mm b/media/capture/video/mac/video_capture_device_mac.mm
index a3c0166..27eb401 100644
--- a/media/capture/video/mac/video_capture_device_mac.mm
+++ b/media/capture/video/mac/video_capture_device_mac.mm
@@ -384,6 +384,35 @@
   [capture_device_ takePhoto];
 }
 
+void VideoCaptureDeviceMac::GetPhotoCapabilities(
+    GetPhotoCapabilitiesCallback callback) {
+  DCHECK(task_runner_->BelongsToCurrentThread());
+
+  auto photo_capabilities = mojom::PhotoCapabilities::New();
+
+  photo_capabilities->exposure_compensation = mojom::Range::New();
+  photo_capabilities->color_temperature = mojom::Range::New();
+  photo_capabilities->iso = mojom::Range::New();
+
+  photo_capabilities->brightness = mojom::Range::New();
+  photo_capabilities->contrast = mojom::Range::New();
+  photo_capabilities->saturation = mojom::Range::New();
+  photo_capabilities->sharpness = mojom::Range::New();
+
+  photo_capabilities->zoom = mojom::Range::New();
+
+  photo_capabilities->red_eye_reduction = mojom::RedEyeReduction::NEVER;
+  photo_capabilities->height = mojom::Range::New(
+      capture_format_.frame_size.height(), capture_format_.frame_size.height(),
+      capture_format_.frame_size.height(), 0 /* step */);
+  photo_capabilities->width = mojom::Range::New(
+      capture_format_.frame_size.width(), capture_format_.frame_size.width(),
+      capture_format_.frame_size.width(), 0 /* step */);
+  photo_capabilities->torch = false;
+
+  callback.Run(std::move(photo_capabilities));
+}
+
 bool VideoCaptureDeviceMac::Init(VideoCaptureApi capture_api_type) {
   DCHECK(task_runner_->BelongsToCurrentThread());
   DCHECK_EQ(state_, kNotInitialized);
diff --git a/media/mojo/common/mojo_decoder_buffer_converter.cc b/media/mojo/common/mojo_decoder_buffer_converter.cc
index d47e5f5..91fcbf8 100644
--- a/media/mojo/common/mojo_decoder_buffer_converter.cc
+++ b/media/mojo/common/mojo_decoder_buffer_converter.cc
@@ -20,26 +20,23 @@
 namespace {
 
 std::unique_ptr<mojo::DataPipe> CreateDataPipe(DemuxerStream::Type type) {
-  MojoCreateDataPipeOptions options;
-  options.struct_size = sizeof(MojoCreateDataPipeOptions);
-  options.flags = MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE;
-  options.element_num_bytes = 1;
+  uint32_t capacity = 0;
 
   if (type == DemuxerStream::AUDIO) {
     // TODO(timav): Consider capacity calculation based on AudioDecoderConfig.
-    options.capacity_num_bytes = 512 * 1024;
+    capacity = 512 * 1024;
   } else if (type == DemuxerStream::VIDEO) {
     // Video can get quite large; at 4K, VP9 delivers packets which are ~1MB in
     // size; so allow for some head room.
     // TODO(xhwang, sandersd): Provide a better way to customize this value.
-    options.capacity_num_bytes = 2 * (1024 * 1024);
+    capacity = 2 * (1024 * 1024);
   } else {
     NOTREACHED() << "Unsupported type: " << type;
     // Choose an arbitrary size.
-    options.capacity_num_bytes = 512 * 1024;
+    capacity = 512 * 1024;
   }
 
-  return base::MakeUnique<mojo::DataPipe>(options);
+  return base::MakeUnique<mojo::DataPipe>(capacity);
 }
 
 bool IsPipeReadWriteError(MojoResult result) {
diff --git a/media/mojo/common/mojo_decoder_buffer_converter_unittest.cc b/media/mojo/common/mojo_decoder_buffer_converter_unittest.cc
index 124d6ac..c0c7407 100644
--- a/media/mojo/common/mojo_decoder_buffer_converter_unittest.cc
+++ b/media/mojo/common/mojo_decoder_buffer_converter_unittest.cc
@@ -31,12 +31,7 @@
  public:
   MojoDecoderBufferConverter(
       uint32_t data_pipe_capacity_bytes = kDefaultDataPipeCapacityBytes) {
-    MojoCreateDataPipeOptions options;
-    options.struct_size = sizeof(MojoCreateDataPipeOptions);
-    options.flags = MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE;
-    options.element_num_bytes = 1;
-    options.capacity_num_bytes = data_pipe_capacity_bytes;
-    mojo::DataPipe data_pipe(options);
+    mojo::DataPipe data_pipe(data_pipe_capacity_bytes);
 
     writer = base::MakeUnique<MojoDecoderBufferWriter>(
         std::move(data_pipe.producer_handle));
diff --git a/media/remoting/demuxer_stream_adapter.cc b/media/remoting/demuxer_stream_adapter.cc
index de8bfd0..23ec4f2 100644
--- a/media/remoting/demuxer_stream_adapter.cc
+++ b/media/remoting/demuxer_stream_adapter.cc
@@ -23,13 +23,7 @@
 mojo::DataPipe* DemuxerStreamAdapter::CreateDataPipe() {
   // Capacity in bytes for Mojo data pipe.
   constexpr int kMojoDataPipeCapacityInBytes = 512 * 1024;
-
-  MojoCreateDataPipeOptions options;
-  options.struct_size = sizeof(MojoCreateDataPipeOptions);
-  options.flags = MOJO_WRITE_DATA_FLAG_NONE;
-  options.element_num_bytes = 1;
-  options.capacity_num_bytes = kMojoDataPipeCapacityInBytes;
-  return new mojo::DataPipe(options);
+  return new mojo::DataPipe(kMojoDataPipeCapacityInBytes);
 }
 
 DemuxerStreamAdapter::DemuxerStreamAdapter(
diff --git a/mojo/edk/embedder/README.md b/mojo/edk/embedder/README.md
index e490daf..0b4a30a 100644
--- a/mojo/edk/embedder/README.md
+++ b/mojo/edk/embedder/README.md
@@ -230,8 +230,10 @@
 
   base::ProcessHandle child_handle =
       LaunchCoolChildProcess(channel.PassClientHandle());
-  invitation.Send(child_handle,
-                  mojo::edk::ConnectionParams(channel.PassServerHandle()));
+  invitation.Send(
+      child_handle,
+      mojo::edk::ConnectionParams(mojo::edk::TransportProtocol::kLegacy,
+                                  channel.PassServerHandle()));
 
   // We can start using our end of the pipe immediately. Here we assume the
   // other end will eventually be bound to a local::mojom::Foo implementation,
@@ -290,7 +292,8 @@
       mojo::edk::ScopedIPCSupport::ShutdownPolicy::CLEAN);
 
   auto invitation = mojo::edk::IncomingBrokerClientInvitation::Accept(
-      mojo::edk::ConnectionParams(GetChannelHandle()));
+      mojo::edk::ConnectionParams(mojo::edk::TransportProtocol::kLegacy,
+                                  GetChannelHandle()));
 
   mojo::ScopedMessagePipeHandle my_pipe =
       invitation->ExtractMessagePipe("pretty_cool_pipe");
diff --git a/mojo/edk/embedder/connection_params.cc b/mojo/edk/embedder/connection_params.cc
index 92c343cf..6d7c41a 100644
--- a/mojo/edk/embedder/connection_params.cc
+++ b/mojo/edk/embedder/connection_params.cc
@@ -11,9 +11,6 @@
 namespace mojo {
 namespace edk {
 
-ConnectionParams::ConnectionParams(ScopedPlatformHandle channel)
-    : ConnectionParams(TransportProtocol::kLegacy, std::move(channel)) {}
-
 ConnectionParams::ConnectionParams(TransportProtocol protocol,
                                    ScopedPlatformHandle channel)
     : protocol_(protocol), channel_(std::move(channel)) {
@@ -25,11 +22,8 @@
   *this = std::move(params);
 }
 
-ConnectionParams& ConnectionParams::operator=(ConnectionParams&& params) {
-  protocol_ = params.protocol_;
-  channel_ = std::move(params.channel_);
-  return *this;
-}
+ConnectionParams& ConnectionParams::operator=(ConnectionParams&& params) =
+    default;
 
 ScopedPlatformHandle ConnectionParams::TakeChannelHandle() {
   return std::move(channel_);
diff --git a/mojo/edk/embedder/connection_params.h b/mojo/edk/embedder/connection_params.h
index c85bb02..2e8a711 100644
--- a/mojo/edk/embedder/connection_params.h
+++ b/mojo/edk/embedder/connection_params.h
@@ -17,10 +17,6 @@
 // A set of parameters used when establishing a connection to another process.
 class MOJO_SYSTEM_IMPL_EXPORT ConnectionParams {
  public:
-  // Configures an OS pipe-based, |kBrokerClient| connection to the remote
-  // process using the legacy transport protocol.
-  explicit ConnectionParams(ScopedPlatformHandle channel);
-
   // Configures an OS pipe-based connection of type |type| to the remote process
   // using the given transport |protocol|.
   ConnectionParams(TransportProtocol protocol, ScopedPlatformHandle channel);
diff --git a/mojo/edk/embedder/embedder_unittest.cc b/mojo/edk/embedder/embedder_unittest.cc
index 7e60397c..a59e041 100644
--- a/mojo/edk/embedder/embedder_unittest.cc
+++ b/mojo/edk/embedder/embedder_unittest.cc
@@ -145,8 +145,9 @@
 
   OutgoingBrokerClientInvitation invitation;
   ScopedMessagePipeHandle parent_mp = invitation.AttachMessagePipe("unused");
-  invitation.Send(base::GetCurrentProcessHandle(),
-                  ConnectionParams(pair.PassServerHandle()));
+  invitation.Send(
+      base::GetCurrentProcessHandle(),
+      ConnectionParams(TransportProtocol::kLegacy, pair.PassServerHandle()));
 
   // Close the remote end, simulating child death before the child extracts the
   // attached message pipe.
diff --git a/mojo/edk/system/broker_host.cc b/mojo/edk/system/broker_host.cc
index 6096034..751495b 100644
--- a/mojo/edk/system/broker_host.cc
+++ b/mojo/edk/system/broker_host.cc
@@ -29,8 +29,10 @@
 
   base::MessageLoop::current()->AddDestructionObserver(this);
 
-  channel_ = Channel::Create(this, ConnectionParams(std::move(platform_handle)),
-                             base::ThreadTaskRunnerHandle::Get());
+  channel_ = Channel::Create(
+      this,
+      ConnectionParams(TransportProtocol::kLegacy, std::move(platform_handle)),
+      base::ThreadTaskRunnerHandle::Get());
   channel_->Start();
 }
 
diff --git a/mojo/edk/system/core.cc b/mojo/edk/system/core.cc
index 3c08980..1d90197 100644
--- a/mojo/edk/system/core.cc
+++ b/mojo/edk/system/core.cc
@@ -200,7 +200,8 @@
   GetNodeController()->node()->CreatePortPair(&port0, &port1);
   MojoHandle handle = AddDispatcher(new MessagePipeDispatcher(
       GetNodeController(), port0, kUnknownPipeIdForDebug, 0));
-  ConnectionParams connection_params(std::move(pipe_handle));
+  ConnectionParams connection_params(TransportProtocol::kLegacy,
+                                     std::move(pipe_handle));
   GetNodeController()->ConnectToPeer(std::move(connection_params), port1,
                                      peer_token);
   return ScopedMessagePipeHandle(MessagePipeHandle(handle));
diff --git a/mojo/edk/system/node_controller.cc b/mojo/edk/system/node_controller.cc
index e47725a..0901022a 100644
--- a/mojo/edk/system/node_controller.cc
+++ b/mojo/edk/system/node_controller.cc
@@ -229,7 +229,8 @@
     CancelPendingPortMerges();
     return;
   }
-  connection_params = ConnectionParams(std::move(platform_handle));
+  connection_params = ConnectionParams(connection_params.protocol(),
+                                       std::move(platform_handle));
 #endif
 
   io_task_runner_->PostTask(
@@ -363,9 +364,10 @@
   CHECK(channel_ok);
 #endif  // defined(OS_WIN)
 
-  scoped_refptr<NodeChannel> channel =
-      NodeChannel::Create(this, ConnectionParams(std::move(server_handle)),
-                          io_task_runner_, process_error_callback);
+  scoped_refptr<NodeChannel> channel = NodeChannel::Create(
+      this,
+      ConnectionParams(connection_params.protocol(), std::move(server_handle)),
+      io_task_runner_, process_error_callback);
 
 #else  // !defined(OS_MACOSX) && !defined(OS_NACL)
   scoped_refptr<NodeChannel> channel =
@@ -940,7 +942,8 @@
   }
 
   PlatformChannelPair broker_channel;
-  ConnectionParams connection_params(broker_channel.PassServerHandle());
+  ConnectionParams connection_params(TransportProtocol::kLegacy,
+                                     broker_channel.PassServerHandle());
   scoped_refptr<NodeChannel> client =
       NodeChannel::Create(this, std::move(connection_params), io_task_runner_,
                           ProcessErrorCallback());
@@ -1021,9 +1024,10 @@
     broker = parent;
   } else {
     DCHECK(broker_channel.is_valid());
-    broker =
-        NodeChannel::Create(this, ConnectionParams(std::move(broker_channel)),
-                            io_task_runner_, ProcessErrorCallback());
+    broker = NodeChannel::Create(
+        this,
+        ConnectionParams(TransportProtocol::kLegacy, std::move(broker_channel)),
+        io_task_runner_, ProcessErrorCallback());
     AddPeer(broker_name, broker, true /* start_channel */);
   }
 
@@ -1161,9 +1165,10 @@
     return;
   }
 
-  scoped_refptr<NodeChannel> channel =
-      NodeChannel::Create(this, ConnectionParams(std::move(channel_handle)),
-                          io_task_runner_, ProcessErrorCallback());
+  scoped_refptr<NodeChannel> channel = NodeChannel::Create(
+      this,
+      ConnectionParams(TransportProtocol::kLegacy, std::move(channel_handle)),
+      io_task_runner_, ProcessErrorCallback());
 
   DVLOG(1) << "Adding new peer " << name << " via parent introduction.";
   AddPeer(name, channel, true /* start_channel */);
diff --git a/mojo/public/cpp/system/data_pipe.h b/mojo/public/cpp/system/data_pipe.h
index 0dbc3c7..9f58c27 100644
--- a/mojo/public/cpp/system/data_pipe.h
+++ b/mojo/public/cpp/system/data_pipe.h
@@ -134,6 +134,7 @@
 class DataPipe {
  public:
   DataPipe();
+  explicit DataPipe(uint32_t capacity_num_bytes);
   explicit DataPipe(const MojoCreateDataPipeOptions& options);
   ~DataPipe();
 
@@ -148,6 +149,19 @@
   DCHECK_EQ(MOJO_RESULT_OK, result);
 }
 
+inline DataPipe::DataPipe(uint32_t capacity_num_bytes) {
+  MojoCreateDataPipeOptions options;
+  options.struct_size = sizeof(MojoCreateDataPipeOptions);
+  options.flags = MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE;
+  options.element_num_bytes = 1;
+  options.capacity_num_bytes = capacity_num_bytes;
+  mojo::DataPipe data_pipe(options);
+  MojoResult result =
+      CreateDataPipe(&options, &producer_handle, &consumer_handle);
+  ALLOW_UNUSED_LOCAL(result);
+  DCHECK_EQ(MOJO_RESULT_OK, result);
+}
+
 inline DataPipe::DataPipe(const MojoCreateDataPipeOptions& options) {
   MojoResult result =
       CreateDataPipe(&options, &producer_handle, &consumer_handle);
diff --git a/remoting/client/BUILD.gn b/remoting/client/BUILD.gn
index 3a3e07a..d3ded033 100644
--- a/remoting/client/BUILD.gn
+++ b/remoting/client/BUILD.gn
@@ -31,6 +31,10 @@
     "dual_buffer_frame_consumer.h",
     "empty_cursor_filter.cc",
     "empty_cursor_filter.h",
+    "fling_animation.cc",
+    "fling_animation.h",
+    "fling_tracker.cc",
+    "fling_tracker.h",
     "gesture_interpreter.cc",
     "gesture_interpreter.h",
     "host_experiment_sender.cc",
@@ -113,6 +117,8 @@
     "desktop_viewport_unittest.cc",
     "dual_buffer_frame_consumer_unittest.cc",
     "empty_cursor_filter_unittest.cc",
+    "fling_animation_unittest.cc",
+    "fling_animation_unittest.h",
     "key_event_mapper_unittest.cc",
     "normalizing_input_filter_cros_unittest.cc",
     "normalizing_input_filter_mac_unittest.cc",
diff --git a/remoting/client/fling_animation.cc b/remoting/client/fling_animation.cc
new file mode 100644
index 0000000..109a5c4
--- /dev/null
+++ b/remoting/client/fling_animation.cc
@@ -0,0 +1,46 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "remoting/client/fling_animation.h"
+
+#include "base/time/default_tick_clock.h"
+
+namespace remoting {
+
+FlingAnimation::FlingAnimation(float time_constant,
+                               const FlingCallback& fling_callback)
+    : fling_tracker_(time_constant),
+      fling_callback_(fling_callback),
+      clock_(new base::DefaultTickClock()) {}
+
+FlingAnimation::~FlingAnimation() {}
+
+void FlingAnimation::SetVelocity(float velocity_x, float velocity_y) {
+  fling_tracker_.StartFling(velocity_x, velocity_y);
+  fling_start_time_ = clock_->NowTicks();
+}
+
+bool FlingAnimation::IsAnimationInProgress() const {
+  return fling_tracker_.IsFlingInProgress();
+}
+
+void FlingAnimation::Tick() {
+  float dx, dy;
+  bool in_progress = fling_tracker_.TrackMovement(
+      clock_->NowTicks() - fling_start_time_, &dx, &dy);
+  if (in_progress) {
+    fling_callback_.Run(dx, dy);
+  }
+}
+
+void FlingAnimation::Abort() {
+  fling_tracker_.StopFling();
+}
+
+void FlingAnimation::SetTickClockForTest(
+    std::unique_ptr<base::TickClock> clock) {
+  clock_ = std::move(clock);
+}
+
+}  // namespace remoting
diff --git a/remoting/client/fling_animation.h b/remoting/client/fling_animation.h
new file mode 100644
index 0000000..c7672e9
--- /dev/null
+++ b/remoting/client/fling_animation.h
@@ -0,0 +1,56 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef REMOTING_CLIENT_FLING_ANIMATION_H_
+#define REMOTING_CLIENT_FLING_ANIMATION_H_
+
+#include <memory>
+
+#include "base/callback.h"
+#include "base/time/tick_clock.h"
+#include "remoting/client/fling_tracker.h"
+
+namespace remoting {
+
+// This class helps interpolating the positions of an object with the given
+// initial velocity and feeds the change in position back to the callback.
+class FlingAnimation {
+ public:
+  // arguments are delta_x and delta_y with respect to the positions at previous
+  // tick.
+  using FlingCallback = base::Callback<void(float, float)>;
+
+  FlingAnimation(float time_constant, const FlingCallback& fling_callback);
+  ~FlingAnimation();
+
+  // (Re)starts the fling animation with the given initial velocity.
+  void SetVelocity(float velocity_x, float velocity_y);
+
+  bool IsAnimationInProgress() const;
+
+  // Moves forward the animation to catch up with current time. Calls the fling
+  // callback with the new positions. No-op if fling animation is not in
+  // progress.
+  void Tick();
+
+  // Aborts the animation.
+  void Abort();
+
+  void SetTickClockForTest(std::unique_ptr<base::TickClock> clock);
+
+ private:
+  FlingTracker fling_tracker_;
+  FlingCallback fling_callback_;
+
+  base::TimeTicks fling_start_time_;
+
+  std::unique_ptr<base::TickClock> clock_;
+
+  // FlingAnimation is neither copyable nor movable.
+  FlingAnimation(const FlingAnimation&) = delete;
+  FlingAnimation& operator=(const FlingAnimation&) = delete;
+};
+
+}  // namespace remoting
+#endif  // REMOTING_CLIENT_FLING_ANIMATION_H_
diff --git a/remoting/client/fling_animation_unittest.cc b/remoting/client/fling_animation_unittest.cc
new file mode 100644
index 0000000..73c203e
--- /dev/null
+++ b/remoting/client/fling_animation_unittest.cc
@@ -0,0 +1,153 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "remoting/client/fling_animation.h"
+
+#include <cmath>
+
+#include "base/bind.h"
+#include "base/memory/ptr_util.h"
+#include "base/test/simple_test_tick_clock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace remoting {
+
+namespace {
+
+const float kFlingTimeConstant = 325.f;
+
+}  // namespace
+
+class FlingAnimationTest : public testing::Test {
+ public:
+  void SetUp() override;
+  void TearDown() override;
+
+ protected:
+  void TickAnimation(base::TimeDelta time_delta);
+
+  // Must be called after the animation ticks.
+  void AssertDeltaChanged();
+
+  FlingAnimation fling_animation_{
+      kFlingTimeConstant,
+      base::Bind(&FlingAnimationTest::OnDeltaChanged, base::Unretained(this))};
+
+  float received_dx_ = 0.f;
+  float received_dy_ = 0.f;
+
+ private:
+  void OnDeltaChanged(float dx, float dy);
+
+  bool change_received_ = false;
+
+  // Owned by |fling_animation_|.
+  base::SimpleTestTickClock* mock_clock_;
+};
+
+void FlingAnimationTest::SetUp() {
+  mock_clock_ = new base::SimpleTestTickClock();
+  fling_animation_.SetTickClockForTest(base::WrapUnique(mock_clock_));
+}
+
+void FlingAnimationTest::TearDown() {
+  ASSERT_FALSE(change_received_);
+}
+
+void FlingAnimationTest::TickAnimation(base::TimeDelta time_delta) {
+  mock_clock_->Advance(time_delta);
+  fling_animation_.Tick();
+}
+
+void FlingAnimationTest::AssertDeltaChanged() {
+  ASSERT_TRUE(change_received_);
+  change_received_ = false;
+}
+
+void FlingAnimationTest::OnDeltaChanged(float dx, float dy) {
+  received_dx_ = dx;
+  received_dy_ = dy;
+  change_received_ = true;
+}
+
+TEST_F(FlingAnimationTest, TestNoFling) {
+  EXPECT_FALSE(fling_animation_.IsAnimationInProgress());
+
+  // This should not change the delta.
+  TickAnimation(base::TimeDelta::FromMilliseconds(100));
+}
+
+TEST_F(FlingAnimationTest, TestFlingWillEventuallyStop) {
+  fling_animation_.SetVelocity(1500.f, 1200.f);
+
+  EXPECT_TRUE(fling_animation_.IsAnimationInProgress());
+
+  TickAnimation(base::TimeDelta::FromMinutes(1));
+
+  EXPECT_FALSE(fling_animation_.IsAnimationInProgress());
+}
+
+TEST_F(FlingAnimationTest, TestFlingDeltaIsDecreasing) {
+  fling_animation_.SetVelocity(1500.f, 1200.f);
+
+  float previous_dx = std::numeric_limits<float>::infinity();
+  float previous_dy = std::numeric_limits<float>::infinity();
+
+  while (true) {
+    TickAnimation(base::TimeDelta::FromMilliseconds(16));
+    if (!fling_animation_.IsAnimationInProgress()) {
+      break;
+    }
+    AssertDeltaChanged();
+    float hyp =
+        std::sqrt(received_dx_ * received_dx_ + received_dy_ * received_dy_);
+    float prev_hyp =
+        std::sqrt(previous_dx * previous_dx + previous_dy * previous_dy);
+    EXPECT_LT(hyp, prev_hyp);
+    previous_dx = received_dx_;
+    previous_dy = received_dy_;
+  }
+}
+
+TEST_F(FlingAnimationTest, TestIgnoreLowVelocity) {
+  fling_animation_.SetVelocity(5.f, 5.f);
+
+  EXPECT_FALSE(fling_animation_.IsAnimationInProgress());
+
+  // This should not change the delta.
+  TickAnimation(base::TimeDelta::FromMilliseconds(5));
+}
+
+TEST_F(FlingAnimationTest, TestAbortAnimation) {
+  fling_animation_.SetVelocity(1500.f, 1200.f);
+
+  EXPECT_TRUE(fling_animation_.IsAnimationInProgress());
+
+  TickAnimation(base::TimeDelta::FromMilliseconds(16));
+  AssertDeltaChanged();
+  EXPECT_TRUE(fling_animation_.IsAnimationInProgress());
+
+  fling_animation_.Abort();
+  EXPECT_FALSE(fling_animation_.IsAnimationInProgress());
+}
+
+TEST_F(FlingAnimationTest, TestResetVelocity) {
+  fling_animation_.SetVelocity(1000.f, -1000.f);
+  EXPECT_TRUE(fling_animation_.IsAnimationInProgress());
+  TickAnimation(base::TimeDelta::FromMilliseconds(16));
+  EXPECT_TRUE(fling_animation_.IsAnimationInProgress());
+  AssertDeltaChanged();
+  EXPECT_GT(received_dx_, 0);
+  EXPECT_LT(received_dy_, 0);
+
+  fling_animation_.SetVelocity(-1000.f, 1000.f);
+  EXPECT_TRUE(fling_animation_.IsAnimationInProgress());
+  TickAnimation(base::TimeDelta::FromMilliseconds(16));
+  EXPECT_TRUE(fling_animation_.IsAnimationInProgress());
+  AssertDeltaChanged();
+  EXPECT_LT(received_dx_, 0);
+  EXPECT_GT(received_dy_, 0);
+}
+
+}  // namespace remoting
diff --git a/remoting/client/fling_tracker.cc b/remoting/client/fling_tracker.cc
new file mode 100644
index 0000000..fb6bc7c
--- /dev/null
+++ b/remoting/client/fling_tracker.cc
@@ -0,0 +1,109 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "remoting/client/fling_tracker.h"
+
+#include <cmath>
+
+namespace remoting {
+
+namespace {
+
+// TODO(yuweih): May need to tweak these numbers to get better smoothness.
+
+// Stop flinging if the speed drops below this.
+// 1px per 16ms. i.e. 1px/frame.
+// TODO(yuweih): The screen unit may not be in pixel. This needs to be
+//               normalized with the DPI.
+const float kMinTrackSpeed = 0.0625f;
+
+// The minimum fling duration (ms) needed to trigger the fling animation. This
+// is to prevent unintentional fling with low velocity.
+const float kMinFlingTime = 500.f;
+
+float GetExpFactor(float time_constant, float time_elapsed) {
+  return std::exp(-time_elapsed / time_constant);
+}
+
+float GetDisplacement(float initial_speed_rate, float exp_factor) {
+  // x = v0 * (1 - e^(-t / T))
+  // This comes from a solution to the linear drag equation F=-kv
+  return initial_speed_rate * (1.f - exp_factor);
+}
+
+float GetSpeed(float initial_speed_rate,
+               float time_constant,
+               float exp_factor) {
+  // v = (1 / T) * v0 * e^(-t / T).
+  // Derivative of the displacement.
+  return (1.f / time_constant) * initial_speed_rate * exp_factor;
+}
+
+}  // namespace
+
+FlingTracker::FlingTracker(float time_constant)
+    : time_constant_(time_constant) {}
+
+FlingTracker::~FlingTracker() {}
+
+void FlingTracker::StartFling(float velocity_x, float velocity_y) {
+  start_time_ = base::TimeTicks::Now();
+
+  initial_speed_rate_ =
+      std::sqrt(velocity_x * velocity_x + velocity_y * velocity_y);
+
+  if (GetSpeed(initial_speed_rate_, time_constant_,
+               GetExpFactor(time_constant_, kMinFlingTime)) < kMinTrackSpeed) {
+    StopFling();
+    return;
+  }
+
+  velocity_ratio_x_ = velocity_x / initial_speed_rate_;
+  velocity_ratio_y_ = velocity_y / initial_speed_rate_;
+
+  previous_position_x_ = 0;
+  previous_position_y_ = 0;
+}
+
+void FlingTracker::StopFling() {
+  initial_speed_rate_ = 0.f;
+}
+
+bool FlingTracker::IsFlingInProgress() const {
+  return initial_speed_rate_ > 0;
+}
+
+bool FlingTracker::TrackMovement(base::TimeDelta time_elapsed,
+                                 float* dx,
+                                 float* dy) {
+  if (!IsFlingInProgress()) {
+    return false;
+  }
+
+  float time_elapsed_ms = time_elapsed.InMilliseconds();
+
+  float exp_factor = GetExpFactor(time_constant_, time_elapsed_ms);
+
+  float speed = GetSpeed(initial_speed_rate_, time_constant_, exp_factor);
+
+  if (speed < kMinTrackSpeed) {
+    StopFling();
+    return false;
+  }
+
+  float displacement = GetDisplacement(initial_speed_rate_, exp_factor);
+
+  float position_x = displacement * velocity_ratio_x_;
+  float position_y = displacement * velocity_ratio_y_;
+
+  *dx = position_x - previous_position_x_;
+  *dy = position_y - previous_position_y_;
+
+  previous_position_x_ = position_x;
+  previous_position_y_ = position_y;
+
+  return true;
+}
+
+}  // namespace remoting
diff --git a/remoting/client/fling_tracker.h b/remoting/client/fling_tracker.h
new file mode 100644
index 0000000..eb8a50a
--- /dev/null
+++ b/remoting/client/fling_tracker.h
@@ -0,0 +1,52 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef REMOTING_CLIENT_FLING_TRACKER_H_
+#define REMOTING_CLIENT_FLING_TRACKER_H_
+
+#include "base/time/time.h"
+
+namespace remoting {
+
+// A class for tracking the positions of an object moving through a viscous
+// liquid.
+class FlingTracker {
+ public:
+  // time_constant: The larger the number the longer it takes to fling.
+  explicit FlingTracker(float time_constant);
+
+  ~FlingTracker();
+
+  // Sets the position of the object and start fling. This will reset the
+  // existing fling.
+  void StartFling(float velocity_x, float velocity_y);
+
+  void StopFling();
+
+  bool IsFlingInProgress() const;
+
+  // time_elapsed: The time elapsed since the animation has started.
+  // Moves forward the object to catch up with |time_elapsed|. The change in
+  // positions will be written to |dx| and |dy|.
+  // Returns true if the fling is still in progress at |time_elapsed|, false
+  // otherwise, in which case |dx| and |dy| will not be touched.
+  bool TrackMovement(base::TimeDelta time_elapsed, float* dx, float* dy);
+
+ private:
+  float time_constant_;
+  float initial_speed_rate_ = 0.f;
+  float velocity_ratio_x_ = 0.f;
+  float velocity_ratio_y_ = 0.f;
+  float previous_position_x_ = 0.f;
+  float previous_position_y_ = 0.f;
+
+  base::TimeTicks start_time_;
+
+  // FlingTracker is neither copyable nor movable.
+  FlingTracker(const FlingTracker&) = delete;
+  FlingTracker& operator=(const FlingTracker&) = delete;
+};
+
+}  // namespace remoting
+#endif  // REMOTING_CLIENT_FLING_TRACKER_H_
diff --git a/remoting/client/gesture_interpreter.cc b/remoting/client/gesture_interpreter.cc
index 85dfd340..d4389dc9 100644
--- a/remoting/client/gesture_interpreter.cc
+++ b/remoting/client/gesture_interpreter.cc
@@ -3,15 +3,25 @@
 // found in the LICENSE file.
 
 #include "remoting/client/gesture_interpreter.h"
-#include "base/logging.h"
+
+#include "base/bind.h"
+#include "base/time/time.h"
 #include "remoting/client/direct_input_strategy.h"
 
-namespace remoting {
+namespace {
 
+const float kOneFingerFlingTimeConstant = 325.f;
+
+}  // namespace
+
+namespace remoting {
 GestureInterpreter::GestureInterpreter(
     const DesktopViewport::TransformationCallback& on_transformation_changed,
     ChromotingSession* input_stub)
-    : input_stub_(input_stub) {
+    : input_stub_(input_stub),
+      pan_animation_(kOneFingerFlingTimeConstant,
+                     base::Bind(&GestureInterpreter::PanWithoutAbortAnimations,
+                                base::Unretained(this))) {
   viewport_.RegisterOnTransformationChangedCallback(on_transformation_changed,
                                                     true);
 
@@ -22,16 +32,17 @@
 GestureInterpreter::~GestureInterpreter() {}
 
 void GestureInterpreter::Pinch(float pivot_x, float pivot_y, float scale) {
+  AbortAnimations();
   input_strategy_->HandlePinch(pivot_x, pivot_y, scale, &viewport_);
 }
 
 void GestureInterpreter::Pan(float translation_x, float translation_y) {
-  // TODO(yuweih): Pan deceleration animation.
-  input_strategy_->HandlePan(translation_x, translation_y, is_dragging_mode_,
-                             &viewport_);
+  AbortAnimations();
+  PanWithoutAbortAnimations(translation_x, translation_y);
 }
 
 void GestureInterpreter::Tap(float x, float y) {
+  AbortAnimations();
   float cursor_x, cursor_y;
   input_strategy_->FindCursorPositions(x, y, viewport_, &cursor_x, &cursor_y);
   InjectMouseClick(cursor_x, cursor_y,
@@ -39,6 +50,7 @@
 }
 
 void GestureInterpreter::TwoFingerTap(float x, float y) {
+  AbortAnimations();
   float cursor_x, cursor_y;
   input_strategy_->FindCursorPositions(x, y, viewport_, &cursor_x, &cursor_y);
   InjectMouseClick(cursor_x, cursor_y,
@@ -46,6 +58,7 @@
 }
 
 void GestureInterpreter::LongPress(float x, float y, GestureState state) {
+  AbortAnimations();
   float cursor_x, cursor_y;
   input_strategy_->FindCursorPositions(x, y, viewport_, &cursor_x, &cursor_y);
 
@@ -55,12 +68,16 @@
                               is_dragging_mode_);
 }
 
-void GestureInterpreter::InjectMouseClick(
-    float x,
-    float y,
-    protocol::MouseEvent_MouseButton button) {
-  input_stub_->SendMouseEvent(x, y, button, true);
-  input_stub_->SendMouseEvent(x, y, button, false);
+void GestureInterpreter::OneFingerFling(float velocity_x, float velocity_y) {
+  AbortAnimations();
+  pan_animation_.SetVelocity(velocity_x, velocity_y);
+  pan_animation_.Tick();
+}
+
+void GestureInterpreter::ProcessAnimations() {
+  if (pan_animation_.IsAnimationInProgress()) {
+    pan_animation_.Tick();
+  }
 }
 
 void GestureInterpreter::OnSurfaceSizeChanged(int width, int height) {
@@ -71,4 +88,22 @@
   viewport_.SetDesktopSize(width, height);
 }
 
+void GestureInterpreter::PanWithoutAbortAnimations(float translation_x,
+                                                   float translation_y) {
+  input_strategy_->HandlePan(translation_x, translation_y, is_dragging_mode_,
+                             &viewport_);
+}
+
+void GestureInterpreter::AbortAnimations() {
+  pan_animation_.Abort();
+}
+
+void GestureInterpreter::InjectMouseClick(
+    float x,
+    float y,
+    protocol::MouseEvent_MouseButton button) {
+  input_stub_->SendMouseEvent(x, y, button, true);
+  input_stub_->SendMouseEvent(x, y, button, false);
+}
+
 }  // namespace remoting
diff --git a/remoting/client/gesture_interpreter.h b/remoting/client/gesture_interpreter.h
index 9ad968ff..f4d369b 100644
--- a/remoting/client/gesture_interpreter.h
+++ b/remoting/client/gesture_interpreter.h
@@ -9,6 +9,7 @@
 
 #include "remoting/client/chromoting_session.h"
 #include "remoting/client/desktop_viewport.h"
+#include "remoting/client/fling_animation.h"
 #include "remoting/proto/event.pb.h"
 
 namespace remoting {
@@ -27,19 +28,39 @@
   ~GestureInterpreter();
 
   // Coordinates of the OpenGL view surface will be used.
+
+  // This can happen in conjunction with Pan().
   void Pinch(float pivot_x, float pivot_y, float scale);
+
+  // Called whenever the user did a pan gesture. It can be one-finger pan, no
+  // matter long-press in on or not, or two-finger pan in conjunction with the
+  // pinch gesture. Two-finger pan without pinch is consider a scroll gesture.
   void Pan(float translation_x, float translation_y);
+
+  // Called when the user did a one-finger tap.
   void Tap(float x, float y);
+
   void TwoFingerTap(float x, float y);
 
   // Caller is expected to call both Pan() and LongPress() when long-press is in
   // progress.
   void LongPress(float x, float y, GestureState state);
 
+  // Called when the user has just done a one-finger pan (no long-press or
+  // pinching) and the pan gesture still has some final velocity.
+  void OneFingerFling(float velocity_x, float velocity_y);
+
+  // Called to process one animation frame.
+  void ProcessAnimations();
+
   void OnSurfaceSizeChanged(int width, int height);
   void OnDesktopSizeChanged(int width, int height);
 
  private:
+  void PanWithoutAbortAnimations(float translation_x, float translation_y);
+
+  void AbortAnimations();
+
   void InjectMouseClick(float x,
                         float y,
                         protocol::MouseEvent_MouseButton button);
@@ -49,6 +70,8 @@
   ChromotingSession* input_stub_;
   bool is_dragging_mode_ = false;
 
+  FlingAnimation pan_animation_;
+
   // GestureInterpreter is neither copyable nor movable.
   GestureInterpreter(const GestureInterpreter&) = delete;
   GestureInterpreter& operator=(const GestureInterpreter&) = delete;
diff --git a/remoting/host/win/unprivileged_process_delegate.cc b/remoting/host/win/unprivileged_process_delegate.cc
index af368b44..5789ae2 100644
--- a/remoting/host/win/unprivileged_process_delegate.cc
+++ b/remoting/host/win/unprivileged_process_delegate.cc
@@ -311,8 +311,10 @@
     ReportFatalError();
     return;
   }
-  invitation.Send(worker_process.Get(),
-                  mojo::edk::ConnectionParams(mojo_channel.PassServerHandle()));
+  invitation.Send(
+      worker_process.Get(),
+      mojo::edk::ConnectionParams(mojo::edk::TransportProtocol::kLegacy,
+                                  mojo_channel.PassServerHandle()));
 
   channel_ = std::move(server);
 
diff --git a/remoting/host/win/wts_session_process_delegate.cc b/remoting/host/win/wts_session_process_delegate.cc
index a56232c7..a29f5c0 100644
--- a/remoting/host/win/wts_session_process_delegate.cc
+++ b/remoting/host/win/wts_session_process_delegate.cc
@@ -559,7 +559,8 @@
 
   broker_client_invitation_->Send(
       worker_process.Get(),
-      mojo::edk::ConnectionParams(std::move(server_handle)));
+      mojo::edk::ConnectionParams(mojo::edk::TransportProtocol::kLegacy,
+                                  std::move(server_handle)));
   broker_client_invitation_.reset();
   worker_process_ = std::move(worker_process);
 
diff --git a/remoting/ios/client_gestures.h b/remoting/ios/client_gestures.h
index 132302e..455609ed7 100644
--- a/remoting/ios/client_gestures.h
+++ b/remoting/ios/client_gestures.h
@@ -36,6 +36,7 @@
  @private
   UILongPressGestureRecognizer* _longPressRecognizer;
   UIPanGestureRecognizer* _panRecognizer;
+  UIPanGestureRecognizer* _flingRecognizer;
   UIPanGestureRecognizer* _threeFingerPanRecognizer;
   UIPinchGestureRecognizer* _pinchRecognizer;
   UITapGestureRecognizer* _singleTapRecognizer;
@@ -58,6 +59,8 @@
 - (IBAction)tapGestureTriggered:(UITapGestureRecognizer*)sender;
 // Scroll the view in 2d
 - (IBAction)panGestureTriggered:(UIPanGestureRecognizer*)sender;
+// Handle one finger fling gesture
+- (IBAction)flingGestureTriggered:(UIPanGestureRecognizer*)sender;
 // Right mouse click and drag, moves cursor
 - (IBAction)longPressGestureTriggered:(UILongPressGestureRecognizer*)sender;
 // Right mouse click
diff --git a/remoting/ios/client_gestures.mm b/remoting/ios/client_gestures.mm
index f6e0be75..20e4701c 100644
--- a/remoting/ios/client_gestures.mm
+++ b/remoting/ios/client_gestures.mm
@@ -33,6 +33,14 @@
   _panRecognizer.delegate = self;
   [view addGestureRecognizer:_panRecognizer];
 
+  _flingRecognizer = [[UIPanGestureRecognizer alloc]
+      initWithTarget:self
+              action:@selector(flingGestureTriggered:)];
+  _flingRecognizer.minimumNumberOfTouches = 1;
+  _flingRecognizer.maximumNumberOfTouches = 1;
+  _flingRecognizer.delegate = self;
+  [view addGestureRecognizer:_flingRecognizer];
+
   _threeFingerPanRecognizer = [[UIPanGestureRecognizer alloc]
       initWithTarget:self
               action:@selector(threeFingerPanGestureTriggered:)];
@@ -120,12 +128,8 @@
 
 // Change position of scene.  This can occur during a pinch or long press.
 // Or perform a Mouse Wheel Scroll.
-// TODO(yuweih): The comment above doesn't seem right. Non-panning gestures
-//     should be moved out of this method.
 - (IBAction)panGestureTriggered:(UIPanGestureRecognizer*)sender {
-  // TODO(yuweih): Need deceleration animation, probably in another class.
-  if ([sender state] == UIGestureRecognizerStateChanged &&
-      [sender numberOfTouches] == 1) {
+  if ([sender state] == UIGestureRecognizerStateChanged) {
     CGPoint translation = [sender translationInView:_view];
     _client.gestureInterpreter->Pan(translation.x, translation.y);
 
@@ -228,6 +232,17 @@
   //   }
 }
 
+// Do fling on the viewport. This will happen at the end of the one-finger
+// panning.
+- (IBAction)flingGestureTriggered:(UIPanGestureRecognizer*)sender {
+  if ([sender state] == UIGestureRecognizerStateEnded) {
+    CGPoint velocity = [sender velocityInView:_view];
+    if (velocity.x != 0 || velocity.y != 0) {
+      _client.gestureInterpreter->OneFingerFling(velocity.x, velocity.y);
+    }
+  }
+}
+
 // Click-Drag mouse operation.  This can occur during a Pan.
 - (IBAction)longPressGestureTriggered:(UILongPressGestureRecognizer*)sender {
   CGPoint touchPoint = [sender locationInView:_view];
@@ -332,6 +347,14 @@
     }
   }
 
+  if (gestureRecognizer == _flingRecognizer ||
+      (gestureRecognizer == _panRecognizer)) {
+    if (otherGestureRecognizer == _flingRecognizer ||
+        otherGestureRecognizer == _panRecognizer) {
+      return YES;
+    }
+  }
+
   if (gestureRecognizer == _longPressRecognizer ||
       gestureRecognizer == _panRecognizer) {
     if (otherGestureRecognizer == _longPressRecognizer ||
diff --git a/remoting/ios/display/gl_display_handler.h b/remoting/ios/display/gl_display_handler.h
index 7bd513a5..a23cee7 100644
--- a/remoting/ios/display/gl_display_handler.h
+++ b/remoting/ios/display/gl_display_handler.h
@@ -33,6 +33,8 @@
 // Notifies the delegate that the size of the desktop image has changed.
 - (void)canvasSizeChanged:(CGSize)size;
 
+- (void)rendererTicked;
+
 @end
 
 @interface GlDisplayHandler : NSObject {
diff --git a/remoting/ios/display/gl_display_handler.mm b/remoting/ios/display/gl_display_handler.mm
index 45fda31..e8565ef 100644
--- a/remoting/ios/display/gl_display_handler.mm
+++ b/remoting/ios/display/gl_display_handler.mm
@@ -149,6 +149,9 @@
 
 void Core::OnFrameRendered() {
   [eagl_context_ presentRenderbuffer:GL_RENDERBUFFER];
+  runtime_->ui_task_runner()->PostTask(FROM_HERE, base::BindBlockArc(^() {
+                                         [handler_delegate_ rendererTicked];
+                                       }));
 }
 
 void Core::OnSizeChanged(int width, int height) {
diff --git a/remoting/ios/session/remoting_client.mm b/remoting/ios/session/remoting_client.mm
index 939f428d..235400d0 100644
--- a/remoting/ios/session/remoting_client.mm
+++ b/remoting/ios/session/remoting_client.mm
@@ -119,7 +119,6 @@
       _sessonDelegate->GetWeakPtr(), [_displayHandler CreateCursorShapeStub],
       [_displayHandler CreateVideoRenderer], audioPlayer, info,
       client_auth_config));
-  _session->Connect();
 
   __weak GlDisplayHandler* weakDisplayHandler = _displayHandler;
   _gestureInterpreter.reset(new remoting::GestureInterpreter(
@@ -127,6 +126,8 @@
         [weakDisplayHandler onPixelTransformationChanged:matrix];
       }),
       _session.get()));
+
+  _session->Connect();
 }
 
 - (void)disconnectFromHost {
@@ -233,9 +234,11 @@
 #pragma mark - GlDisplayHandlerDelegate
 
 - (void)canvasSizeChanged:(CGSize)size {
-  if (_gestureInterpreter) {
-    _gestureInterpreter->OnDesktopSizeChanged(size.width, size.height);
-  }
+  _gestureInterpreter->OnDesktopSizeChanged(size.width, size.height);
+}
+
+- (void)rendererTicked {
+  _gestureInterpreter->ProcessAnimations();
 }
 
 @end
diff --git a/services/preferences/pref_store_manager_impl.cc b/services/preferences/pref_store_manager_impl.cc
index 8232baf..bc499741 100644
--- a/services/preferences/pref_store_manager_impl.cc
+++ b/services/preferences/pref_store_manager_impl.cc
@@ -254,19 +254,9 @@
     mojom::PrefRegistryPtr pref_registry,
     const std::vector<PrefValueStore::PrefStoreType>& already_connected_types,
     const ConnectCallback& callback) {
-  std::vector<std::string> observed_prefs;
-  for (auto& registration : pref_registry->registrations) {
-    observed_prefs.push_back(registration.first);
-    const auto& key = registration.first;
-    auto& default_value = registration.second->default_value;
-    const base::Value* old_default = nullptr;
-    // TODO(sammc): Once non-owning registrations are supported, disallow
-    // multiple owners instead of just checking for consistent defaults.
-    if (defaults_->GetValue(key, &old_default))
-      DCHECK(old_default->Equals(default_value.get()));
-    else
-      defaults_->SetDefaultValue(key, std::move(default_value));
-  }
+  // TODO(crbug.com/719770): Once owning registrations are supported, check the
+  // default values in |pref_registry| for consistency with existing defaults
+  // and add them to the default pref store.
 
   // Only connect to pref stores the client isn't already connected to.
   PrefStorePtrs ptrs;
@@ -275,12 +265,12 @@
       ptrs.insert(std::make_pair(entry.first, entry.second.get()));
     }
   }
-  ConnectionBarrier::Create(
-      ptrs,
-      persistent_pref_store_->CreateConnection(
-          PersistentPrefStoreImpl::ObservedPrefs(observed_prefs.begin(),
-                                                 observed_prefs.end())),
-      observed_prefs, callback);
+  ConnectionBarrier::Create(ptrs,
+                            persistent_pref_store_->CreateConnection(
+                                PersistentPrefStoreImpl::ObservedPrefs(
+                                    pref_registry->registrations.begin(),
+                                    pref_registry->registrations.end())),
+                            pref_registry->registrations, callback);
 }
 
 void PrefStoreManagerImpl::OnPersistentPrefStoreReady() {
diff --git a/services/preferences/public/cpp/pref_registry_serializer.cc b/services/preferences/public/cpp/pref_registry_serializer.cc
index b64e2c7..484e8ab9a 100644
--- a/services/preferences/public/cpp/pref_registry_serializer.cc
+++ b/services/preferences/public/cpp/pref_registry_serializer.cc
@@ -11,9 +11,7 @@
 mojom::PrefRegistryPtr SerializePrefRegistry(PrefRegistry& pref_registry) {
   auto registry = mojom::PrefRegistry::New();
   for (auto& pref : pref_registry) {
-    registry->registrations[pref.first] = mojom::PrefRegistration::New(
-        pref.second->CreateDeepCopy(),
-        pref_registry.GetRegistrationFlags(pref.first));
+    registry->registrations.push_back(pref.first);
   }
   return registry;
 }
diff --git a/services/preferences/public/cpp/pref_service_factory.cc b/services/preferences/public/cpp/pref_service_factory.cc
index 58ff031..2f1f4316 100644
--- a/services/preferences/public/cpp/pref_service_factory.cc
+++ b/services/preferences/public/cpp/pref_service_factory.cc
@@ -38,7 +38,7 @@
 
 void DoNothingHandleReadError(PersistentPrefStore::PrefReadError error) {}
 
-scoped_refptr<PrefStore> CreatePrefStore(
+scoped_refptr<PrefStore> CreatePrefStoreClient(
     PrefValueStore::PrefStoreType store_type,
     std::unordered_map<PrefValueStore::PrefStoreType,
                        mojom::PrefStoreConnectionPtr>* connections) {
@@ -60,17 +60,18 @@
     std::unordered_map<PrefValueStore::PrefStoreType,
                        mojom::PrefStoreConnectionPtr> connections) {
   scoped_refptr<PrefStore> managed_prefs =
-      CreatePrefStore(PrefValueStore::MANAGED_STORE, &connections);
-  scoped_refptr<PrefStore> supervised_user_prefs =
-      CreatePrefStore(PrefValueStore::SUPERVISED_USER_STORE, &connections);
+      CreatePrefStoreClient(PrefValueStore::MANAGED_STORE, &connections);
+  scoped_refptr<PrefStore> supervised_user_prefs = CreatePrefStoreClient(
+      PrefValueStore::SUPERVISED_USER_STORE, &connections);
   scoped_refptr<PrefStore> extension_prefs =
-      CreatePrefStore(PrefValueStore::EXTENSION_STORE, &connections);
+      CreatePrefStoreClient(PrefValueStore::EXTENSION_STORE, &connections);
   scoped_refptr<PrefStore> command_line_prefs =
-      CreatePrefStore(PrefValueStore::COMMAND_LINE_STORE, &connections);
+      CreatePrefStoreClient(PrefValueStore::COMMAND_LINE_STORE, &connections);
   scoped_refptr<PrefStore> recommended_prefs =
-      CreatePrefStore(PrefValueStore::RECOMMENDED_STORE, &connections);
-  scoped_refptr<PrefStore> default_prefs =
-      CreatePrefStore(PrefValueStore::DEFAULT_STORE, &connections);
+      CreatePrefStoreClient(PrefValueStore::RECOMMENDED_STORE, &connections);
+  // TODO(crbug.com/719770): Once owning registrations are supported, pass the
+  // default values of owned prefs to the service and connect to the service's
+  // defaults pref store instead of using a local one.
   scoped_refptr<PersistentPrefStore> persistent_pref_store(
       new PersistentPrefStoreClient(
           std::move(persistent_pref_store_connection)));
@@ -78,7 +79,7 @@
   auto* pref_value_store = new PrefValueStore(
       managed_prefs.get(), supervised_user_prefs.get(), extension_prefs.get(),
       command_line_prefs.get(), persistent_pref_store.get(),
-      recommended_prefs.get(), default_prefs.get(), pref_notifier);
+      recommended_prefs.get(), pref_registry->defaults().get(), pref_notifier);
   callback.Run(base::MakeUnique<::PrefService>(
       pref_notifier, pref_value_store, persistent_pref_store.get(),
       pref_registry.get(), base::Bind(&DoNothingHandleReadError), true));
@@ -98,9 +99,10 @@
 void ConnectToPrefService(
     service_manager::Connector* connector,
     scoped_refptr<PrefRegistry> pref_registry,
-    const std::vector<PrefValueStore::PrefStoreType>& already_connected_types,
+    std::vector<PrefValueStore::PrefStoreType> already_connected_types,
     ConnectCallback callback,
     base::StringPiece service_name) {
+  already_connected_types.push_back(PrefValueStore::DEFAULT_STORE);
   auto connector_ptr = make_scoped_refptr(
       new RefCountedInterfacePtr<mojom::PrefStoreConnector>());
   connector->BindInterface(service_name.as_string(), &connector_ptr->get());
@@ -108,7 +110,7 @@
       &OnConnectError, connector_ptr, base::Passed(ConnectCallback{callback})));
   auto serialized_pref_registry = SerializePrefRegistry(*pref_registry);
   connector_ptr->get()->Connect(
-      std::move(serialized_pref_registry), already_connected_types,
+      std::move(serialized_pref_registry), std::move(already_connected_types),
       base::Bind(&OnConnect, connector_ptr, base::Passed(&pref_registry),
                  base::Passed(&callback)));
 }
diff --git a/services/preferences/public/cpp/pref_service_factory.h b/services/preferences/public/cpp/pref_service_factory.h
index d138ad3..e3cb3f34 100644
--- a/services/preferences/public/cpp/pref_service_factory.h
+++ b/services/preferences/public/cpp/pref_service_factory.h
@@ -39,7 +39,7 @@
 void ConnectToPrefService(
     service_manager::Connector* connector,
     scoped_refptr<PrefRegistry> pref_registry,
-    const std::vector<PrefValueStore::PrefStoreType>& already_connected_types,
+    std::vector<PrefValueStore::PrefStoreType> already_connected_types,
     ConnectCallback callback,
     base::StringPiece service_name = mojom::kServiceName);
 
diff --git a/services/preferences/public/interfaces/preferences.mojom b/services/preferences/public/interfaces/preferences.mojom
index ca3f37ad..eb44945 100644
--- a/services/preferences/public/interfaces/preferences.mojom
+++ b/services/preferences/public/interfaces/preferences.mojom
@@ -138,7 +138,7 @@
 
 // A registry of all prefs registered by a single client.
 struct PrefRegistry {
-  map<string, PrefRegistration> registrations;
+  array<string> registrations;
 };
 
 struct PrefRegistration {
diff --git a/services/service_manager/runner/host/service_process_launcher.cc b/services/service_manager/runner/host/service_process_launcher.cc
index e63b05db..7142aba1 100644
--- a/services/service_manager/runner/host/service_process_launcher.cc
+++ b/services/service_manager/runner/host/service_process_launcher.cc
@@ -204,7 +204,8 @@
       mojo_ipc_channel_->ChildProcessLaunched();
       broker_client_invitation_.Send(
           child_process_.Handle(),
-          mojo::edk::ConnectionParams(mojo_ipc_channel_->PassServerHandle()));
+          mojo::edk::ConnectionParams(mojo::edk::TransportProtocol::kLegacy,
+                                      mojo_ipc_channel_->PassServerHandle()));
     }
   }
   start_child_process_event_.Signal();
diff --git a/services/service_manager/tests/service_manager/service_manager_unittest.cc b/services/service_manager/tests/service_manager/service_manager_unittest.cc
index f1ef25d0..4ce3eea9 100644
--- a/services/service_manager/tests/service_manager/service_manager_unittest.cc
+++ b/services/service_manager/tests/service_manager/service_manager_unittest.cc
@@ -203,7 +203,8 @@
     receiver->SetPID(target_.Pid());
     invitation.Send(
         target_.Handle(),
-        mojo::edk::ConnectionParams(platform_channel_pair.PassServerHandle()));
+        mojo::edk::ConnectionParams(mojo::edk::TransportProtocol::kLegacy,
+                                    platform_channel_pair.PassServerHandle()));
   }
 
   void KillTarget() {
diff --git a/services/service_manager/tests/util.cc b/services/service_manager/tests/util.cc
index 7d42390..f325036 100644
--- a/services/service_manager/tests/util.cc
+++ b/services/service_manager/tests/util.cc
@@ -95,7 +95,8 @@
   receiver->SetPID(process->Pid());
   invitation.Send(
       process->Handle(),
-      mojo::edk::ConnectionParams(platform_channel_pair.PassServerHandle()));
+      mojo::edk::ConnectionParams(mojo::edk::TransportProtocol::kLegacy,
+                                  platform_channel_pair.PassServerHandle()));
   return result;
 }
 
diff --git a/third_party/WebKit/LayoutTests/NeverFixTests b/third_party/WebKit/LayoutTests/NeverFixTests
index 1927098..9e0a746 100644
--- a/third_party/WebKit/LayoutTests/NeverFixTests
+++ b/third_party/WebKit/LayoutTests/NeverFixTests
@@ -238,6 +238,50 @@
 external/wpt/longtask-timing [ WontFix ]
 
 # WPT manual tests without automation
+external/wpt/battery-status/battery-charging-manual.html [ WontFix ]
+external/wpt/battery-status/battery-plugging-in-manual.html [ WontFix ]
+external/wpt/battery-status/battery-unplugging-manual.html [ WontFix ]
+external/wpt/geolocation-API/getCurrentPosition_permission-manual.html [ WontFix ]
+external/wpt/geolocation-API/getCurrentPosition_permission_allow-manual.html [ WontFix ]
+external/wpt/geolocation-API/getCurrentPosition_permission_deny-manual.html [ WontFix ]
+external/wpt/geolocation-API/watchPosition_permission-manual.html [ WontFix ]
+external/wpt/pointerlock/movementX_Y_basic-manual.html [ WontFix ]
+external/wpt/pointerlock/movementX_Y_no-jumps-manual.html [ WontFix ]
+external/wpt/pointerlock/pointerlock_basic-manual.html [ WontFix ]
+external/wpt/pointerlock/pointerlock_fullscreen-manual.html [ WontFix ]
+external/wpt/pointerlock/pointerlock_indefinite-manual.html [ WontFix ]
+external/wpt/pointerlock/pointerlock_leave_Tab-manual.html [ WontFix ]
+external/wpt/pointerlock/pointerlock_leave_UA-manual.html [ WontFix ]
+external/wpt/pointerlock/pointerlock_remove_target-manual.html [ WontFix ]
+external/wpt/pointerlock/pointerlock_shadow-manual.html [ WontFix ]
+external/wpt/vibration/cancel-when-hidden-manual.html [ WontFix ]
+external/wpt/vibration/cancel-with-0-manual.html [ WontFix ]
+external/wpt/vibration/cancel-with-array-0-manual.html [ WontFix ]
+external/wpt/vibration/cancel-with-empty-array-manual.html [ WontFix ]
+external/wpt/vibration/cancel-with-new-manual.html [ WontFix ]
+external/wpt/vibration/pattern-array-extra-manual.html [ WontFix ]
+external/wpt/vibration/pattern-array-manual.html [ WontFix ]
+external/wpt/vibration/pattern-array-with-0-manual.html [ WontFix ]
+external/wpt/vibration/simple-array-manual.html [ WontFix ]
+external/wpt/vibration/simple-scalar-manual.html [ WontFix ]
+external/wpt/console/console-count-logging-manual.html [ WontFix ]
+external/wpt/notifications/body-basic-manual.html [ WontFix ]
+external/wpt/notifications/body-empty-manual.html [ WontFix ]
+external/wpt/notifications/event-onclick-manual.html [ WontFix ]
+external/wpt/notifications/event-onerror-default-manual.html [ WontFix ]
+external/wpt/notifications/icon-basic-manual.html [ WontFix ]
+external/wpt/notifications/icon-empty-manual.html [ WontFix ]
+external/wpt/notifications/requestPermission-granted-manual.html [ WontFix ]
+external/wpt/notifications/tag-different-manual.html [ WontFix ]
+external/wpt/notifications/tag-same-manual.html [ WontFix ]
+external/wpt/html/semantics/forms/constraints/tooShort-input-email-add-manual.html [ WontFix ]
+external/wpt/html/semantics/forms/constraints/tooShort-input-password-add-manual.html [ WontFix ]
+external/wpt/html/semantics/forms/constraints/tooShort-input-search-add-manual.html [ WontFix ]
+external/wpt/html/semantics/forms/constraints/tooShort-input-tel-add-manual.html [ WontFix ]
+external/wpt/html/semantics/forms/constraints/tooShort-input-text-add-manual.html [ WontFix ]
+external/wpt/html/semantics/forms/constraints/tooShort-input-url-add-manual.html [ WontFix ]
+external/wpt/html/semantics/forms/constraints/tooShort-textarea-add-manual.html [ WontFix ]
+external/wpt/selection/dir-manual.html [ WontFix ]
 external/wpt/css/css-flexbox-1/interactive/flexbox_interactive_break-after-column-item.html [ WontFix ]
 external/wpt/css/css-flexbox-1/interactive/flexbox_interactive_break-after-column-lastitem.html [ WontFix ]
 external/wpt/css/css-flexbox-1/interactive/flexbox_interactive_break-after-container.html [ WontFix ]
@@ -475,14 +519,6 @@
 external/wpt/css/css-text-decor-3/text-decoration-line-012.xht [ WontFix ]
 external/wpt/css/css-text-decor-3/text-decoration-line-013.xht [ WontFix ]
 external/wpt/css/css-text-decor-3/text-decoration-line-014.xht [ WontFix ]
-external/wpt/html/semantics/forms/constraints/tooShort-input-email-add-manual.html [ WontFix ]
-external/wpt/html/semantics/forms/constraints/tooShort-input-password-add-manual.html [ WontFix ]
-external/wpt/html/semantics/forms/constraints/tooShort-input-search-add-manual.html [ WontFix ]
-external/wpt/html/semantics/forms/constraints/tooShort-input-tel-add-manual.html [ WontFix ]
-external/wpt/html/semantics/forms/constraints/tooShort-input-text-add-manual.html [ WontFix ]
-external/wpt/html/semantics/forms/constraints/tooShort-input-url-add-manual.html [ WontFix ]
-external/wpt/html/semantics/forms/constraints/tooShort-textarea-add-manual.html [ WontFix ]
-external/wpt/selection/dir-manual.html [ WontFix ]
 
 # Temporary disabling of all encrypted-media WPT tests while enabling
 # https only. Once the switch is complete (and the WPT tests renamed so they
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index 39483a2b..e71d63f4 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -271,7 +271,6 @@
 # LayoutNG - is a new layout system for Blink.
 
 ### external/wpt/css/CSS2/floats-clear
-crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/adjacent-floats-001.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/clear-001.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/clear-002.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/clear-005.xht [ Skip ]
@@ -290,11 +289,7 @@
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/clear-float-004.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/clear-float-005.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/clear-float-006.xht [ Skip ]
-crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/clear-float-007.xht [ Skip ]
-crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/clear-float-008.xht [ Skip ]
-crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/clear-float-009.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-003.xht [ Skip ]
-crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-006.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-applies-to-001.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-applies-to-001a.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-applies-to-002.xht [ Skip ]
@@ -311,7 +306,6 @@
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-applies-to-013.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-applies-to-014.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-applies-to-015.xht [ Skip ]
-crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-non-replaced-height-001.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-non-replaced-width-001.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-non-replaced-width-002.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/float-non-replaced-width-003.xht [ Skip ]
@@ -339,7 +333,6 @@
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floating-replaced-height-008.xht [ Skip ]
 crbug.com/719615 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-001.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-002.xht [ Skip ]
-crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-003.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-004.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-005.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-006.xht [ Skip ]
@@ -368,7 +361,6 @@
 crbug.com/719620 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-114.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-117.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-120.xht [ Skip ]
-crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-123.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-126.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-127.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-128.xht [ Skip ]
@@ -414,7 +406,6 @@
 crbug.com/719620 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-placement-vertical-001a.xht [ Skip ]
 crbug.com/719620 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-placement-vertical-001b.xht [ Skip ]
 crbug.com/719620 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-placement-vertical-001c.xht [ Skip ]
-crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-placement-vertical-003.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-wrap-bfc-001-left-overflow.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-wrap-bfc-001-right-overflow.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-wrap-bfc-002-left-overflow.xht [ Skip ]
@@ -546,7 +537,6 @@
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-absolute-001.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-absolute-004.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-absolute-006.xht [ Skip ]
-crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-absolute-007.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-applies-to-001.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-applies-to-002.xht [ Skip ]
 crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-applies-to-003.xht [ Skip ]
@@ -970,8 +960,6 @@
 crbug.com/635619 virtual/layout_ng/fast/block/margin-collapse/line-beside-float-complex-margin-collapsing.html [ Skip ]
 crbug.com/635619 virtual/layout_ng/fast/block/margin-collapse/self-collapsing-block-creates-block-formatting-context.html [ Skip ]
 crbug.com/635619 virtual/layout_ng/fast/block/margin-collapse/self-collapsing-block-getting-layout-set.html [ Skip ]
-crbug.com/635619 virtual/layout_ng/fast/block/margin-collapse/self-collapsing-block-with-float-child-collapsed-margins.html [ Skip ]
-crbug.com/635619 virtual/layout_ng/fast/block/margin-collapse/self-collapsing-block-with-float-child.html [ Skip ]
 crbug.com/635619 virtual/layout_ng/fast/block/margin-collapse/self-collapsing-block-with-float-children.html [ Skip ]
 crbug.com/635619 virtual/layout_ng/fast/block/margin-collapse/self-collapsing-block-with-float-descendants.html [ Skip ]
 crbug.com/635619 virtual/layout_ng/fast/block/margin-collapse/self-collapsing-block-with-overflow-hidden-and-float-child.html [ Skip ]
@@ -1114,7 +1102,6 @@
 crbug.com/635619 virtual/layout_ng/fast/block/float/marquee-shrink-to-avoid-floats.html [ Skip ]
 crbug.com/635619 virtual/layout_ng/fast/block/float/max-width-clear-float-with-overflow-hidden.html [ Skip ]
 crbug.com/635619 virtual/layout_ng/fast/block/float/multiple-float-positioning.html [ Skip ]
-crbug.com/635619 virtual/layout_ng/fast/block/float/narrow-after-wide.html [ Skip ]
 crbug.com/635619 virtual/layout_ng/fast/block/float/negative-margin-clear.html [ Skip ]
 crbug.com/635619 virtual/layout_ng/fast/block/float/negative-margin-on-element-avoiding-floats-with-margin-on-parent.html [ Skip ]
 crbug.com/635619 virtual/layout_ng/fast/block/float/negative-margin-on-element-avoiding-floats.html [ Skip ]
@@ -2288,6 +2275,8 @@
 crbug.com/705125 virtual/mojo-loading/http/tests/w3c/webperf/submission/Intel/user-timing/test_user_timing_clearMarks.html [ Failure ]
 crbug.com/705125 virtual/mojo-loading/http/tests/security/cors-rfc1918/addressspace-document-appcache.html [ Failure ]
 crbug.com/705125 virtual/mojo-loading/http/tests/security/cors-rfc1918/addressspace-document-csp-appcache.html [ Failure ]
+crbug.com/705125 http/tests/security/suborigins/crossorigin/suborigin-cors-xhr-failure-output.php [ Failure Pass ]
+crbug.com/705125 virtual/mojo-loading/http/tests/security/suborigins/crossorigin/suborigin-cors-xhr-failure-output.php [ Failure Pass ]
 
 # This test breaks when the feature introduced in the bug is enabled. We keep
 # this tested without the feature by using the virtual test. See
@@ -2394,27 +2383,32 @@
 crbug.com/713587 external/wpt/css/css-ui-3/caret-color-006.html [ Skip ]
 
 # ====== New tests from wpt-importer added here ======
+crbug.com/626703 external/wpt/compat/webkit-text-fill-color-property-005.html [ Failure ]
+crbug.com/626703 external/wpt/eventsource/eventsource-request-cancellation.htm [ Timeout ]
+crbug.com/626703 external/wpt/http/basic-auth-cache-test.html [ Timeout ]
+crbug.com/626703 external/wpt/notifications/constructor-basic.html [ Timeout ]
+crbug.com/626703 external/wpt/notifications/constructor-invalid.html [ Timeout ]
+crbug.com/626703 external/wpt/notifications/event-onclose.html [ Timeout ]
+crbug.com/626703 external/wpt/notifications/event-onshow.html [ Timeout ]
+crbug.com/626703 external/wpt/notifications/instance.html [ Timeout ]
+crbug.com/626703 external/wpt/notifications/lang.html [ Timeout ]
+crbug.com/626703 external/wpt/secure-contexts/basic-dedicated-worker.html [ Timeout ]
+crbug.com/626703 external/wpt/secure-contexts/basic-dedicated-worker.https.html [ Timeout ]
+crbug.com/626703 external/wpt/secure-contexts/basic-popup-and-iframe-tests.html [ Timeout ]
+crbug.com/626703 external/wpt/secure-contexts/basic-popup-and-iframe-tests.https.html [ Timeout ]
+crbug.com/626703 external/wpt/secure-contexts/basic-shared-worker.html [ Timeout ]
+crbug.com/626703 external/wpt/secure-contexts/basic-shared-worker.https.html [ Timeout ]
+crbug.com/626703 external/wpt/secure-contexts/shared-worker-insecure-first.https.html [ Timeout ]
+crbug.com/626703 external/wpt/secure-contexts/shared-worker-secure-first.https.html [ Timeout ]
+crbug.com/626703 external/wpt/webauthn/interfaces.https.html [ Timeout ]
+crbug.com/626703 external/wpt/webauthn/makecredential-badargs-accountinformation.https.html [ Timeout ]
+crbug.com/626703 external/wpt/webauthn/makecredential-badargs-attestationchallenge.https.html [ Timeout ]
+crbug.com/626703 external/wpt/webauthn/makecredential-badargs-cryptoparameters.https.html [ Timeout ]
+crbug.com/626703 external/wpt/websockets/Create-Secure-extensions-empty.htm [ Timeout ]
 crbug.com/626703 external/wpt/media-source/mediasource-appendbuffer-quota-exceeded.html [ Timeout ]
 crbug.com/626703 external/wpt/media-source/mediasource-avtracks.html [ Failure Crash ]
 crbug.com/626703 external/wpt/media-source/mediasource-duration.html [ Failure ]
 crbug.com/626703 external/wpt/media-source/mediasource-getvideoplaybackquality.html [ Timeout Failure ]
-crbug.com/626703 external/wpt/compat/webkit-text-fill-color-property-005.html [ Failure ]
-crbug.com/626703 external/wpt/console/console-count-logging-manual.html [ Skip ]
-crbug.com/626703 external/wpt/notifications/body-basic-manual.html [ Skip ]
-crbug.com/626703 external/wpt/notifications/body-empty-manual.html [ Skip ]
-crbug.com/626703 external/wpt/notifications/constructor-basic.html [ Timeout ]
-crbug.com/626703 external/wpt/notifications/constructor-invalid.html [ Timeout ]
-crbug.com/626703 external/wpt/notifications/event-onclick-manual.html [ Skip ]
-crbug.com/626703 external/wpt/notifications/event-onclose.html [ Timeout ]
-crbug.com/626703 external/wpt/notifications/event-onerror-default-manual.html [ Skip ]
-crbug.com/626703 external/wpt/notifications/event-onshow.html [ Timeout ]
-crbug.com/626703 external/wpt/notifications/icon-basic-manual.html [ Skip ]
-crbug.com/626703 external/wpt/notifications/icon-empty-manual.html [ Skip ]
-crbug.com/626703 external/wpt/notifications/instance.html [ Timeout ]
-crbug.com/626703 external/wpt/notifications/lang.html [ Timeout ]
-crbug.com/626703 external/wpt/notifications/requestPermission-granted-manual.html [ Skip ]
-crbug.com/626703 external/wpt/notifications/tag-different-manual.html [ Skip ]
-crbug.com/626703 external/wpt/notifications/tag-same-manual.html [ Skip ]
 crbug.com/626703 external/wpt/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html [ Timeout ]
 crbug.com/626703 external/wpt/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html [ Timeout ]
 crbug.com/626703 external/wpt/webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html [ Timeout ]
@@ -2794,7 +2788,6 @@
 crbug.com/626703 external/wpt/webvtt/rendering/cues-with-video/processing-model/size_50.html [ Failure ]
 crbug.com/626703 external/wpt/webvtt/rendering/cues-with-video/processing-model/too_many_cues.html [ Failure ]
 crbug.com/626703 external/wpt/webvtt/rendering/cues-with-video/processing-model/too_many_cues_wrapped.html [ Failure ]
-crbug.com/626703 external/wpt/service-workers/service-worker/registration-useCache.https.html [ Timeout ]
 crbug.com/626703 external/wpt/html/semantics/embedded-content/the-iframe-element/cross_origin_parentage.html [ Timeout ]
 crbug.com/626703 external/wpt/html/semantics/scripting-1/the-script-element/async_007.htm [ Timeout ]
 crbug.com/626703 external/wpt/html/semantics/scripting-1/the-script-element/async_010.htm [ Timeout ]
@@ -2872,6 +2865,14 @@
 crbug.com/626703 external/wpt/workers/opaque-origin.html [ Failure Crash Timeout ]
 crbug.com/626703 external/wpt/html/rendering/non-replaced-elements/margin-collapsing-quirks/multicol-quirks-mode.html [ Pass Crash ]
 crbug.com/626703 external/wpt/html/rendering/non-replaced-elements/margin-collapsing-quirks/multicol-standards-mode.html [ Pass Crash ]
+crbug.com/720545 external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-1.htm [ Crash Pass ]
+crbug.com/720545 external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-2.htm [ Crash Pass ]
+crbug.com/720545 external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-3.htm [ Crash Pass ]
+crbug.com/720545 external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-4.htm [ Crash Pass ]
+crbug.com/720545 external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-5.htm [ Crash Pass ]
+crbug.com/720545 external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-6.htm [ Crash Pass ]
+crbug.com/720545 external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-7.htm [ Crash Pass ]
+crbug.com/720545 external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-9.htm [ Crash Pass ]
 
 # Manual tests that have not been automated.
 crbug.com/626703 external/wpt/fullscreen/api/element-request-fullscreen-two-iframes-manual.html [ Timeout ]
@@ -2975,10 +2976,8 @@
 crbug.com/655458 external/wpt/mediacapture-image/idlharness.html [ Skip ]
 crbug.com/655458 external/wpt/html/semantics/tabular-data/processing-model-1/span-limits.html [ Skip ]
 crbug.com/655458 external/wpt/css/css-transforms-2/transform3d-scale-007.html [ Skip ]
-crbug.com/655458 external/wpt/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html [ Skip ]
 crbug.com/655458 external/wpt/WebCryptoAPI/idlharness.html [ Skip ]
 crbug.com/655458 external/wpt/WebCryptoAPI/idlharness.https.html [ Skip ]
-crbug.com/655458 external/wpt/WebCryptoAPI/derive_bits_keys/test_hkdf.html [ Skip ]
 crbug.com/655458 external/wpt/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.https.html [ Skip ]
 crbug.com/655458 external/wpt/web-animations/interfaces/AnimationTimeline/document-timeline.html [ Skip ]
 
@@ -3341,11 +3340,11 @@
 crbug.com/703533 [ Mac ] shapedetection/detection-security-test.html  [ Crash Pass Timeout ]
 
 # Sheriff failures 2017-05-11
-crbug.com/720511 [ Linux ] http/tests/misc/non-utf8-header-name.php [ Failure Pass Timeout ]
+crbug.com/720511 [ Linux ] http/tests/misc/non-utf8-header-name.php [ Skip ]
 crbug.com/720511 [ Linux ] http/tests/security/contentSecurityPolicy/directive-parsing-03.html [ Failure Pass Timeout ]
 crbug.com/720511 [ Linux ] http/tests/security/contentSecurityPolicy/source-list-parsing-04.html [ Failure Pass Timeout ]
 crbug.com/720511 [ Linux ] http/tests/security/document-domain-canonicalizes.html [ Failure Pass Timeout ]
-crbug.com/720511 [ Linux ] virtual/mojo-loading/http/tests/misc/non-utf8-header-name.php [ Failure Pass Timeout ]
+crbug.com/720511 [ Linux ] virtual/mojo-loading/http/tests/misc/non-utf8-header-name.php [ Skip ]
 crbug.com/720511 [ Linux ] virtual/mojo-loading/http/tests/security/contentSecurityPolicy/directive-parsing-03.html [ Failure Pass Timeout ]
 crbug.com/720511 [ Linux ] virtual/mojo-loading/http/tests/security/contentSecurityPolicy/source-list-parsing-04.html [ Failure Pass Timeout ]
 crbug.com/720511 [ Linux ] virtual/mojo-loading/http/tests/security/document-domain-canonicalizes.html [ Failure Pass Timeout ]
diff --git a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
index b0c6a7f..258d821 100644
--- a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
+++ b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
@@ -25,6 +25,42 @@
      {}
     ]
    ],
+   "accelerometer/Accelerometer_onerror-manual.https.html": [
+    [
+     "/accelerometer/Accelerometer_onerror-manual.https.html",
+     {}
+    ]
+   ],
+   "battery-status/battery-charging-manual.html": [
+    [
+     "/battery-status/battery-charging-manual.html",
+     {}
+    ]
+   ],
+   "battery-status/battery-discharging-manual.html": [
+    [
+     "/battery-status/battery-discharging-manual.html",
+     {}
+    ]
+   ],
+   "battery-status/battery-full-manual.html": [
+    [
+     "/battery-status/battery-full-manual.html",
+     {}
+    ]
+   ],
+   "battery-status/battery-plugging-in-manual.html": [
+    [
+     "/battery-status/battery-plugging-in-manual.html",
+     {}
+    ]
+   ],
+   "battery-status/battery-unplugging-manual.html": [
+    [
+     "/battery-status/battery-unplugging-manual.html",
+     {}
+    ]
+   ],
    "console/console-count-logging-manual.html": [
     [
      "/console/console-count-logging-manual.html",
@@ -5593,6 +5629,36 @@
      {}
     ]
    ],
+   "geolocation-API/getCurrentPosition_permission-manual.html": [
+    [
+     "/geolocation-API/getCurrentPosition_permission-manual.html",
+     {}
+    ]
+   ],
+   "geolocation-API/getCurrentPosition_permission_allow-manual.html": [
+    [
+     "/geolocation-API/getCurrentPosition_permission_allow-manual.html",
+     {}
+    ]
+   ],
+   "geolocation-API/getCurrentPosition_permission_deny-manual.html": [
+    [
+     "/geolocation-API/getCurrentPosition_permission_deny-manual.html",
+     {}
+    ]
+   ],
+   "geolocation-API/watchPosition_permission-manual.html": [
+    [
+     "/geolocation-API/watchPosition_permission-manual.html",
+     {}
+    ]
+   ],
+   "gyroscope/Gyroscope_onerror-manual.https.html": [
+    [
+     "/gyroscope/Gyroscope_onerror-manual.https.html",
+     {}
+    ]
+   ],
    "html-media-capture/capture_audio-manual.html": [
     [
      "/html-media-capture/capture_audio-manual.html",
@@ -6187,6 +6253,12 @@
      {}
     ]
    ],
+   "magnetometer/Magnetometer_onerror-manual.https.html": [
+    [
+     "/magnetometer/Magnetometer_onerror-manual.https.html",
+     {}
+    ]
+   ],
    "mediacapture-streams/MediaStream-id-manual.https.html": [
     [
      "/mediacapture-streams/MediaStream-id-manual.https.html",
@@ -6733,6 +6805,66 @@
      {}
     ]
    ],
+   "pointerlock/movementX_Y_basic-manual.html": [
+    [
+     "/pointerlock/movementX_Y_basic-manual.html",
+     {}
+    ]
+   ],
+   "pointerlock/movementX_Y_no-jumps-manual.html": [
+    [
+     "/pointerlock/movementX_Y_no-jumps-manual.html",
+     {}
+    ]
+   ],
+   "pointerlock/pointerlock_basic-manual.html": [
+    [
+     "/pointerlock/pointerlock_basic-manual.html",
+     {}
+    ]
+   ],
+   "pointerlock/pointerlock_fullscreen-manual.html": [
+    [
+     "/pointerlock/pointerlock_fullscreen-manual.html",
+     {}
+    ]
+   ],
+   "pointerlock/pointerlock_indefinite-manual.html": [
+    [
+     "/pointerlock/pointerlock_indefinite-manual.html",
+     {}
+    ]
+   ],
+   "pointerlock/pointerlock_leave_Tab-manual.html": [
+    [
+     "/pointerlock/pointerlock_leave_Tab-manual.html",
+     {}
+    ]
+   ],
+   "pointerlock/pointerlock_leave_UA-manual.html": [
+    [
+     "/pointerlock/pointerlock_leave_UA-manual.html",
+     {}
+    ]
+   ],
+   "pointerlock/pointerlock_remove_target-manual.html": [
+    [
+     "/pointerlock/pointerlock_remove_target-manual.html",
+     {}
+    ]
+   ],
+   "pointerlock/pointerlock_remove_target_on_mouseup-manual.html": [
+    [
+     "/pointerlock/pointerlock_remove_target_on_mouseup-manual.html",
+     {}
+    ]
+   ],
+   "pointerlock/pointerlock_shadow-manual.html": [
+    [
+     "/pointerlock/pointerlock_shadow-manual.html",
+     {}
+    ]
+   ],
    "selection/dir-manual.html": [
     [
      "/selection/dir-manual.html",
@@ -6745,6 +6877,12 @@
      {}
     ]
    ],
+   "storage/persist-permission-manual.https.html": [
+    [
+     "/storage/persist-permission-manual.https.html",
+     {}
+    ]
+   ],
    "uievents/auxclick/auxclick_event-manual.html": [
     [
      "/uievents/auxclick/auxclick_event-manual.html",
@@ -6805,6 +6943,66 @@
      {}
     ]
    ],
+   "vibration/cancel-when-hidden-manual.html": [
+    [
+     "/vibration/cancel-when-hidden-manual.html",
+     {}
+    ]
+   ],
+   "vibration/cancel-with-0-manual.html": [
+    [
+     "/vibration/cancel-with-0-manual.html",
+     {}
+    ]
+   ],
+   "vibration/cancel-with-array-0-manual.html": [
+    [
+     "/vibration/cancel-with-array-0-manual.html",
+     {}
+    ]
+   ],
+   "vibration/cancel-with-empty-array-manual.html": [
+    [
+     "/vibration/cancel-with-empty-array-manual.html",
+     {}
+    ]
+   ],
+   "vibration/cancel-with-new-manual.html": [
+    [
+     "/vibration/cancel-with-new-manual.html",
+     {}
+    ]
+   ],
+   "vibration/pattern-array-extra-manual.html": [
+    [
+     "/vibration/pattern-array-extra-manual.html",
+     {}
+    ]
+   ],
+   "vibration/pattern-array-manual.html": [
+    [
+     "/vibration/pattern-array-manual.html",
+     {}
+    ]
+   ],
+   "vibration/pattern-array-with-0-manual.html": [
+    [
+     "/vibration/pattern-array-with-0-manual.html",
+     {}
+    ]
+   ],
+   "vibration/simple-array-manual.html": [
+    [
+     "/vibration/simple-array-manual.html",
+     {}
+    ]
+   ],
+   "vibration/simple-scalar-manual.html": [
+    [
+     "/vibration/simple-scalar-manual.html",
+     {}
+    ]
+   ],
    "webstorage/storage_local-manual.html": [
     [
      "/webstorage/storage_local-manual.html",
@@ -31135,6 +31333,210 @@
      {}
     ]
    ],
+   "css/css-grid-1/abspos/positioned-grid-items-001.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-001.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-002.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-002.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-003.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-003.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-004.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-004.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-005.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-005.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-005-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-006.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-006.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-006-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-007.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-007.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-007-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-008.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-008.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-008-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-009.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-009.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-009-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-010.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-010.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-009-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-011.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-011.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-011-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-012.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-012.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-012-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-013.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-013.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-013-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-014.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-014.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-014-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-015.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-015.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-015-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-016.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-016.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-016-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-017.html": [
+    [
+     "/css/css-grid-1/abspos/positioned-grid-items-017.html",
+     [
+      [
+       "/css/css-grid-1/abspos/positioned-grid-items-017-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-grid-1/alignment/grid-content-distribution-001.html": [
     [
      "/css/css-grid-1/alignment/grid-content-distribution-001.html",
@@ -31195,6 +31597,246 @@
      {}
     ]
    ],
+   "css/css-grid-1/alignment/grid-content-distribution-006.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-006.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-007.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-007.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-008.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-008.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-009.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-009.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-010.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-010.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-011.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-011.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-012.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-012.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-013.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-013.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-014.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-014.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-015.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-015.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-016.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-016.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-017.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-017.html",
+     [
+      [
+       "/css/reference/ref-filled-green-300px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-018.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-018.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-019.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-019.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-020.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-020.html",
+     [
+      [
+       "/css/reference/ref-filled-green-300px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-021.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-021.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-022.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-022.html",
+     [
+      [
+       "/css/reference/ref-filled-green-300px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-023.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-023.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-024.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-024.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-025.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-025.html",
+     [
+      [
+       "/css/reference/ref-filled-green-300px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-001.html": [
     [
      "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-001.html",
@@ -31243,6 +31885,246 @@
      {}
     ]
    ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-005.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-005.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-006.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-006.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-007.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-007.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-008.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-008.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-009.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-009.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-010.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-010.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-011.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-011.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-012.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-012.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-013.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-013.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-014.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-014.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-015.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-015.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-016.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-016.html",
+     [
+      [
+       "/css/reference/ref-filled-green-300px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-017.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-017.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-018.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-018.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-019.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-019.html",
+     [
+      [
+       "/css/reference/ref-filled-green-300px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-020.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-020.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-021.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-021.html",
+     [
+      [
+       "/css/reference/ref-filled-green-300px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-022.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-022.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-023.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-023.html",
+     [
+      [
+       "/css/reference/ref-filled-green-200px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-024.html": [
+    [
+     "/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-024.html",
+     [
+      [
+       "/css/reference/ref-filled-green-300px-square.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-grid-1/grid-definition/fr-unit-with-percentage.html": [
     [
      "/css/css-grid-1/grid-definition/fr-unit-with-percentage.html",
@@ -46264,7 +47146,7 @@
      "/css/selectors4/focus-within-006.html",
      [
       [
-       "/css/selectors4/focus-within-001-ref.html",
+       "/css/selectors4/focus-within-006-ref.html",
        "=="
       ]
      ],
@@ -46295,6 +47177,18 @@
      {}
     ]
    ],
+   "css/selectors4/focus-within-010.html": [
+    [
+     "/css/selectors4/focus-within-010.html",
+     [
+      [
+       "/css/selectors4/focus-within-shadow-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/selectors4/focus-within-shadow-001.html": [
     [
      "/css/selectors4/focus-within-shadow-001.html",
@@ -51743,6 +52637,126 @@
      {}
     ]
    ],
+   "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-001.html": [
+    [
+     "/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-001.html",
+     [
+      [
+       "/html/editing/editing-0/spelling-and-grammar-checking/references/spelling-markers-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-002.html": [
+    [
+     "/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-002.html",
+     [
+      [
+       "/html/editing/editing-0/spelling-and-grammar-checking/references/spelling-markers-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-003.html": [
+    [
+     "/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-003.html",
+     [
+      [
+       "/html/editing/editing-0/spelling-and-grammar-checking/references/spelling-markers-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-004.html": [
+    [
+     "/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-004.html",
+     [
+      [
+       "/html/editing/editing-0/spelling-and-grammar-checking/references/spelling-markers-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-005.html": [
+    [
+     "/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-005.html",
+     [
+      [
+       "/html/editing/editing-0/spelling-and-grammar-checking/references/spelling-markers-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-006.html": [
+    [
+     "/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-006.html",
+     [
+      [
+       "/html/editing/editing-0/spelling-and-grammar-checking/references/spelling-markers-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-007.html": [
+    [
+     "/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-007.html",
+     [
+      [
+       "/html/editing/editing-0/spelling-and-grammar-checking/references/spelling-markers-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-008.html": [
+    [
+     "/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-008.html",
+     [
+      [
+       "/html/editing/editing-0/spelling-and-grammar-checking/references/spelling-markers-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-009.html": [
+    [
+     "/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-009.html",
+     [
+      [
+       "/html/editing/editing-0/spelling-and-grammar-checking/references/spelling-markers-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-010.html": [
+    [
+     "/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-010.html",
+     [
+      [
+       "/html/editing/editing-0/spelling-and-grammar-checking/references/spelling-markers-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "html/editing/the-hidden-attribute/hidden-1a.html": [
     [
      "/html/editing/the-hidden-attribute/hidden-1a.html",
@@ -53375,6 +54389,18 @@
      {}
     ]
    ],
+   "http/basic-auth-cache-test.html": [
+    [
+     "/http/basic-auth-cache-test.html",
+     [
+      [
+       "/http/basic-auth-cache-test-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "infrastructure/reftest-wait.html": [
     [
      "/infrastructure/reftest-wait.html",
@@ -57231,11 +58257,6 @@
      {}
     ]
    ],
-   "FileAPI/idlharness-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "FileAPI/idlharness.idl": [
     [
      {}
@@ -57301,11 +58322,6 @@
      {}
     ]
    ],
-   "IndexedDB/interfaces-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "IndexedDB/interfaces.idl": [
     [
      {}
@@ -57361,12 +58377,57 @@
      {}
     ]
    ],
-   "WebCryptoAPI/derive_bits_keys/test_hkdf-expected.txt": [
+   "WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https-expected.txt": [
     [
      {}
     ]
    ],
-   "WebCryptoAPI/derive_bits_keys/test_pbkdf2-expected.txt": [
+   "WebCryptoAPI/derive_bits_keys/test_hkdf.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_empty.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_long.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_short.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_long.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_short.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_long.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_short.https-expected.txt": [
     [
      {}
     ]
@@ -57406,6 +58467,21 @@
      {}
     ]
    ],
+   "WebCryptoAPI/encrypt_decrypt/test_aes_cbc.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/encrypt_decrypt/test_aes_ctr.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/encrypt_decrypt/test_aes_gcm.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "WebCryptoAPI/generateKey/failures.js": [
     [
      {}
@@ -57416,11 +58492,71 @@
      {}
     ]
    ],
+   "WebCryptoAPI/generateKey/test_aes-cbc.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/generateKey/test_aes-ctr.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/generateKey/test_failures.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/generateKey/test_failures_AES-CBC.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/generateKey/test_failures_AES-CTR.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/generateKey/test_failures_AES-GCM.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/generateKey/test_failures_AES-KW.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/generateKey/test_successes_AES-CBC.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/generateKey/test_successes_AES-CTR.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/generateKey/test_successes_AES-GCM.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/generateKey/test_successes_AES-KW.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "WebCryptoAPI/idlharness-expected.txt": [
     [
      {}
     ]
    ],
+   "WebCryptoAPI/idlharness.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "WebCryptoAPI/import_export/ec_importKey.js": [
     [
      {}
@@ -57436,6 +58572,11 @@
      {}
     ]
    ],
+   "WebCryptoAPI/import_export/test_symmetric_importKey.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "WebCryptoAPI/sign_verify/ecdsa.js": [
     [
      {}
@@ -57476,6 +58617,16 @@
      {}
     ]
    ],
+   "WebCryptoAPI/util/worker-report-crypto-subtle-presence.js": [
+    [
+     {}
+    ]
+   ],
+   "WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.js": [
     [
      {}
@@ -57506,6 +58657,11 @@
      {}
     ]
    ],
+   "WebIDL/ecmascript-binding/interface-prototype-object-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "XMLHttpRequest/README.md": [
     [
      {}
@@ -57571,11 +58727,6 @@
      {}
     ]
    ],
-   "XMLHttpRequest/interfaces-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "XMLHttpRequest/open-url-encoding-expected.txt": [
     [
      {}
@@ -58051,6 +59202,11 @@
      {}
     ]
    ],
+   "accelerometer/support-iframe.html": [
+    [
+     {}
+    ]
+   ],
    "apng/animated-png-timeout-ref.html": [
     [
      {}
@@ -58091,6 +59247,21 @@
      {}
     ]
    ],
+   "battery-status/support-iframe-initial.html": [
+    [
+     {}
+    ]
+   ],
+   "battery-status/support-iframe.html": [
+    [
+     {}
+    ]
+   ],
+   "battery-status/support-window-open.html": [
+    [
+     {}
+    ]
+   ],
    "beacon/headers/header-referrer-no-referrer-when-downgrade.https-expected.txt": [
     [
      {}
@@ -58126,6 +59297,11 @@
      {}
     ]
    ],
+   "bluetooth/OWNERS": [
+    [
+     {}
+    ]
+   ],
    "clear-site-data/support/echo-clear-site-data.py": [
     [
      {}
@@ -58221,6 +59397,16 @@
      {}
     ]
    ],
+   "common/object-association.js": [
+    [
+     {}
+    ]
+   ],
+   "common/performance-timeline-utils.js": [
+    [
+     {}
+    ]
+   ],
    "common/redirect-opt-in.py": [
     [
      {}
@@ -59931,6 +61117,61 @@
      {}
     ]
    ],
+   "cors/README.md": [
+    [
+     {}
+    ]
+   ],
+   "cors/resources/.gitignore": [
+    [
+     {}
+    ]
+   ],
+   "cors/resources/304.py": [
+    [
+     {}
+    ]
+   ],
+   "cors/resources/checkandremove.py": [
+    [
+     {}
+    ]
+   ],
+   "cors/resources/cors-cookie.py": [
+    [
+     {}
+    ]
+   ],
+   "cors/resources/cors-headers.asis": [
+    [
+     {}
+    ]
+   ],
+   "cors/resources/cors-makeheader.py": [
+    [
+     {}
+    ]
+   ],
+   "cors/resources/preflight.py": [
+    [
+     {}
+    ]
+   ],
+   "cors/resources/remote-xhrer.html": [
+    [
+     {}
+    ]
+   ],
+   "cors/resources/status.py": [
+    [
+     {}
+    ]
+   ],
+   "cors/support.js": [
+    [
+     {}
+    ]
+   ],
    "credential-management/idl.https-expected.txt": [
     [
      {}
@@ -64906,6 +66147,71 @@
      {}
     ]
    ],
+   "css/css-grid-1/abspos/positioned-grid-items-001-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-005-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-006-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-007-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-008-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-009-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-011-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-012-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-013-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-014-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-015-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-016-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-grid-1/abspos/positioned-grid-items-017-ref.html": [
+    [
+     {}
+    ]
+   ],
    "css/css-grid-1/grid-definition/support/testing-utils.js": [
     [
      {}
@@ -72306,6 +73612,21 @@
      {}
     ]
    ],
+   "css/geometry-1/DOMMatrix-001-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "css/geometry-1/DOMPoint-001-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "css/geometry-1/DOMQuad-001-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "css/geometry-1/support/dommatrix-test-util.js": [
     [
      {}
@@ -72371,6 +73692,11 @@
      {}
     ]
    ],
+   "css/reference/ref-filled-green-300px-square.html": [
+    [
+     {}
+    ]
+   ],
    "css/reference/single_square_list_marker.xht": [
     [
      {}
@@ -72386,6 +73712,11 @@
      {}
     ]
    ],
+   "css/selectors4/focus-within-006-ref.html": [
+    [
+     {}
+    ]
+   ],
    "css/selectors4/focus-within-007-ref.html": [
     [
      {}
@@ -73546,11 +74877,6 @@
      {}
     ]
    ],
-   "cssom-view/cssom-view/media-query-list-interface-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "cssom-view/cssom-view/window-interface-expected.txt": [
     [
      {}
@@ -75291,11 +76617,6 @@
      {}
     ]
    ],
-   "encoding/idlharness-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "encoding/iso-2022-jp-decoder-expected.txt": [
     [
      {}
@@ -75681,6 +77002,71 @@
      {}
     ]
    ],
+   "eventsource/README.md": [
+    [
+     {}
+    ]
+   ],
+   "eventsource/eventsource-onmessage-realm-support.htm": [
+    [
+     {}
+    ]
+   ],
+   "eventsource/resources/accept.event_stream": [
+    [
+     {}
+    ]
+   ],
+   "eventsource/resources/cache-control.event_stream": [
+    [
+     {}
+    ]
+   ],
+   "eventsource/resources/cors-cookie.py": [
+    [
+     {}
+    ]
+   ],
+   "eventsource/resources/cors.py": [
+    [
+     {}
+    ]
+   ],
+   "eventsource/resources/init.htm": [
+    [
+     {}
+    ]
+   ],
+   "eventsource/resources/last-event-id.py": [
+    [
+     {}
+    ]
+   ],
+   "eventsource/resources/message.py": [
+    [
+     {}
+    ]
+   ],
+   "eventsource/resources/message2.py": [
+    [
+     {}
+    ]
+   ],
+   "eventsource/resources/reconnect-fail.py": [
+    [
+     {}
+    ]
+   ],
+   "eventsource/resources/status-error.py": [
+    [
+     {}
+    ]
+   ],
+   "eventsource/resources/status-reconnect.py": [
+    [
+     {}
+    ]
+   ],
    "fetch/README.md": [
     [
      {}
@@ -75751,11 +77137,6 @@
      {}
     ]
    ],
-   "fetch/api/headers/headers-basic-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "fetch/api/headers/headers-idl-expected.txt": [
     [
      {}
@@ -76306,12 +77687,27 @@
      {}
     ]
    ],
+   "gamepad/OWNERS": [
+    [
+     {}
+    ]
+   ],
+   "generic-sensor/generic-sensor-tests.js": [
+    [
+     {}
+    ]
+   ],
+   "geolocation-API/support.js": [
+    [
+     {}
+    ]
+   ],
    "gyroscope/idlharness.https-expected.txt": [
     [
      {}
     ]
    ],
-   "hr-time/idlharness-expected.txt": [
+   "gyroscope/support-iframe.html": [
     [
      {}
     ]
@@ -76386,6 +77782,16 @@
      {}
     ]
    ],
+   "html-media-capture/capture_reflect-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "html-media-capture/idlharness-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "html-media-capture/support/upload.txt": [
     [
      {}
@@ -77391,6 +78797,11 @@
      {}
     ]
    ],
+   "html/browsers/history/the-location-interface/per-global.window.js": [
+    [
+     {}
+    ]
+   ],
    "html/browsers/history/the-location-interface/reload_document_open_write-1.html": [
     [
      {}
@@ -83111,6 +84522,11 @@
      {}
     ]
    ],
+   "html/editing/editing-0/spelling-and-grammar-checking/references/spelling-markers-001-ref.html": [
+    [
+     {}
+    ]
+   ],
    "html/editing/focus/.gitkeep": [
     [
      {}
@@ -83281,11 +84697,6 @@
      {}
     ]
    ],
-   "html/infrastructure/common-dom-interfaces/collections/domstringlist-interface-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "html/infrastructure/common-dom-interfaces/collections/domstringlist.idl": [
     [
      {}
@@ -83461,11 +84872,41 @@
      {}
     ]
    ],
+   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/broadcastchannel-success-and-failure-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/broadcastchannel-success-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/identity-not-preserved-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/nested-worker-success-dedicatedworker-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/nested-worker-success-sharedworker-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/nested-worker-success.js": [
     [
      {}
     ]
    ],
+   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-transferring-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/resources/blank.html": [
     [
      {}
@@ -83561,6 +85002,41 @@
      {}
     ]
    ],
+   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-history-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-success.sub-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-messagechannel-success-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-serviceworker-failure.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-sharedworker-failure-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-similar-but-cross-origin-success.sub-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-simple-success-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "html/infrastructure/terminology/.gitkeep": [
     [
      {}
@@ -86116,6 +87592,11 @@
      {}
     ]
    ],
+   "html/semantics/scripting-1/the-script-element/module/currentscript.js": [
+    [
+     {}
+    ]
+   ],
    "html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-common.js": [
     [
      {}
@@ -86256,6 +87737,11 @@
      {}
     ]
    ],
+   "html/semantics/scripting-1/the-script-element/module/set-currentScript-on-window.js": [
+    [
+     {}
+    ]
+   ],
    "html/semantics/scripting-1/the-script-element/resources/cocoa-module.js": [
     [
      {}
@@ -87336,6 +88822,11 @@
      {}
     ]
    ],
+   "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm": [
+    [
+     {}
+    ]
+   ],
    "html/the-xhtml-syntax/parsing-xhtml-fragments/.gitkeep": [
     [
      {}
@@ -87556,6 +89047,26 @@
      {}
     ]
    ],
+   "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-dedicatedworker-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-sharedworker-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-window-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/worker-that-requires-failure.js": [
     [
      {}
@@ -87761,6 +89272,21 @@
      {}
     ]
    ],
+   "http/basic-auth-cache-test-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "http/content_length.html.headers": [
+    [
+     {}
+    ]
+   ],
+   "http/resources/securedimage.py": [
+    [
+     {}
+    ]
+   ],
    "images/anim-gr.gif": [
     [
      {}
@@ -88011,6 +89537,11 @@
      {}
     ]
    ],
+   "interfaces/webrtc-pc.idl": [
+    [
+     {}
+    ]
+   ],
    "longtask-timing/resources/makelongtask.js": [
     [
      {}
@@ -88036,6 +89567,11 @@
      {}
     ]
    ],
+   "magnetometer/support-iframe.html": [
+    [
+     {}
+    ]
+   ],
    "media-capabilities/README.md": [
     [
      {}
@@ -88481,6 +90017,11 @@
      {}
     ]
    ],
+   "mediacapture-image/idlharness-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "mediacapture-record/idlharness-expected.txt": [
     [
      {}
@@ -89281,11 +90822,6 @@
      {}
     ]
    ],
-   "navigation-timing/idlharness-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "navigation-timing/nav2_data_uri.html": [
     [
      {}
@@ -89336,11 +90872,6 @@
      {}
     ]
    ],
-   "notifications/interfaces-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "notifications/resources/icon.png": [
     [
      {}
@@ -89356,6 +90887,11 @@
      {}
     ]
    ],
+   "orientation-event/OWNERS": [
+    [
+     {}
+    ]
+   ],
    "orientation-event/horizontal-surface-manual-expected.txt": [
     [
      {}
@@ -89366,6 +90902,11 @@
      {}
     ]
    ],
+   "orientation-sensor/idlharness.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "payment-request/allowpaymentrequest/allowpaymentrequest-attribute-same-origin-bc-containers.https-expected.txt": [
     [
      {}
@@ -89401,11 +90942,6 @@
      {}
     ]
    ],
-   "payment-request/interfaces.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "payment-request/payment-request-response-id.html": [
     [
      {}
@@ -89416,21 +90952,11 @@
      {}
     ]
    ],
-   "pointerevents/extension/idlharness-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "pointerevents/extension/pointerevent_coalesced_events_attributes-manual-expected.txt": [
     [
      {}
     ]
    ],
-   "pointerevents/idlharness-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "pointerevents/pointerevent_styles.css": [
     [
      {}
@@ -89501,6 +91027,16 @@
      {}
     ]
    ],
+   "progress-events/Status.html": [
+    [
+     {}
+    ]
+   ],
+   "progress-events/tests/submissions/Samsung/resources/no-content-length.py": [
+    [
+     {}
+    ]
+   ],
    "quirks-mode/historical/list-item-bullet-size-ref.html": [
     [
      {}
@@ -92086,6 +93622,61 @@
      {}
     ]
    ],
+   "secure-contexts/basic-popup-and-iframe-tests.https.js": [
+    [
+     {}
+    ]
+   ],
+   "secure-contexts/postMessage-helper.html": [
+    [
+     {}
+    ]
+   ],
+   "secure-contexts/postMessage-helper.https.html": [
+    [
+     {}
+    ]
+   ],
+   "secure-contexts/server-locations.sub.js": [
+    [
+     {}
+    ]
+   ],
+   "secure-contexts/support/dedicated-worker-script.js": [
+    [
+     {}
+    ]
+   ],
+   "secure-contexts/support/https-subframe-dedicated.html": [
+    [
+     {}
+    ]
+   ],
+   "secure-contexts/support/https-subframe-shared.html": [
+    [
+     {}
+    ]
+   ],
+   "secure-contexts/support/parent-dedicated-worker-script.js": [
+    [
+     {}
+    ]
+   ],
+   "secure-contexts/support/parent-shared-worker-script.js": [
+    [
+     {}
+    ]
+   ],
+   "secure-contexts/support/shared-worker-insecure-popup.html": [
+    [
+     {}
+    ]
+   ],
+   "secure-contexts/support/shared-worker-script.js": [
+    [
+     {}
+    ]
+   ],
    "selection/addRange.js": [
     [
      {}
@@ -92106,7 +93697,7 @@
      {}
     ]
    ],
-   "selection/interfaces-expected.txt": [
+   "selection/removeRange-expected.txt": [
     [
      {}
     ]
@@ -92121,6 +93712,31 @@
      {}
     ]
    ],
+   "server-timing/resources/blue.png": [
+    [
+     {}
+    ]
+   ],
+   "server-timing/resources/blue.png.sub.headers": [
+    [
+     {}
+    ]
+   ],
+   "server-timing/resources/green.png": [
+    [
+     {}
+    ]
+   ],
+   "server-timing/resources/green.png.sub.headers": [
+    [
+     {}
+    ]
+   ],
+   "server-timing/test_server_timing.html.sub.headers": [
+    [
+     {}
+    ]
+   ],
    "service-workers/OWNERS": [
     [
      {}
@@ -92406,6 +94022,11 @@
      {}
     ]
    ],
+   "service-workers/service-worker/import-scripts-updated-flag.https-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "service-workers/service-worker/multi-globals/current/current.https.html": [
     [
      {}
@@ -92796,6 +94417,16 @@
      {}
     ]
    ],
+   "service-workers/service-worker/resources/fetch-event-respond-with-argument-iframe.html": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/resources/fetch-event-respond-with-argument-worker.js": [
+    [
+     {}
+    ]
+   ],
    "service-workers/service-worker/resources/fetch-event-respond-with-stops-propagation-worker.js": [
     [
      {}
@@ -92856,6 +94487,16 @@
      {}
     ]
    ],
+   "service-workers/service-worker/resources/fetch-request-html-imports-iframe.html": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/resources/fetch-request-html-imports-worker.js": [
+    [
+     {}
+    ]
+   ],
    "service-workers/service-worker/resources/fetch-request-no-freshness-headers-iframe.html": [
     [
      {}
@@ -92891,6 +94532,11 @@
      {}
     ]
    ],
+   "service-workers/service-worker/resources/fetch-response-taint-iframe.html": [
+    [
+     {}
+    ]
+   ],
    "service-workers/service-worker/resources/fetch-response-xhr-iframe.https.html": [
     [
      {}
@@ -92956,6 +94602,26 @@
      {}
     ]
    ],
+   "service-workers/service-worker/resources/import-scripts-echo.py": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/resources/import-scripts-resource-map-worker.js": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/resources/import-scripts-updated-flag-worker.js": [
+    [
+     {}
+    ]
+   ],
+   "service-workers/service-worker/resources/import-scripts-version.py": [
+    [
+     {}
+    ]
+   ],
    "service-workers/service-worker/resources/indexeddb-worker.js": [
     [
      {}
@@ -93301,16 +94967,6 @@
      {}
     ]
    ],
-   "service-workers/service-worker/resources/update-max-aged-worker-imported-script.py": [
-    [
-     {}
-    ]
-   ],
-   "service-workers/service-worker/resources/update-max-aged-worker.py": [
-    [
-     {}
-    ]
-   ],
    "service-workers/service-worker/resources/update-nocookie-worker.py": [
     [
      {}
@@ -93421,6 +95077,11 @@
      {}
     ]
    ],
+   "shadow-dom/slots-fallback-in-document-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "shadow-dom/untriaged/LICENSE": [
     [
      {}
@@ -93536,21 +95197,11 @@
      {}
     ]
    ],
-   "staticrange/idlharness-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "storage/README.md": [
     [
      {}
     ]
    ],
-   "storage/interfaces.https-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "storage/interfaces.idl": [
     [
      {}
@@ -93571,6 +95222,11 @@
      {}
     ]
    ],
+   "storage/storage-persisted.js": [
+    [
+     {}
+    ]
+   ],
    "streams/README.md": [
     [
      {}
@@ -94416,7 +96072,27 @@
      {}
     ]
    ],
-   "user-timing/idlharness-expected.txt": [
+   "url/README.md": [
+    [
+     {}
+    ]
+   ],
+   "url/a-element-origin.js": [
+    [
+     {}
+    ]
+   ],
+   "url/a-element.js": [
+    [
+     {}
+    ]
+   ],
+   "url/setters_tests.json": [
+    [
+     {}
+    ]
+   ],
+   "url/urltestdata.json": [
     [
      {}
     ]
@@ -94511,11 +96187,6 @@
      {}
     ]
    ],
-   "web-animations/interfaces/Animation/reverse-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "web-animations/interfaces/Animation/startTime-expected.txt": [
     [
      {}
@@ -94531,11 +96202,6 @@
      {}
     ]
    ],
-   "web-animations/interfaces/AnimationTimeline/idlharness-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "web-animations/interfaces/Document/getAnimations-expected.txt": [
     [
      {}
@@ -94721,11 +96387,6 @@
      {}
     ]
    ],
-   "webaudio/the-audio-api/the-audiobuffer-interface/idl-test-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "webaudio/the-audio-api/the-audiobuffersourcenode-interface/.gitkeep": [
     [
      {}
@@ -94741,11 +96402,6 @@
      {}
     ]
    ],
-   "webaudio/the-audio-api/the-audiodestinationnode-interface/idl-test-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "webaudio/the-audio-api/the-audiolistener-interface/.gitkeep": [
     [
      {}
@@ -94796,11 +96452,6 @@
      {}
     ]
    ],
-   "webaudio/the-audio-api/the-delaynode-interface/idl-test-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "webaudio/the-audio-api/the-dynamicscompressornode-interface/.gitkeep": [
     [
      {}
@@ -94816,11 +96467,6 @@
      {}
     ]
    ],
-   "webaudio/the-audio-api/the-gainnode-interface/idl-test-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "webaudio/the-audio-api/the-iirfilternode-interface/test-iirfilternode-expected.txt": [
     [
      {}
@@ -94871,6 +96517,16 @@
      {}
     ]
    ],
+   "webauthn/helpers.js": [
+    [
+     {}
+    ]
+   ],
+   "webauthn/interfaces.idl": [
+    [
+     {}
+    ]
+   ],
    "webmessaging/MessageEvent-trusted-worker.js": [
     [
      {}
@@ -94901,6 +96557,11 @@
      {}
     ]
    ],
+   "webmessaging/messageerror-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "webmessaging/support/ChildWindowPostMessage.htm": [
     [
      {}
@@ -94926,16 +96587,56 @@
      {}
     ]
    ],
+   "webrtc/RTCConfiguration-iceCandidatePoolSize-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "webrtc/RTCPeerConnection-canTrickleIceCandidates-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "webrtc/RTCPeerConnection-constructor-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "webrtc/RTCPeerConnection-createDataChannel-expected.txt": [
     [
      {}
     ]
    ],
+   "webrtc/RTCPeerConnection-iceGatheringState-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "webrtc/RTCPeerConnection-idl-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "webrtc/RTCPeerConnection-setRemoteDescription-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "webrtc/datachannel-emptystring-expected.txt": [
     [
      {}
     ]
    ],
+   "webrtc/datachannel-idlharness-expected.txt": [
+    [
+     {}
+    ]
+   ],
+   "webrtc/getstats-expected.txt": [
+    [
+     {}
+    ]
+   ],
    "webrtc/no-media-call-expected.txt": [
     [
      {}
@@ -94951,6 +96652,166 @@
      {}
     ]
    ],
+   "websockets/README.md": [
+    [
+     {}
+    ]
+   ],
+   "websockets/constants.js": [
+    [
+     {}
+    ]
+   ],
+   "websockets/cookies/support/set-cookie.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/echo-cookie_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/echo-query_v13_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/echo-query_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/echo_close_data_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/echo_exit_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/echo_raw_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/echo_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/empty-message_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/handshake_no_protocol_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/handshake_protocol_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/handshake_sleep_2_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/invalid_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/origin_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/protocol_array_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/protocol_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/set-cookie-secure_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/set-cookie_http_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/set-cookie_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/simple_handshake_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/sleep_10_v13_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/stash_responder_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/handlers/wrong_accept_key_wsh.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/multi-globals/support/incumbent.sub.html": [
+    [
+     {}
+    ]
+   ],
+   "websockets/multi-globals/support/relevant.html": [
+    [
+     {}
+    ]
+   ],
+   "websockets/security/check.py": [
+    [
+     {}
+    ]
+   ],
+   "websockets/unload-a-document/001-1.html": [
+    [
+     {}
+    ]
+   ],
+   "websockets/unload-a-document/002-1.html": [
+    [
+     {}
+    ]
+   ],
+   "websockets/unload-a-document/005-1.html": [
+    [
+     {}
+    ]
+   ],
+   "websockets/websocket.sub.js": [
+    [
+     {}
+    ]
+   ],
    "webstorage/OWNERS": [
     [
      {}
@@ -95066,6 +96927,11 @@
      {}
     ]
    ],
+   "webusb/OWNERS": [
+    [
+     {}
+    ]
+   ],
    "webusb/idlharness-expected.txt": [
     [
      {}
@@ -99814,33 +101680,97 @@
      }
     ]
    ],
-   "WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html": [
+   "WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https.html": [
     [
-     "/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html",
+     "/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html": [
+   "WebCryptoAPI/derive_bits_keys/test_ecdh_keys.https.html": [
     [
-     "/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html",
+     "/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/derive_bits_keys/test_hkdf.html": [
+   "WebCryptoAPI/derive_bits_keys/test_hkdf.https.html": [
     [
-     "/WebCryptoAPI/derive_bits_keys/test_hkdf.html",
+     "/WebCryptoAPI/derive_bits_keys/test_hkdf.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/derive_bits_keys/test_pbkdf2.html": [
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_empty.https.html": [
     [
-     "/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html",
+     "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_empty.https.html",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_long.https.html": [
+    [
+     "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_long.https.html",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_short.https.html": [
+    [
+     "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_short.https.html",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https.html": [
+    [
+     "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https.html",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_long.https.html": [
+    [
+     "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_long.https.html",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_short.https.html": [
+    [
+     "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_short.https.html",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https.html": [
+    [
+     "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https.html",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_long.https.html": [
+    [
+     "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_long.https.html",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_short.https.html": [
+    [
+     "/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_short.https.html",
      {
       "timeout": "long"
      }
@@ -99852,9 +101782,9 @@
      {}
     ]
    ],
-   "WebCryptoAPI/digest/test_digest.html": [
+   "WebCryptoAPI/digest/test_digest.https.html": [
     [
-     "/WebCryptoAPI/digest/test_digest.html",
+     "/WebCryptoAPI/digest/test_digest.https.html",
      {
       "timeout": "long"
      }
@@ -99884,33 +101814,33 @@
      {}
     ]
    ],
-   "WebCryptoAPI/encrypt_decrypt/test_aes_cbc.html": [
+   "WebCryptoAPI/encrypt_decrypt/test_aes_cbc.https.html": [
     [
-     "/WebCryptoAPI/encrypt_decrypt/test_aes_cbc.html",
+     "/WebCryptoAPI/encrypt_decrypt/test_aes_cbc.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/encrypt_decrypt/test_aes_ctr.html": [
+   "WebCryptoAPI/encrypt_decrypt/test_aes_ctr.https.html": [
     [
-     "/WebCryptoAPI/encrypt_decrypt/test_aes_ctr.html",
+     "/WebCryptoAPI/encrypt_decrypt/test_aes_ctr.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/encrypt_decrypt/test_aes_gcm.html": [
+   "WebCryptoAPI/encrypt_decrypt/test_aes_gcm.https.html": [
     [
-     "/WebCryptoAPI/encrypt_decrypt/test_aes_gcm.html",
+     "/WebCryptoAPI/encrypt_decrypt/test_aes_gcm.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/encrypt_decrypt/test_rsa_oaep.html": [
+   "WebCryptoAPI/encrypt_decrypt/test_rsa_oaep.https.html": [
     [
-     "/WebCryptoAPI/encrypt_decrypt/test_rsa_oaep.html",
+     "/WebCryptoAPI/encrypt_decrypt/test_rsa_oaep.https.html",
      {
       "timeout": "long"
      }
@@ -100088,193 +102018,185 @@
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_aes-cbc.html": [
+   "WebCryptoAPI/generateKey/test_aes-cbc.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_aes-cbc.html",
+     "/WebCryptoAPI/generateKey/test_aes-cbc.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_aes-ctr.html": [
+   "WebCryptoAPI/generateKey/test_aes-ctr.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_aes-ctr.html",
+     "/WebCryptoAPI/generateKey/test_aes-ctr.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_failures.html": [
+   "WebCryptoAPI/generateKey/test_failures.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_failures.html",
+     "/WebCryptoAPI/generateKey/test_failures.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_failures_AES-CBC.html": [
+   "WebCryptoAPI/generateKey/test_failures_AES-CBC.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_failures_AES-CBC.html",
+     "/WebCryptoAPI/generateKey/test_failures_AES-CBC.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_failures_AES-CTR.html": [
+   "WebCryptoAPI/generateKey/test_failures_AES-CTR.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_failures_AES-CTR.html",
+     "/WebCryptoAPI/generateKey/test_failures_AES-CTR.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_failures_AES-GCM.html": [
+   "WebCryptoAPI/generateKey/test_failures_AES-GCM.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_failures_AES-GCM.html",
+     "/WebCryptoAPI/generateKey/test_failures_AES-GCM.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_failures_AES-KW.html": [
+   "WebCryptoAPI/generateKey/test_failures_AES-KW.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_failures_AES-KW.html",
+     "/WebCryptoAPI/generateKey/test_failures_AES-KW.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_failures_ECDH.html": [
+   "WebCryptoAPI/generateKey/test_failures_ECDH.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_failures_ECDH.html",
+     "/WebCryptoAPI/generateKey/test_failures_ECDH.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_failures_ECDSA.html": [
+   "WebCryptoAPI/generateKey/test_failures_ECDSA.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_failures_ECDSA.html",
+     "/WebCryptoAPI/generateKey/test_failures_ECDSA.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_failures_HMAC.html": [
+   "WebCryptoAPI/generateKey/test_failures_HMAC.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_failures_HMAC.html",
+     "/WebCryptoAPI/generateKey/test_failures_HMAC.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html": [
+   "WebCryptoAPI/generateKey/test_failures_RSA-OAEP.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html",
+     "/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_failures_RSA-PSS.html": [
+   "WebCryptoAPI/generateKey/test_failures_RSA-PSS.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_failures_RSA-PSS.html",
+     "/WebCryptoAPI/generateKey/test_failures_RSA-PSS.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html": [
+   "WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html",
+     "/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_successes.html": [
+   "WebCryptoAPI/generateKey/test_successes_AES-CBC.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_successes.html",
+     "/WebCryptoAPI/generateKey/test_successes_AES-CBC.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_successes_AES-CBC.html": [
+   "WebCryptoAPI/generateKey/test_successes_AES-CTR.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_successes_AES-CBC.html",
+     "/WebCryptoAPI/generateKey/test_successes_AES-CTR.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_successes_AES-CTR.html": [
+   "WebCryptoAPI/generateKey/test_successes_AES-GCM.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_successes_AES-CTR.html",
+     "/WebCryptoAPI/generateKey/test_successes_AES-GCM.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_successes_AES-GCM.html": [
+   "WebCryptoAPI/generateKey/test_successes_AES-KW.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_successes_AES-GCM.html",
+     "/WebCryptoAPI/generateKey/test_successes_AES-KW.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_successes_AES-KW.html": [
+   "WebCryptoAPI/generateKey/test_successes_ECDH.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_successes_AES-KW.html",
+     "/WebCryptoAPI/generateKey/test_successes_ECDH.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_successes_ECDH.html": [
+   "WebCryptoAPI/generateKey/test_successes_ECDSA.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_successes_ECDH.html",
+     "/WebCryptoAPI/generateKey/test_successes_ECDSA.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_successes_ECDSA.html": [
+   "WebCryptoAPI/generateKey/test_successes_HMAC.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_successes_ECDSA.html",
+     "/WebCryptoAPI/generateKey/test_successes_HMAC.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_successes_HMAC.html": [
+   "WebCryptoAPI/generateKey/test_successes_RSA-OAEP.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_successes_HMAC.html",
+     "/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html": [
+   "WebCryptoAPI/generateKey/test_successes_RSA-PSS.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html",
+     "/WebCryptoAPI/generateKey/test_successes_RSA-PSS.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/generateKey/test_successes_RSA-PSS.html": [
+   "WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.https.html": [
     [
-     "/WebCryptoAPI/generateKey/test_successes_RSA-PSS.html",
-     {
-      "timeout": "long"
-     }
-    ]
-   ],
-   "WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html": [
-    [
-     "/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html",
+     "/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.https.html",
      {
       "timeout": "long"
      }
@@ -100296,6 +102218,12 @@
      {}
     ]
    ],
+   "WebCryptoAPI/idlharness.https.html": [
+    [
+     "/WebCryptoAPI/idlharness.https.html",
+     {}
+    ]
+   ],
    "WebCryptoAPI/idlharness.worker.js": [
     [
      "/WebCryptoAPI/idlharness.worker.html",
@@ -100320,21 +102248,33 @@
      {}
     ]
    ],
-   "WebCryptoAPI/import_export/test_ec_importKey.html": [
+   "WebCryptoAPI/import_export/test_ec_importKey.https.html": [
     [
-     "/WebCryptoAPI/import_export/test_ec_importKey.html",
+     "/WebCryptoAPI/import_export/test_ec_importKey.https.html",
      {}
     ]
    ],
-   "WebCryptoAPI/import_export/test_rsa_importKey.html": [
+   "WebCryptoAPI/import_export/test_rsa_importKey.https.html": [
     [
-     "/WebCryptoAPI/import_export/test_rsa_importKey.html",
+     "/WebCryptoAPI/import_export/test_rsa_importKey.https.html",
      {}
     ]
    ],
-   "WebCryptoAPI/import_export/test_symmetric_importKey.html": [
+   "WebCryptoAPI/import_export/test_symmetric_importKey.https.html": [
     [
-     "/WebCryptoAPI/import_export/test_symmetric_importKey.html",
+     "/WebCryptoAPI/import_export/test_symmetric_importKey.https.html",
+     {}
+    ]
+   ],
+   "WebCryptoAPI/secure_context/crypto-subtle-non-secure-context-not-available.sub.html": [
+    [
+     "/WebCryptoAPI/secure_context/crypto-subtle-non-secure-context-not-available.sub.html",
+     {}
+    ]
+   ],
+   "WebCryptoAPI/secure_context/crypto-subtle-secure-context-available.https.sub.html": [
+    [
+     "/WebCryptoAPI/secure_context/crypto-subtle-secure-context-available.https.sub.html",
      {}
     ]
    ],
@@ -100362,41 +102302,41 @@
      {}
     ]
    ],
-   "WebCryptoAPI/sign_verify/test_ecdsa.html": [
+   "WebCryptoAPI/sign_verify/test_ecdsa.https.html": [
     [
-     "/WebCryptoAPI/sign_verify/test_ecdsa.html",
+     "/WebCryptoAPI/sign_verify/test_ecdsa.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/sign_verify/test_hmac.html": [
+   "WebCryptoAPI/sign_verify/test_hmac.https.html": [
     [
-     "/WebCryptoAPI/sign_verify/test_hmac.html",
+     "/WebCryptoAPI/sign_verify/test_hmac.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/sign_verify/test_rsa_pkcs.html": [
+   "WebCryptoAPI/sign_verify/test_rsa_pkcs.https.html": [
     [
-     "/WebCryptoAPI/sign_verify/test_rsa_pkcs.html",
+     "/WebCryptoAPI/sign_verify/test_rsa_pkcs.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/sign_verify/test_rsa_pss.html": [
+   "WebCryptoAPI/sign_verify/test_rsa_pss.https.html": [
     [
-     "/WebCryptoAPI/sign_verify/test_rsa_pss.html",
+     "/WebCryptoAPI/sign_verify/test_rsa_pss.https.html",
      {
       "timeout": "long"
      }
     ]
    ],
-   "WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html": [
+   "WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.https.html": [
     [
-     "/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html",
+     "/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.https.html",
      {
       "timeout": "long"
      }
@@ -100464,6 +102404,12 @@
      {}
     ]
    ],
+   "WebIDL/ecmascript-binding/legacy-callback-interface-object.html": [
+    [
+     "/WebIDL/ecmascript-binding/legacy-callback-interface-object.html",
+     {}
+    ]
+   ],
    "XMLHttpRequest/FormData-append.html": [
     [
      "/XMLHttpRequest/FormData-append.html",
@@ -101812,6 +103758,18 @@
      {}
     ]
    ],
+   "accelerometer/Accelerometer.https.html": [
+    [
+     "/accelerometer/Accelerometer.https.html",
+     {}
+    ]
+   ],
+   "accelerometer/Accelerometer_insecure_context.html": [
+    [
+     "/accelerometer/Accelerometer_insecure_context.html",
+     {}
+    ]
+   ],
    "accelerometer/idlharness.https.html": [
     [
      "/accelerometer/idlharness.https.html",
@@ -101842,6 +103800,30 @@
      {}
     ]
    ],
+   "battery-status/battery-interface-idlharness.html": [
+    [
+     "/battery-status/battery-interface-idlharness.html",
+     {}
+    ]
+   ],
+   "battery-status/battery-promise-iframe.html": [
+    [
+     "/battery-status/battery-promise-iframe.html",
+     {}
+    ]
+   ],
+   "battery-status/battery-promise-window.html": [
+    [
+     "/battery-status/battery-promise-window.html",
+     {}
+    ]
+   ],
+   "battery-status/battery-promise.html": [
+    [
+     "/battery-status/battery-promise.html",
+     {}
+    ]
+   ],
    "beacon/headers/header-referrer-no-referrer-when-downgrade.https.html": [
     [
      "/beacon/headers/header-referrer-no-referrer-when-downgrade.https.html",
@@ -103758,6 +105740,122 @@
      {}
     ]
    ],
+   "cors/304.htm": [
+    [
+     "/cors/304.htm",
+     {}
+    ]
+   ],
+   "cors/allow-headers.htm": [
+    [
+     "/cors/allow-headers.htm",
+     {}
+    ]
+   ],
+   "cors/basic.htm": [
+    [
+     "/cors/basic.htm",
+     {}
+    ]
+   ],
+   "cors/credentials-flag.htm": [
+    [
+     "/cors/credentials-flag.htm",
+     {}
+    ]
+   ],
+   "cors/late-upload-events.htm": [
+    [
+     "/cors/late-upload-events.htm",
+     {}
+    ]
+   ],
+   "cors/origin.htm": [
+    [
+     "/cors/origin.htm",
+     {}
+    ]
+   ],
+   "cors/preflight-cache.htm": [
+    [
+     "/cors/preflight-cache.htm",
+     {}
+    ]
+   ],
+   "cors/preflight-failure.htm": [
+    [
+     "/cors/preflight-failure.htm",
+     {}
+    ]
+   ],
+   "cors/redirect-origin.htm": [
+    [
+     "/cors/redirect-origin.htm",
+     {}
+    ]
+   ],
+   "cors/redirect-preflight-2.htm": [
+    [
+     "/cors/redirect-preflight-2.htm",
+     {}
+    ]
+   ],
+   "cors/redirect-preflight.htm": [
+    [
+     "/cors/redirect-preflight.htm",
+     {}
+    ]
+   ],
+   "cors/redirect-userinfo.htm": [
+    [
+     "/cors/redirect-userinfo.htm",
+     {}
+    ]
+   ],
+   "cors/remote-origin.htm": [
+    [
+     "/cors/remote-origin.htm",
+     {}
+    ]
+   ],
+   "cors/request-headers.htm": [
+    [
+     "/cors/request-headers.htm",
+     {}
+    ]
+   ],
+   "cors/response-headers.htm": [
+    [
+     "/cors/response-headers.htm",
+     {}
+    ]
+   ],
+   "cors/simple-requests.htm": [
+    [
+     "/cors/simple-requests.htm",
+     {}
+    ]
+   ],
+   "cors/status-async.htm": [
+    [
+     "/cors/status-async.htm",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "cors/status-preflight.htm": [
+    [
+     "/cors/status-preflight.htm",
+     {}
+    ]
+   ],
+   "cors/status.htm": [
+    [
+     "/cors/status.htm",
+     {}
+    ]
+   ],
    "credential-management/idl.https.html": [
     [
      "/credential-management/idl.https.html",
@@ -105324,6 +107422,12 @@
      {}
     ]
    ],
+   "css/geometry-1/DOMMatrix-css-string.worker.js": [
+    [
+     "/css/geometry-1/DOMMatrix-css-string.worker.html",
+     {}
+    ]
+   ],
    "css/geometry-1/DOMPoint-001.html": [
     [
      "/css/geometry-1/DOMPoint-001.html",
@@ -105354,6 +107458,24 @@
      {}
     ]
    ],
+   "css/geometry-1/WebKitCSSMatrix.html": [
+    [
+     "/css/geometry-1/WebKitCSSMatrix.html",
+     {}
+    ]
+   ],
+   "css/geometry-1/WebKitCSSMatrix.worker.js": [
+    [
+     "/css/geometry-1/WebKitCSSMatrix.worker.html",
+     {}
+    ]
+   ],
+   "css/geometry-1/historical.html": [
+    [
+     "/css/geometry-1/historical.html",
+     {}
+    ]
+   ],
    "css/selectors4/focus-display-none-001.html": [
     [
      "/css/selectors4/focus-display-none-001.html",
@@ -105714,6 +107836,12 @@
      {}
     ]
    ],
+   "cssom/getComputedStyle-pseudo.html": [
+    [
+     "/cssom/getComputedStyle-pseudo.html",
+     {}
+    ]
+   ],
    "cssom/historical.html": [
     [
      "/cssom/historical.html",
@@ -105852,6 +107980,12 @@
      {}
     ]
    ],
+   "cssom/variable-names.html": [
+    [
+     "/cssom/variable-names.html",
+     {}
+    ]
+   ],
    "custom-elements/CustomElementRegistry.html": [
     [
      "/custom-elements/CustomElementRegistry.html",
@@ -105900,6 +108034,12 @@
      {}
     ]
    ],
+   "custom-elements/custom-element-registry/per-global.html": [
+    [
+     "/custom-elements/custom-element-registry/per-global.html",
+     {}
+    ]
+   ],
    "custom-elements/disconnected-callbacks.html": [
     [
      "/custom-elements/disconnected-callbacks.html",
@@ -108058,6 +110198,12 @@
      {}
     ]
    ],
+   "editing/other/extra-text-nodes.html": [
+    [
+     "/editing/other/extra-text-nodes.html",
+     {}
+    ]
+   ],
    "editing/other/restoration.html": [
     [
      "/editing/other/restoration.html",
@@ -109062,6 +111208,372 @@
      {}
     ]
    ],
+   "eventsource/dedicated-worker/eventsource-close.htm": [
+    [
+     "/eventsource/dedicated-worker/eventsource-close.htm",
+     {}
+    ]
+   ],
+   "eventsource/dedicated-worker/eventsource-constructor-non-same-origin.htm": [
+    [
+     "/eventsource/dedicated-worker/eventsource-constructor-non-same-origin.htm",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "eventsource/dedicated-worker/eventsource-constructor-url-bogus.htm": [
+    [
+     "/eventsource/dedicated-worker/eventsource-constructor-url-bogus.htm",
+     {}
+    ]
+   ],
+   "eventsource/dedicated-worker/eventsource-eventtarget.worker.js": [
+    [
+     "/eventsource/dedicated-worker/eventsource-eventtarget.worker.html",
+     {}
+    ]
+   ],
+   "eventsource/dedicated-worker/eventsource-onmesage.htm": [
+    [
+     "/eventsource/dedicated-worker/eventsource-onmesage.htm",
+     {}
+    ]
+   ],
+   "eventsource/dedicated-worker/eventsource-onopen.htm": [
+    [
+     "/eventsource/dedicated-worker/eventsource-onopen.htm",
+     {}
+    ]
+   ],
+   "eventsource/dedicated-worker/eventsource-prototype.htm": [
+    [
+     "/eventsource/dedicated-worker/eventsource-prototype.htm",
+     {}
+    ]
+   ],
+   "eventsource/dedicated-worker/eventsource-url.htm": [
+    [
+     "/eventsource/dedicated-worker/eventsource-url.htm",
+     {}
+    ]
+   ],
+   "eventsource/event-data.html": [
+    [
+     "/eventsource/event-data.html",
+     {}
+    ]
+   ],
+   "eventsource/eventsource-close.htm": [
+    [
+     "/eventsource/eventsource-close.htm",
+     {}
+    ]
+   ],
+   "eventsource/eventsource-constructor-document-domain.htm": [
+    [
+     "/eventsource/eventsource-constructor-document-domain.htm",
+     {}
+    ]
+   ],
+   "eventsource/eventsource-constructor-non-same-origin.htm": [
+    [
+     "/eventsource/eventsource-constructor-non-same-origin.htm",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "eventsource/eventsource-constructor-stringify.htm": [
+    [
+     "/eventsource/eventsource-constructor-stringify.htm",
+     {}
+    ]
+   ],
+   "eventsource/eventsource-constructor-url-bogus.htm": [
+    [
+     "/eventsource/eventsource-constructor-url-bogus.htm",
+     {}
+    ]
+   ],
+   "eventsource/eventsource-constructor-url-multi-window.htm": [
+    [
+     "/eventsource/eventsource-constructor-url-multi-window.htm",
+     {}
+    ]
+   ],
+   "eventsource/eventsource-cross-origin.htm": [
+    [
+     "/eventsource/eventsource-cross-origin.htm",
+     {}
+    ]
+   ],
+   "eventsource/eventsource-eventtarget.htm": [
+    [
+     "/eventsource/eventsource-eventtarget.htm",
+     {}
+    ]
+   ],
+   "eventsource/eventsource-onmessage-realm.htm": [
+    [
+     "/eventsource/eventsource-onmessage-realm.htm",
+     {}
+    ]
+   ],
+   "eventsource/eventsource-onmessage-trusted.htm": [
+    [
+     "/eventsource/eventsource-onmessage-trusted.htm",
+     {}
+    ]
+   ],
+   "eventsource/eventsource-onmessage.htm": [
+    [
+     "/eventsource/eventsource-onmessage.htm",
+     {}
+    ]
+   ],
+   "eventsource/eventsource-onopen.htm": [
+    [
+     "/eventsource/eventsource-onopen.htm",
+     {}
+    ]
+   ],
+   "eventsource/eventsource-prototype.htm": [
+    [
+     "/eventsource/eventsource-prototype.htm",
+     {}
+    ]
+   ],
+   "eventsource/eventsource-reconnect.htm": [
+    [
+     "/eventsource/eventsource-reconnect.htm",
+     {}
+    ]
+   ],
+   "eventsource/eventsource-request-cancellation.htm": [
+    [
+     "/eventsource/eventsource-request-cancellation.htm",
+     {}
+    ]
+   ],
+   "eventsource/eventsource-url.htm": [
+    [
+     "/eventsource/eventsource-url.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-bom-2.htm": [
+    [
+     "/eventsource/format-bom-2.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-bom.htm": [
+    [
+     "/eventsource/format-bom.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-comments.htm": [
+    [
+     "/eventsource/format-comments.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-data-before-final-empty-line.htm": [
+    [
+     "/eventsource/format-data-before-final-empty-line.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-field-data.htm": [
+    [
+     "/eventsource/format-field-data.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-field-event-empty.htm": [
+    [
+     "/eventsource/format-field-event-empty.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-field-event.htm": [
+    [
+     "/eventsource/format-field-event.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-field-id-2.htm": [
+    [
+     "/eventsource/format-field-id-2.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-field-id.htm": [
+    [
+     "/eventsource/format-field-id.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-field-parsing.htm": [
+    [
+     "/eventsource/format-field-parsing.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-field-retry-bogus.htm": [
+    [
+     "/eventsource/format-field-retry-bogus.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-field-retry-empty.htm": [
+    [
+     "/eventsource/format-field-retry-empty.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-field-retry.htm": [
+    [
+     "/eventsource/format-field-retry.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-field-unknown.htm": [
+    [
+     "/eventsource/format-field-unknown.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-leading-space.htm": [
+    [
+     "/eventsource/format-leading-space.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-mime-bogus.htm": [
+    [
+     "/eventsource/format-mime-bogus.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-mime-trailing-semicolon.htm": [
+    [
+     "/eventsource/format-mime-trailing-semicolon.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-mime-valid-bogus.htm": [
+    [
+     "/eventsource/format-mime-valid-bogus.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-newlines.htm": [
+    [
+     "/eventsource/format-newlines.htm",
+     {}
+    ]
+   ],
+   "eventsource/format-null-character.html": [
+    [
+     "/eventsource/format-null-character.html",
+     {}
+    ]
+   ],
+   "eventsource/format-utf-8.htm": [
+    [
+     "/eventsource/format-utf-8.htm",
+     {}
+    ]
+   ],
+   "eventsource/interfaces.html": [
+    [
+     "/eventsource/interfaces.html",
+     {}
+    ]
+   ],
+   "eventsource/request-accept.htm": [
+    [
+     "/eventsource/request-accept.htm",
+     {}
+    ]
+   ],
+   "eventsource/request-cache-control.htm": [
+    [
+     "/eventsource/request-cache-control.htm",
+     {}
+    ]
+   ],
+   "eventsource/request-credentials.htm": [
+    [
+     "/eventsource/request-credentials.htm",
+     {}
+    ]
+   ],
+   "eventsource/request-redirect.htm": [
+    [
+     "/eventsource/request-redirect.htm",
+     {}
+    ]
+   ],
+   "eventsource/request-status-error.htm": [
+    [
+     "/eventsource/request-status-error.htm",
+     {}
+    ]
+   ],
+   "eventsource/shared-worker/eventsource-close.htm": [
+    [
+     "/eventsource/shared-worker/eventsource-close.htm",
+     {}
+    ]
+   ],
+   "eventsource/shared-worker/eventsource-constructor-non-same-origin.htm": [
+    [
+     "/eventsource/shared-worker/eventsource-constructor-non-same-origin.htm",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "eventsource/shared-worker/eventsource-constructor-url-bogus.htm": [
+    [
+     "/eventsource/shared-worker/eventsource-constructor-url-bogus.htm",
+     {}
+    ]
+   ],
+   "eventsource/shared-worker/eventsource-eventtarget.htm": [
+    [
+     "/eventsource/shared-worker/eventsource-eventtarget.htm",
+     {}
+    ]
+   ],
+   "eventsource/shared-worker/eventsource-onmesage.htm": [
+    [
+     "/eventsource/shared-worker/eventsource-onmesage.htm",
+     {}
+    ]
+   ],
+   "eventsource/shared-worker/eventsource-onopen.htm": [
+    [
+     "/eventsource/shared-worker/eventsource-onopen.htm",
+     {}
+    ]
+   ],
+   "eventsource/shared-worker/eventsource-prototype.htm": [
+    [
+     "/eventsource/shared-worker/eventsource-prototype.htm",
+     {}
+    ]
+   ],
+   "eventsource/shared-worker/eventsource-url.htm": [
+    [
+     "/eventsource/shared-worker/eventsource-url.htm",
+     {}
+    ]
+   ],
    "fetch/api/basic/accept-header.any.js": [
     [
      "/fetch/api/basic/accept-header.any.html",
@@ -110066,6 +112578,78 @@
      {}
     ]
    ],
+   "generic-sensor/idlharness.html": [
+    [
+     "/generic-sensor/idlharness.html",
+     {}
+    ]
+   ],
+   "geolocation-API/PositionOptions.https.html": [
+    [
+     "/geolocation-API/PositionOptions.https.html",
+     {}
+    ]
+   ],
+   "geolocation-API/clearWatch_TypeError.html": [
+    [
+     "/geolocation-API/clearWatch_TypeError.html",
+     {}
+    ]
+   ],
+   "geolocation-API/getCurrentPosition_IDL.https.html": [
+    [
+     "/geolocation-API/getCurrentPosition_IDL.https.html",
+     {}
+    ]
+   ],
+   "geolocation-API/getCurrentPosition_TypeError.html": [
+    [
+     "/geolocation-API/getCurrentPosition_TypeError.html",
+     {}
+    ]
+   ],
+   "geolocation-API/getCurrentPosition_permission_allow.https.html": [
+    [
+     "/geolocation-API/getCurrentPosition_permission_allow.https.html",
+     {}
+    ]
+   ],
+   "geolocation-API/getCurrentPosition_permission_deny.https.html": [
+    [
+     "/geolocation-API/getCurrentPosition_permission_deny.https.html",
+     {}
+    ]
+   ],
+   "geolocation-API/interfaces.html": [
+    [
+     "/geolocation-API/interfaces.html",
+     {}
+    ]
+   ],
+   "geolocation-API/watchPosition_TypeError.html": [
+    [
+     "/geolocation-API/watchPosition_TypeError.html",
+     {}
+    ]
+   ],
+   "geolocation-API/watchPosition_permission_deny.https.html": [
+    [
+     "/geolocation-API/watchPosition_permission_deny.https.html",
+     {}
+    ]
+   ],
+   "gyroscope/Gyroscope.https.html": [
+    [
+     "/gyroscope/Gyroscope.https.html",
+     {}
+    ]
+   ],
+   "gyroscope/Gyroscope_insecure_context.html": [
+    [
+     "/gyroscope/Gyroscope_insecure_context.html",
+     {}
+    ]
+   ],
    "gyroscope/idlharness.https.html": [
     [
      "/gyroscope/idlharness.https.html",
@@ -115374,6 +117958,12 @@
      {}
     ]
    ],
+   "html/semantics/scripting-1/the-script-element/module/currentScript-null.html": [
+    [
+     "/html/semantics/scripting-1/the-script-element/module/currentScript-null.html",
+     {}
+    ]
+   ],
    "html/semantics/scripting-1/the-script-element/module/errorhandling.html": [
     [
      "/html/semantics/scripting-1/the-script-element/module/errorhandling.html",
@@ -117280,10 +119870,84 @@
      {}
     ]
    ],
-   "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm": [
+   "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-1.htm": [
     [
-     "/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm",
-     {}
+     "/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-1.htm",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-10.htm": [
+    [
+     "/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-10.htm",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-2.htm": [
+    [
+     "/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-2.htm",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-3.htm": [
+    [
+     "/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-3.htm",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-4.htm": [
+    [
+     "/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-4.htm",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-5.htm": [
+    [
+     "/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-5.htm",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-6.htm": [
+    [
+     "/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-6.htm",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-7.htm": [
+    [
+     "/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-7.htm",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-8.htm": [
+    [
+     "/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-8.htm",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-9.htm": [
+    [
+     "/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-9.htm",
+     {
+      "timeout": "long"
+     }
     ]
    ],
    "html/webappapis/animation-frames/callback-exception.html": [
@@ -118022,6 +120686,12 @@
      {}
     ]
    ],
+   "http/content_length.html": [
+    [
+     "/http/content_length.html",
+     {}
+    ]
+   ],
    "infrastructure/failing-test.html": [
     [
      "/infrastructure/failing-test.html",
@@ -118094,6 +120764,18 @@
      {}
     ]
    ],
+   "magnetometer/Magnetometer.https.html": [
+    [
+     "/magnetometer/Magnetometer.https.html",
+     {}
+    ]
+   ],
+   "magnetometer/Magnetometer_insecure_context.html": [
+    [
+     "/magnetometer/Magnetometer_insecure_context.html",
+     {}
+    ]
+   ],
    "magnetometer/idlharness.https.html": [
     [
      "/magnetometer/idlharness.https.html",
@@ -118478,6 +121160,12 @@
      {}
     ]
    ],
+   "mediacapture-image/idlharness.html": [
+    [
+     "/mediacapture-image/idlharness.html",
+     {}
+    ]
+   ],
    "mediacapture-record/BlobEvent-constructor.html": [
     [
      "/mediacapture-record/BlobEvent-constructor.html",
@@ -119912,6 +122600,12 @@
      {}
     ]
    ],
+   "mixed-content/imageset.https.sub.html": [
+    [
+     "/mixed-content/imageset.https.sub.html",
+     {}
+    ]
+   ],
    "mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [
     [
      "/mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html",
@@ -120644,6 +123338,12 @@
      {}
     ]
    ],
+   "payment-request/payment-request-constructor.https.html": [
+    [
+     "/payment-request/payment-request-constructor.https.html",
+     {}
+    ]
+   ],
    "payment-request/payment-request-id.https.html": [
     [
      "/payment-request/payment-request-id.https.html",
@@ -120656,6 +123356,12 @@
      {}
     ]
    ],
+   "payment-request/payment-request-show-method.https.html": [
+    [
+     "/payment-request/payment-request-show-method.https.html",
+     {}
+    ]
+   ],
    "pointerevents/extension/idlharness.html": [
     [
      "/pointerevents/extension/idlharness.html",
@@ -120698,6 +123404,18 @@
      {}
     ]
    ],
+   "pointerlock/constructor.html": [
+    [
+     "/pointerlock/constructor.html",
+     {}
+    ]
+   ],
+   "pointerlock/idlharness.html": [
+    [
+     "/pointerlock/idlharness.html",
+     {}
+    ]
+   ],
    "preload/avoid-delaying-onload-link-preload.html": [
     [
      "/preload/avoid-delaying-onload-link-preload.html",
@@ -120782,6 +123500,30 @@
      {}
     ]
    ],
+   "progress-events/constructor.html": [
+    [
+     "/progress-events/constructor.html",
+     {}
+    ]
+   ],
+   "progress-events/interface.html": [
+    [
+     "/progress-events/interface.html",
+     {}
+    ]
+   ],
+   "progress-events/tests/submissions/Samsung/firing-events-http-content-length.html": [
+    [
+     "/progress-events/tests/submissions/Samsung/firing-events-http-content-length.html",
+     {}
+    ]
+   ],
+   "progress-events/tests/submissions/Samsung/firing-events-http-no-content-length.html": [
+    [
+     "/progress-events/tests/submissions/Samsung/firing-events-http-no-content-length.html",
+     {}
+    ]
+   ],
    "quirks-mode/blocks-ignore-line-height.html": [
     [
      "/quirks-mode/blocks-ignore-line-height.html",
@@ -128890,6 +131632,54 @@
      {}
     ]
    ],
+   "secure-contexts/basic-dedicated-worker.html": [
+    [
+     "/secure-contexts/basic-dedicated-worker.html",
+     {}
+    ]
+   ],
+   "secure-contexts/basic-dedicated-worker.https.html": [
+    [
+     "/secure-contexts/basic-dedicated-worker.https.html",
+     {}
+    ]
+   ],
+   "secure-contexts/basic-popup-and-iframe-tests.html": [
+    [
+     "/secure-contexts/basic-popup-and-iframe-tests.html",
+     {}
+    ]
+   ],
+   "secure-contexts/basic-popup-and-iframe-tests.https.html": [
+    [
+     "/secure-contexts/basic-popup-and-iframe-tests.https.html",
+     {}
+    ]
+   ],
+   "secure-contexts/basic-shared-worker.html": [
+    [
+     "/secure-contexts/basic-shared-worker.html",
+     {}
+    ]
+   ],
+   "secure-contexts/basic-shared-worker.https.html": [
+    [
+     "/secure-contexts/basic-shared-worker.https.html",
+     {}
+    ]
+   ],
+   "secure-contexts/shared-worker-insecure-first.https.html": [
+    [
+     "/secure-contexts/shared-worker-insecure-first.https.html",
+     {}
+    ]
+   ],
+   "secure-contexts/shared-worker-secure-first.https.html": [
+    [
+     "/secure-contexts/shared-worker-secure-first.https.html",
+     {}
+    ]
+   ],
    "selection/Document-open.html": [
     [
      "/selection/Document-open.html",
@@ -129140,6 +131930,12 @@
      {}
     ]
    ],
+   "server-timing/test_server_timing.html": [
+    [
+     "/server-timing/test_server_timing.html",
+     {}
+    ]
+   ],
    "service-workers/cache-storage/common.https.html": [
     [
      "/service-workers/cache-storage/common.https.html",
@@ -129632,6 +132428,12 @@
      }
     ]
    ],
+   "service-workers/service-worker/fetch-event-respond-with-argument.https.html": [
+    [
+     "/service-workers/service-worker/fetch-event-respond-with-argument.https.html",
+     {}
+    ]
+   ],
    "service-workers/service-worker/fetch-event-respond-with-stops-propagation.https.html": [
     [
      "/service-workers/service-worker/fetch-event-respond-with-stops-propagation.https.html",
@@ -129704,6 +132506,12 @@
      {}
     ]
    ],
+   "service-workers/service-worker/fetch-request-html-imports.https.html": [
+    [
+     "/service-workers/service-worker/fetch-request-html-imports.https.html",
+     {}
+    ]
+   ],
    "service-workers/service-worker/fetch-request-no-freshness-headers.https.html": [
     [
      "/service-workers/service-worker/fetch-request-no-freshness-headers.https.html",
@@ -129730,6 +132538,14 @@
      {}
     ]
    ],
+   "service-workers/service-worker/fetch-response-taint.https.html": [
+    [
+     "/service-workers/service-worker/fetch-response-taint.https.html",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
    "service-workers/service-worker/fetch-response-xhr.https.html": [
     [
      "/service-workers/service-worker/fetch-response-xhr.https.html",
@@ -129780,6 +132596,18 @@
      {}
     ]
    ],
+   "service-workers/service-worker/import-scripts-resource-map.https.html": [
+    [
+     "/service-workers/service-worker/import-scripts-resource-map.https.html",
+     {}
+    ]
+   ],
+   "service-workers/service-worker/import-scripts-updated-flag.https.html": [
+    [
+     "/service-workers/service-worker/import-scripts-updated-flag.https.html",
+     {}
+    ]
+   ],
    "service-workers/service-worker/indexeddb.https.html": [
     [
      "/service-workers/service-worker/indexeddb.https.html",
@@ -130010,12 +132838,6 @@
      {}
     ]
    ],
-   "service-workers/service-worker/registration-useCache.https.html": [
-    [
-     "/service-workers/service-worker/registration-useCache.https.html",
-     {}
-    ]
-   ],
    "service-workers/service-worker/registration.https.html": [
     [
      "/service-workers/service-worker/registration.https.html",
@@ -130718,6 +133540,18 @@
      {}
     ]
    ],
+   "storage/persisted-worker.https.html": [
+    [
+     "/storage/persisted-worker.https.html",
+     {}
+    ]
+   ],
+   "storage/persisted.https.html": [
+    [
+     "/storage/persisted.https.html",
+     {}
+    ]
+   ],
    "storage/storagemanager-estimate.https.html": [
     [
      "/storage/storagemanager-estimate.https.html",
@@ -131818,6 +134652,142 @@
      {}
     ]
    ],
+   "url/a-element-origin-xhtml.xhtml": [
+    [
+     "/url/a-element-origin-xhtml.xhtml",
+     {}
+    ]
+   ],
+   "url/a-element-origin.html": [
+    [
+     "/url/a-element-origin.html",
+     {}
+    ]
+   ],
+   "url/a-element-xhtml.xhtml": [
+    [
+     "/url/a-element-xhtml.xhtml",
+     {}
+    ]
+   ],
+   "url/a-element.html": [
+    [
+     "/url/a-element.html",
+     {}
+    ]
+   ],
+   "url/failure.html": [
+    [
+     "/url/failure.html",
+     {}
+    ]
+   ],
+   "url/historical.any.js": [
+    [
+     "/url/historical.any.html",
+     {}
+    ],
+    [
+     "/url/historical.any.worker.html",
+     {}
+    ]
+   ],
+   "url/interfaces.html": [
+    [
+     "/url/interfaces.html",
+     {}
+    ]
+   ],
+   "url/url-constructor.html": [
+    [
+     "/url/url-constructor.html",
+     {}
+    ]
+   ],
+   "url/url-origin.html": [
+    [
+     "/url/url-origin.html",
+     {}
+    ]
+   ],
+   "url/url-setters.html": [
+    [
+     "/url/url-setters.html",
+     {}
+    ]
+   ],
+   "url/url-tojson.html": [
+    [
+     "/url/url-tojson.html",
+     {}
+    ]
+   ],
+   "url/urlencoded-parser.html": [
+    [
+     "/url/urlencoded-parser.html",
+     {}
+    ]
+   ],
+   "url/urlsearchparams-append.html": [
+    [
+     "/url/urlsearchparams-append.html",
+     {}
+    ]
+   ],
+   "url/urlsearchparams-constructor.html": [
+    [
+     "/url/urlsearchparams-constructor.html",
+     {}
+    ]
+   ],
+   "url/urlsearchparams-delete.html": [
+    [
+     "/url/urlsearchparams-delete.html",
+     {}
+    ]
+   ],
+   "url/urlsearchparams-foreach.html": [
+    [
+     "/url/urlsearchparams-foreach.html",
+     {}
+    ]
+   ],
+   "url/urlsearchparams-get.html": [
+    [
+     "/url/urlsearchparams-get.html",
+     {}
+    ]
+   ],
+   "url/urlsearchparams-getall.html": [
+    [
+     "/url/urlsearchparams-getall.html",
+     {}
+    ]
+   ],
+   "url/urlsearchparams-has.html": [
+    [
+     "/url/urlsearchparams-has.html",
+     {}
+    ]
+   ],
+   "url/urlsearchparams-set.html": [
+    [
+     "/url/urlsearchparams-set.html",
+     {}
+    ]
+   ],
+   "url/urlsearchparams-sort.html": [
+    [
+     "/url/urlsearchparams-sort.html",
+     {}
+    ]
+   ],
+   "url/urlsearchparams-stringifier.html": [
+    [
+     "/url/urlsearchparams-stringifier.html",
+     {}
+    ]
+   ],
    "user-timing/clear_all_marks.any.js": [
     [
      "/user-timing/clear_all_marks.any.html",
@@ -131966,6 +134936,30 @@
      {}
     ]
    ],
+   "vibration/api-is-present.html": [
+    [
+     "/vibration/api-is-present.html",
+     {}
+    ]
+   ],
+   "vibration/idl.html": [
+    [
+     "/vibration/idl.html",
+     {}
+    ]
+   ],
+   "vibration/invalid-values.html": [
+    [
+     "/vibration/invalid-values.html",
+     {}
+    ]
+   ],
+   "vibration/silent-ignore.html": [
+    [
+     "/vibration/silent-ignore.html",
+     {}
+    ]
+   ],
    "web-animations/animation-model/animation-types/addition-per-property.html": [
     [
      "/web-animations/animation-model/animation-types/addition-per-property.html",
@@ -132134,12 +135128,6 @@
      {}
     ]
    ],
-   "web-animations/interfaces/Animation/reverse.html": [
-    [
-     "/web-animations/interfaces/Animation/reverse.html",
-     {}
-    ]
-   ],
    "web-animations/interfaces/Animation/startTime.html": [
     [
      "/web-animations/interfaces/Animation/startTime.html",
@@ -132356,6 +135344,12 @@
      {}
     ]
    ],
+   "web-animations/timing-model/animations/reversing-an-animation.html": [
+    [
+     "/web-animations/timing-model/animations/reversing-an-animation.html",
+     {}
+    ]
+   ],
    "web-animations/timing-model/animations/set-the-animation-start-time.html": [
     [
      "/web-animations/timing-model/animations/set-the-animation-start-time.html",
@@ -132506,6 +135500,30 @@
      {}
     ]
    ],
+   "webauthn/interfaces.https.html": [
+    [
+     "/webauthn/interfaces.https.html",
+     {}
+    ]
+   ],
+   "webauthn/makecredential-badargs-accountinformation.https.html": [
+    [
+     "/webauthn/makecredential-badargs-accountinformation.https.html",
+     {}
+    ]
+   ],
+   "webauthn/makecredential-badargs-attestationchallenge.https.html": [
+    [
+     "/webauthn/makecredential-badargs-attestationchallenge.https.html",
+     {}
+    ]
+   ],
+   "webauthn/makecredential-badargs-cryptoparameters.https.html": [
+    [
+     "/webauthn/makecredential-badargs-cryptoparameters.https.html",
+     {}
+    ]
+   ],
    "webmessaging/Channel_postMessage_DataCloneErr.htm": [
     [
      "/webmessaging/Channel_postMessage_DataCloneErr.htm",
@@ -133148,6 +136166,12 @@
      {}
     ]
    ],
+   "webrtc/interfaces.html": [
+    [
+     "/webrtc/interfaces.html",
+     {}
+    ]
+   ],
    "webrtc/no-media-call.html": [
     [
      "/webrtc/no-media-call.html",
@@ -133166,6 +136190,1722 @@
      {}
     ]
    ],
+   "websockets/Close-1000-reason.htm": [
+    [
+     "/websockets/Close-1000-reason.htm",
+     {}
+    ]
+   ],
+   "websockets/Close-1000.htm": [
+    [
+     "/websockets/Close-1000.htm",
+     {}
+    ]
+   ],
+   "websockets/Close-Reason-124Bytes.htm": [
+    [
+     "/websockets/Close-Reason-124Bytes.htm",
+     {}
+    ]
+   ],
+   "websockets/Close-reason-unpaired-surrogates.htm": [
+    [
+     "/websockets/Close-reason-unpaired-surrogates.htm",
+     {}
+    ]
+   ],
+   "websockets/Close-undefined.htm": [
+    [
+     "/websockets/Close-undefined.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-Secure-extensions-empty.htm": [
+    [
+     "/websockets/Create-Secure-extensions-empty.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-Secure-url-with-space.htm": [
+    [
+     "/websockets/Create-Secure-url-with-space.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-Secure-valid-url-array-protocols.htm": [
+    [
+     "/websockets/Create-Secure-valid-url-array-protocols.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-Secure-valid-url-binaryType-blob.htm": [
+    [
+     "/websockets/Create-Secure-valid-url-binaryType-blob.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-Secure-valid-url-protocol-setCorrectly.htm": [
+    [
+     "/websockets/Create-Secure-valid-url-protocol-setCorrectly.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-Secure-valid-url-protocol-string.htm": [
+    [
+     "/websockets/Create-Secure-valid-url-protocol-string.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-Secure-valid-url.htm": [
+    [
+     "/websockets/Create-Secure-valid-url.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-Secure-verify-url-set-non-default-port.htm": [
+    [
+     "/websockets/Create-Secure-verify-url-set-non-default-port.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-asciiSep-protocol-string.htm": [
+    [
+     "/websockets/Create-asciiSep-protocol-string.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-blocked-port.htm": [
+    [
+     "/websockets/Create-blocked-port.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-invalid-urls.htm": [
+    [
+     "/websockets/Create-invalid-urls.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-non-absolute-url.htm": [
+    [
+     "/websockets/Create-non-absolute-url.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-nonAscii-protocol-string.htm": [
+    [
+     "/websockets/Create-nonAscii-protocol-string.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-protocol-with-space.htm": [
+    [
+     "/websockets/Create-protocol-with-space.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-protocols-repeated-case-insensitive.htm": [
+    [
+     "/websockets/Create-protocols-repeated-case-insensitive.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-protocols-repeated.htm": [
+    [
+     "/websockets/Create-protocols-repeated.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-valid-url-array-protocols.htm": [
+    [
+     "/websockets/Create-valid-url-array-protocols.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-valid-url-protocol-empty.htm": [
+    [
+     "/websockets/Create-valid-url-protocol-empty.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-valid-url-protocol.htm": [
+    [
+     "/websockets/Create-valid-url-protocol.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-valid-url.htm": [
+    [
+     "/websockets/Create-valid-url.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-verify-url-set-non-default-port.htm": [
+    [
+     "/websockets/Create-verify-url-set-non-default-port.htm",
+     {}
+    ]
+   ],
+   "websockets/Create-wrong-scheme.htm": [
+    [
+     "/websockets/Create-wrong-scheme.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Close-1000-reason.htm": [
+    [
+     "/websockets/Secure-Close-1000-reason.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Close-1000-verify-code.htm": [
+    [
+     "/websockets/Secure-Close-1000-verify-code.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Close-1000.htm": [
+    [
+     "/websockets/Secure-Close-1000.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Close-1005-verify-code.htm": [
+    [
+     "/websockets/Secure-Close-1005-verify-code.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Close-1005.htm": [
+    [
+     "/websockets/Secure-Close-1005.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Close-2999-reason.htm": [
+    [
+     "/websockets/Secure-Close-2999-reason.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Close-3000-reason.htm": [
+    [
+     "/websockets/Secure-Close-3000-reason.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Close-3000-verify-code.htm": [
+    [
+     "/websockets/Secure-Close-3000-verify-code.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Close-4999-reason.htm": [
+    [
+     "/websockets/Secure-Close-4999-reason.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Close-Reason-124Bytes.htm": [
+    [
+     "/websockets/Secure-Close-Reason-124Bytes.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Close-Reason-Unpaired-surrogates.htm": [
+    [
+     "/websockets/Secure-Close-Reason-Unpaired-surrogates.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Close-onlyReason.htm": [
+    [
+     "/websockets/Secure-Close-onlyReason.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Close-readyState-Closed.htm": [
+    [
+     "/websockets/Secure-Close-readyState-Closed.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Close-readyState-Closing.htm": [
+    [
+     "/websockets/Secure-Close-readyState-Closing.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Close-server-initiated-close.htm": [
+    [
+     "/websockets/Secure-Close-server-initiated-close.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Close-undefined.htm": [
+    [
+     "/websockets/Secure-Close-undefined.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Send-65K-data.htm": [
+    [
+     "/websockets/Secure-Send-65K-data.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Send-binary-65K-arraybuffer.htm": [
+    [
+     "/websockets/Secure-Send-binary-65K-arraybuffer.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Send-binary-arraybuffer.htm": [
+    [
+     "/websockets/Secure-Send-binary-arraybuffer.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Send-binary-arraybufferview-float32.htm": [
+    [
+     "/websockets/Secure-Send-binary-arraybufferview-float32.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Send-binary-arraybufferview-float64.htm": [
+    [
+     "/websockets/Secure-Send-binary-arraybufferview-float64.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Send-binary-arraybufferview-int32.htm": [
+    [
+     "/websockets/Secure-Send-binary-arraybufferview-int32.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Send-binary-arraybufferview-uint16-offset-length.htm": [
+    [
+     "/websockets/Secure-Send-binary-arraybufferview-uint16-offset-length.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Send-binary-arraybufferview-uint32-offset.htm": [
+    [
+     "/websockets/Secure-Send-binary-arraybufferview-uint32-offset.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Send-binary-arraybufferview-uint8-offset-length.htm": [
+    [
+     "/websockets/Secure-Send-binary-arraybufferview-uint8-offset-length.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Send-binary-arraybufferview-uint8-offset.htm": [
+    [
+     "/websockets/Secure-Send-binary-arraybufferview-uint8-offset.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Send-binary-blob.htm": [
+    [
+     "/websockets/Secure-Send-binary-blob.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Send-data.htm": [
+    [
+     "/websockets/Secure-Send-data.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Send-null.htm": [
+    [
+     "/websockets/Secure-Send-null.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Send-paired-surrogates.htm": [
+    [
+     "/websockets/Secure-Send-paired-surrogates.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Send-unicode-data.htm": [
+    [
+     "/websockets/Secure-Send-unicode-data.htm",
+     {}
+    ]
+   ],
+   "websockets/Secure-Send-unpaired-surrogates.htm": [
+    [
+     "/websockets/Secure-Send-unpaired-surrogates.htm",
+     {}
+    ]
+   ],
+   "websockets/Send-0byte-data.htm": [
+    [
+     "/websockets/Send-0byte-data.htm",
+     {}
+    ]
+   ],
+   "websockets/Send-65K-data.htm": [
+    [
+     "/websockets/Send-65K-data.htm",
+     {}
+    ]
+   ],
+   "websockets/Send-Unpaired-Surrogates.htm": [
+    [
+     "/websockets/Send-Unpaired-Surrogates.htm",
+     {}
+    ]
+   ],
+   "websockets/Send-before-open.htm": [
+    [
+     "/websockets/Send-before-open.htm",
+     {}
+    ]
+   ],
+   "websockets/Send-binary-65K-arraybuffer.htm": [
+    [
+     "/websockets/Send-binary-65K-arraybuffer.htm",
+     {}
+    ]
+   ],
+   "websockets/Send-binary-arraybuffer.htm": [
+    [
+     "/websockets/Send-binary-arraybuffer.htm",
+     {}
+    ]
+   ],
+   "websockets/Send-binary-arraybufferview-int16-offset.htm": [
+    [
+     "/websockets/Send-binary-arraybufferview-int16-offset.htm",
+     {}
+    ]
+   ],
+   "websockets/Send-binary-arraybufferview-int8.htm": [
+    [
+     "/websockets/Send-binary-arraybufferview-int8.htm",
+     {}
+    ]
+   ],
+   "websockets/Send-binary-blob.htm": [
+    [
+     "/websockets/Send-binary-blob.htm",
+     {}
+    ]
+   ],
+   "websockets/Send-data.htm": [
+    [
+     "/websockets/Send-data.htm",
+     {}
+    ]
+   ],
+   "websockets/Send-data.worker.js": [
+    [
+     "/websockets/Send-data.worker.html",
+     {}
+    ]
+   ],
+   "websockets/Send-null.htm": [
+    [
+     "/websockets/Send-null.htm",
+     {}
+    ]
+   ],
+   "websockets/Send-paired-surrogates.htm": [
+    [
+     "/websockets/Send-paired-surrogates.htm",
+     {}
+    ]
+   ],
+   "websockets/Send-unicode-data.htm": [
+    [
+     "/websockets/Send-unicode-data.htm",
+     {}
+    ]
+   ],
+   "websockets/binary/001.html": [
+    [
+     "/websockets/binary/001.html",
+     {}
+    ],
+    [
+     "/websockets/binary/001.html?wss",
+     {}
+    ]
+   ],
+   "websockets/binary/002.html": [
+    [
+     "/websockets/binary/002.html",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/websockets/binary/002.html?wss",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "websockets/binary/004.html": [
+    [
+     "/websockets/binary/004.html",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/websockets/binary/004.html?wss",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "websockets/binary/005.html": [
+    [
+     "/websockets/binary/005.html",
+     {}
+    ],
+    [
+     "/websockets/binary/005.html?wss",
+     {}
+    ]
+   ],
+   "websockets/binaryType-wrong-value.htm": [
+    [
+     "/websockets/binaryType-wrong-value.htm",
+     {}
+    ]
+   ],
+   "websockets/close-invalid.any.js": [
+    [
+     "/websockets/close-invalid.any.html",
+     {}
+    ],
+    [
+     "/websockets/close-invalid.any.worker.html",
+     {}
+    ]
+   ],
+   "websockets/closing-handshake/002.html": [
+    [
+     "/websockets/closing-handshake/002.html",
+     {}
+    ],
+    [
+     "/websockets/closing-handshake/002.html?wss",
+     {}
+    ]
+   ],
+   "websockets/closing-handshake/003.html": [
+    [
+     "/websockets/closing-handshake/003.html",
+     {}
+    ],
+    [
+     "/websockets/closing-handshake/003.html?wss",
+     {}
+    ]
+   ],
+   "websockets/closing-handshake/004.html": [
+    [
+     "/websockets/closing-handshake/004.html",
+     {}
+    ],
+    [
+     "/websockets/closing-handshake/004.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor.html": [
+    [
+     "/websockets/constructor.html",
+     {}
+    ]
+   ],
+   "websockets/constructor/001.html": [
+    [
+     "/websockets/constructor/001.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/001.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/002.html": [
+    [
+     "/websockets/constructor/002.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/002.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/004.html": [
+    [
+     "/websockets/constructor/004.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/004.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/005.html": [
+    [
+     "/websockets/constructor/005.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/005.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/006.html": [
+    [
+     "/websockets/constructor/006.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/006.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/007.html": [
+    [
+     "/websockets/constructor/007.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/007.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/008.html": [
+    [
+     "/websockets/constructor/008.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/008.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/009.html": [
+    [
+     "/websockets/constructor/009.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/009.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/010.html": [
+    [
+     "/websockets/constructor/010.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/010.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/011.html": [
+    [
+     "/websockets/constructor/011.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/011.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/012.html": [
+    [
+     "/websockets/constructor/012.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/012.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/013.html": [
+    [
+     "/websockets/constructor/013.html",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/websockets/constructor/013.html?wss",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "websockets/constructor/014.html": [
+    [
+     "/websockets/constructor/014.html",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/websockets/constructor/014.html?wss",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "websockets/constructor/016.html": [
+    [
+     "/websockets/constructor/016.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/016.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/017.html": [
+    [
+     "/websockets/constructor/017.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/017.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/018.html": [
+    [
+     "/websockets/constructor/018.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/018.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/019.html": [
+    [
+     "/websockets/constructor/019.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/019.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/020.html": [
+    [
+     "/websockets/constructor/020.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/020.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/021.html": [
+    [
+     "/websockets/constructor/021.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/021.html?wss",
+     {}
+    ]
+   ],
+   "websockets/constructor/022.html": [
+    [
+     "/websockets/constructor/022.html",
+     {}
+    ],
+    [
+     "/websockets/constructor/022.html?wss",
+     {}
+    ]
+   ],
+   "websockets/cookies/001.html": [
+    [
+     "/websockets/cookies/001.html",
+     {}
+    ],
+    [
+     "/websockets/cookies/001.html?wss",
+     {}
+    ]
+   ],
+   "websockets/cookies/002.html": [
+    [
+     "/websockets/cookies/002.html",
+     {}
+    ],
+    [
+     "/websockets/cookies/002.html?wss",
+     {}
+    ]
+   ],
+   "websockets/cookies/003.html": [
+    [
+     "/websockets/cookies/003.html",
+     {}
+    ],
+    [
+     "/websockets/cookies/003.html?wss",
+     {}
+    ]
+   ],
+   "websockets/cookies/004.html": [
+    [
+     "/websockets/cookies/004.html",
+     {}
+    ],
+    [
+     "/websockets/cookies/004.html?wss",
+     {}
+    ]
+   ],
+   "websockets/cookies/005.html": [
+    [
+     "/websockets/cookies/005.html",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/websockets/cookies/005.html?wss",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "websockets/cookies/006.html": [
+    [
+     "/websockets/cookies/006.html",
+     {}
+    ],
+    [
+     "/websockets/cookies/006.html?wss",
+     {}
+    ]
+   ],
+   "websockets/cookies/007.html": [
+    [
+     "/websockets/cookies/007.html",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/websockets/cookies/007.html?wss",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "websockets/eventhandlers.html": [
+    [
+     "/websockets/eventhandlers.html",
+     {}
+    ]
+   ],
+   "websockets/extended-payload-length.html": [
+    [
+     "/websockets/extended-payload-length.html",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/websockets/extended-payload-length.html?wss",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "websockets/interfaces/CloseEvent/clean-close.html": [
+    [
+     "/websockets/interfaces/CloseEvent/clean-close.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/CloseEvent/clean-close.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/CloseEvent/constructor.html": [
+    [
+     "/websockets/interfaces/CloseEvent/constructor.html",
+     {}
+    ]
+   ],
+   "websockets/interfaces/CloseEvent/historical.html": [
+    [
+     "/websockets/interfaces/CloseEvent/historical.html",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer.html": [
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob.html": [
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-getter.html": [
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-getter.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-getter.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-setter.html": [
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-setter.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-setter.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-deleting.html": [
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-deleting.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-deleting.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-getting.html": [
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-getting.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-getting.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-initial.html": [
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-initial.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-initial.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-large.html": [
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-large.html",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-large.html?wss",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-readonly.html": [
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-readonly.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-readonly.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-unicode.html": [
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-unicode.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-unicode.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/close/close-basic.html": [
+    [
+     "/websockets/interfaces/WebSocket/close/close-basic.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/close/close-basic.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/close/close-connecting.html": [
+    [
+     "/websockets/interfaces/WebSocket/close/close-connecting.html",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/websockets/interfaces/WebSocket/close/close-connecting.html?wss",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "websockets/interfaces/WebSocket/close/close-multiple.html": [
+    [
+     "/websockets/interfaces/WebSocket/close/close-multiple.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/close/close-multiple.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/close/close-nested.html": [
+    [
+     "/websockets/interfaces/WebSocket/close/close-nested.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/close/close-nested.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/close/close-replace.html": [
+    [
+     "/websockets/interfaces/WebSocket/close/close-replace.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/close/close-replace.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/close/close-return.html": [
+    [
+     "/websockets/interfaces/WebSocket/close/close-return.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/close/close-return.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/constants/001.html": [
+    [
+     "/websockets/interfaces/WebSocket/constants/001.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/constants/001.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/constants/002.html": [
+    [
+     "/websockets/interfaces/WebSocket/constants/002.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/constants/002.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/constants/003.html": [
+    [
+     "/websockets/interfaces/WebSocket/constants/003.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/constants/003.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/constants/004.html": [
+    [
+     "/websockets/interfaces/WebSocket/constants/004.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/constants/004.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/constants/005.html": [
+    [
+     "/websockets/interfaces/WebSocket/constants/005.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/constants/005.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/constants/006.html": [
+    [
+     "/websockets/interfaces/WebSocket/constants/006.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/constants/006.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/001.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/001.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/001.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/002.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/002.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/002.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/003.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/003.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/003.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/004.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/004.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/004.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/006.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/006.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/006.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/007.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/007.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/007.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/008.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/008.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/008.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/009.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/009.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/009.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/010.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/010.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/010.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/011.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/011.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/011.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/012.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/012.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/012.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/013.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/013.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/013.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/014.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/014.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/014.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/015.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/015.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/015.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/016.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/016.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/016.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/017.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/017.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/017.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/018.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/018.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/018.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/019.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/019.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/019.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/events/020.html": [
+    [
+     "/websockets/interfaces/WebSocket/events/020.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/events/020.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/extensions/001.html": [
+    [
+     "/websockets/interfaces/WebSocket/extensions/001.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/extensions/001.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/protocol/protocol-initial.html": [
+    [
+     "/websockets/interfaces/WebSocket/protocol/protocol-initial.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/protocol/protocol-initial.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/readyState/001.html": [
+    [
+     "/websockets/interfaces/WebSocket/readyState/001.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/readyState/001.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/readyState/002.html": [
+    [
+     "/websockets/interfaces/WebSocket/readyState/002.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/readyState/002.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/readyState/003.html": [
+    [
+     "/websockets/interfaces/WebSocket/readyState/003.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/readyState/003.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/readyState/004.html": [
+    [
+     "/websockets/interfaces/WebSocket/readyState/004.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/readyState/004.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/readyState/005.html": [
+    [
+     "/websockets/interfaces/WebSocket/readyState/005.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/readyState/005.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/readyState/006.html": [
+    [
+     "/websockets/interfaces/WebSocket/readyState/006.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/readyState/006.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/readyState/007.html": [
+    [
+     "/websockets/interfaces/WebSocket/readyState/007.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/readyState/007.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/readyState/008.html": [
+    [
+     "/websockets/interfaces/WebSocket/readyState/008.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/readyState/008.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/send/001.html": [
+    [
+     "/websockets/interfaces/WebSocket/send/001.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/send/001.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/send/002.html": [
+    [
+     "/websockets/interfaces/WebSocket/send/002.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/send/002.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/send/003.html": [
+    [
+     "/websockets/interfaces/WebSocket/send/003.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/send/003.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/send/004.html": [
+    [
+     "/websockets/interfaces/WebSocket/send/004.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/send/004.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/send/005.html": [
+    [
+     "/websockets/interfaces/WebSocket/send/005.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/send/005.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/send/006.html": [
+    [
+     "/websockets/interfaces/WebSocket/send/006.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/send/006.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/send/007.html": [
+    [
+     "/websockets/interfaces/WebSocket/send/007.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/send/007.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/send/008.html": [
+    [
+     "/websockets/interfaces/WebSocket/send/008.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/send/008.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/send/009.html": [
+    [
+     "/websockets/interfaces/WebSocket/send/009.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/send/009.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/send/010.html": [
+    [
+     "/websockets/interfaces/WebSocket/send/010.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/send/010.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/send/011.html": [
+    [
+     "/websockets/interfaces/WebSocket/send/011.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/send/011.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/send/012.html": [
+    [
+     "/websockets/interfaces/WebSocket/send/012.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/send/012.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/url/001.html": [
+    [
+     "/websockets/interfaces/WebSocket/url/001.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/url/001.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/url/002.html": [
+    [
+     "/websockets/interfaces/WebSocket/url/002.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/url/002.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/url/003.html": [
+    [
+     "/websockets/interfaces/WebSocket/url/003.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/url/003.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/url/004.html": [
+    [
+     "/websockets/interfaces/WebSocket/url/004.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/url/004.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/url/005.html": [
+    [
+     "/websockets/interfaces/WebSocket/url/005.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/url/005.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/url/006.html": [
+    [
+     "/websockets/interfaces/WebSocket/url/006.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/url/006.html?wss",
+     {}
+    ]
+   ],
+   "websockets/interfaces/WebSocket/url/resolve.html": [
+    [
+     "/websockets/interfaces/WebSocket/url/resolve.html",
+     {}
+    ],
+    [
+     "/websockets/interfaces/WebSocket/url/resolve.html?wss",
+     {}
+    ]
+   ],
+   "websockets/keeping-connection-open/001.html": [
+    [
+     "/websockets/keeping-connection-open/001.html",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/websockets/keeping-connection-open/001.html?wss",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "websockets/multi-globals/message-received.html": [
+    [
+     "/websockets/multi-globals/message-received.html",
+     {}
+    ]
+   ],
+   "websockets/opening-handshake/001.html": [
+    [
+     "/websockets/opening-handshake/001.html",
+     {}
+    ],
+    [
+     "/websockets/opening-handshake/001.html?wss",
+     {}
+    ]
+   ],
+   "websockets/opening-handshake/002.html": [
+    [
+     "/websockets/opening-handshake/002.html",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/websockets/opening-handshake/002.html?wss",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "websockets/opening-handshake/003-sets-origin.worker.js": [
+    [
+     "/websockets/opening-handshake/003-sets-origin.worker.html",
+     {}
+    ]
+   ],
+   "websockets/opening-handshake/003.html": [
+    [
+     "/websockets/opening-handshake/003.html",
+     {}
+    ],
+    [
+     "/websockets/opening-handshake/003.html?wss",
+     {}
+    ]
+   ],
+   "websockets/opening-handshake/005.html": [
+    [
+     "/websockets/opening-handshake/005.html",
+     {}
+    ],
+    [
+     "/websockets/opening-handshake/005.html?wss",
+     {}
+    ]
+   ],
+   "websockets/security/001.html": [
+    [
+     "/websockets/security/001.html",
+     {}
+    ],
+    [
+     "/websockets/security/001.html?wss",
+     {}
+    ]
+   ],
+   "websockets/security/002.html": [
+    [
+     "/websockets/security/002.html",
+     {}
+    ],
+    [
+     "/websockets/security/002.html?wss",
+     {}
+    ]
+   ],
+   "websockets/unload-a-document/001.html": [
+    [
+     "/websockets/unload-a-document/001.html",
+     {}
+    ],
+    [
+     "/websockets/unload-a-document/001.html?wss",
+     {}
+    ]
+   ],
+   "websockets/unload-a-document/002.html": [
+    [
+     "/websockets/unload-a-document/002.html",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/websockets/unload-a-document/002.html?wss",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "websockets/unload-a-document/003.html": [
+    [
+     "/websockets/unload-a-document/003.html",
+     {}
+    ]
+   ],
+   "websockets/unload-a-document/004.html": [
+    [
+     "/websockets/unload-a-document/004.html",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
+   "websockets/unload-a-document/005.html": [
+    [
+     "/websockets/unload-a-document/005.html",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/websockets/unload-a-document/005.html?wss",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
    "webstorage/document-domain.html": [
     [
      "/webstorage/document-domain.html",
@@ -136694,7 +141434,7 @@
    "support"
   ],
   "./README.md": [
-   "a00890035c46ef53ab51d51107fde1891265379e",
+   "b6c3a023e07744e952e4b9348b586274cf6e3ad8",
    "support"
   ],
   "./check_stability.ini": [
@@ -136702,7 +141442,7 @@
    "support"
   ],
   "./check_stability.py": [
-   "bbd4279df950cb57bdde9aa96e2dabf4b801cb38",
+   "8c7aa3629d5440dd0c53c990310e964804fe7e8a",
    "support"
   ],
   "./ci_built_diff.sh": [
@@ -136722,7 +141462,7 @@
    "support"
   ],
   "./lint.whitelist": [
-   "f5ecb1ebc77ce598b8cc13568e9342afbf4c8307",
+   "eb36ee69795a6893e3f96a1d26470ea73213eca0",
    "support"
   ],
   "./update-built-tests.sh": [
@@ -136821,10 +141561,6 @@
    "93903b4f58bc215ea2a67fc6d281593ec5ce79e9",
    "testharness"
   ],
-  "FileAPI/idlharness-expected.txt": [
-   "3481a561989744ff3a461b1bc2f97bf22e9374f9",
-   "support"
-  ],
   "FileAPI/idlharness.html": [
    "80280c78fd64daf52b994e96418b989aa61f2fd4",
    "testharness"
@@ -138101,10 +142837,6 @@
    "251a828d333bdd3face9d20a2a28ddf0c0ffeb49",
    "testharness"
   ],
-  "IndexedDB/interfaces-expected.txt": [
-   "57b127e369a6185981ecc855befd6014cda28b7e",
-   "support"
-  ],
   "IndexedDB/interfaces.html": [
    "df929a719e8f3f8af4151b221c47f6f4c4f4039b",
    "testharness"
@@ -138326,7 +143058,7 @@
    "support"
   ],
   "WebCryptoAPI/derive_bits_keys/pbkdf2.js": [
-   "f881616857e5f523338f338ffcbded34f1c6b9e9",
+   "dfd8eea5707720186820549837c8a1a319a8ecc4",
    "support"
   ],
   "WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js": [
@@ -138337,28 +143069,96 @@
    "0a073cb726ad239110545eb3cecada2a0ce5daf7",
    "support"
   ],
-  "WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html": [
+  "WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https-expected.txt": [
+   "100a1b87707f2a09b37a9b181c3edbd25d09c54e",
+   "support"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https.html": [
    "eb82990143fa33de7b62cdacd2db566512d74d44",
    "testharness"
   ],
-  "WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html": [
+  "WebCryptoAPI/derive_bits_keys/test_ecdh_keys.https.html": [
    "d896626491b4f710970b28d30eb89604034fb8c4",
    "testharness"
   ],
-  "WebCryptoAPI/derive_bits_keys/test_hkdf-expected.txt": [
-   "7c3a931cce1bf247587a405a42372a5f651341c4",
+  "WebCryptoAPI/derive_bits_keys/test_hkdf.https-expected.txt": [
+   "edc28137c9a06c7d49779924f76f045a44b2b5c3",
    "support"
   ],
-  "WebCryptoAPI/derive_bits_keys/test_hkdf.html": [
+  "WebCryptoAPI/derive_bits_keys/test_hkdf.https.html": [
    "6d0def388fed4db1606d03f2cbfd59020bd00c56",
    "testharness"
   ],
-  "WebCryptoAPI/derive_bits_keys/test_pbkdf2-expected.txt": [
-   "77fe77f65f07596edb8f6a154246ab96f60dc94c",
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_empty.https-expected.txt": [
+   "b42b43febc9c18e2848733a4bd76297c5dcc4316",
    "support"
   ],
-  "WebCryptoAPI/derive_bits_keys/test_pbkdf2.html": [
-   "07703342a2b5b80585d541ec47d4633381fd785c",
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_empty.https.html": [
+   "48b0c6ac60cc130a5bc109fd43b5b1da74bad6da",
+   "testharness"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_long.https-expected.txt": [
+   "0262965e5a7c6d60eaadff2742a39e42f1c277e6",
+   "support"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_long.https.html": [
+   "9f28363c1c182c354d688a44249abe3f6c6e9ff5",
+   "testharness"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_short.https-expected.txt": [
+   "45a0466d751321961c29a0e9c7b7ca46024293da",
+   "support"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_empty_short.https.html": [
+   "2a6b28ee191cc62575872c19a21b402f668cd0d5",
+   "testharness"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https-expected.txt": [
+   "fa45cf10aaeea5c396e5ce8e29063111dd8c5345",
+   "support"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https.html": [
+   "e1d654a4ccefef12b57ef32388debf5df170e938",
+   "testharness"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_long.https-expected.txt": [
+   "666e2ac4d8152eda73cb3d1ec137a773402f8845",
+   "support"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_long.https.html": [
+   "2e3e354fe0b4b96d2429bd6e3b5b702a327d9e84",
+   "testharness"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_short.https-expected.txt": [
+   "aa0d1b76914045dcfef311297b7ddfc607cc6db6",
+   "support"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_short.https.html": [
+   "b53dd1eb6d350d6546e71e77d829eb3da4fc4c68",
+   "testharness"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https-expected.txt": [
+   "815034c959f90c5cb618b7410b15b253f99dec7f",
+   "support"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https.html": [
+   "d36de62c712d53d29aa8cc6995851493d814654f",
+   "testharness"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_long.https-expected.txt": [
+   "f322762354d71d0d256174d9019354eff9f4f4e1",
+   "support"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_long.https.html": [
+   "518afb29e8f859a793e0e39317c6516aae99fb67",
+   "testharness"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_short.https-expected.txt": [
+   "75a3f16670790cb668ec331998fdd49fb137eea4",
+   "support"
+  ],
+  "WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_short.https.html": [
+   "5e776aa3f202bb72a328947983b020f03ba6ec4d",
    "testharness"
   ],
   "WebCryptoAPI/digest/digest.js": [
@@ -138369,7 +143169,7 @@
    "a9a6b7a15bf0b795729190a94bdda6ed1ddc013d",
    "testharness"
   ],
-  "WebCryptoAPI/digest/test_digest.html": [
+  "WebCryptoAPI/digest/test_digest.https.html": [
    "1f5893b2c01a60e1e49b8ba5dee8f3d6507cc604",
    "testharness"
   ],
@@ -138413,19 +143213,31 @@
    "e833d10f83ac5cff26e076371a545d60a8d37b8f",
    "support"
   ],
-  "WebCryptoAPI/encrypt_decrypt/test_aes_cbc.html": [
+  "WebCryptoAPI/encrypt_decrypt/test_aes_cbc.https-expected.txt": [
+   "76aafbc704366d08a1b335007b0a4e07df5b1920",
+   "support"
+  ],
+  "WebCryptoAPI/encrypt_decrypt/test_aes_cbc.https.html": [
    "f79d96aaa96347302cf08c641c5064b9dc2e974c",
    "testharness"
   ],
-  "WebCryptoAPI/encrypt_decrypt/test_aes_ctr.html": [
+  "WebCryptoAPI/encrypt_decrypt/test_aes_ctr.https-expected.txt": [
+   "316ccb51d5f6539c0d2c0ac85a43820eb6bfacfc",
+   "support"
+  ],
+  "WebCryptoAPI/encrypt_decrypt/test_aes_ctr.https.html": [
    "a3d4d1e4ea38587d170f583061d58ce02224d81e",
    "testharness"
   ],
-  "WebCryptoAPI/encrypt_decrypt/test_aes_gcm.html": [
+  "WebCryptoAPI/encrypt_decrypt/test_aes_gcm.https-expected.txt": [
+   "915c20a778d96ed0850ebbac75f5f4ca7ed8a689",
+   "support"
+  ],
+  "WebCryptoAPI/encrypt_decrypt/test_aes_gcm.https.html": [
    "f545fb559442624770696da2addb489cb5534530",
    "testharness"
   ],
-  "WebCryptoAPI/encrypt_decrypt/test_rsa_oaep.html": [
+  "WebCryptoAPI/encrypt_decrypt/test_rsa_oaep.https.html": [
    "4905875dd185403d093361afb8e75bef50ce0c34",
    "testharness"
   ],
@@ -138478,7 +143290,7 @@
    "testharness"
   ],
   "WebCryptoAPI/generateKey/successes.js": [
-   "a048156c0d724a735093a6f1209c8fed8281ffd1",
+   "9623250b44a270bd23f6d892e8a8296351fac708",
    "support"
   ],
   "WebCryptoAPI/generateKey/successes.worker.js": [
@@ -138525,99 +143337,139 @@
    "b9e9790245742b8eeb4af7679cc0144710380c07",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_aes-cbc.html": [
+  "WebCryptoAPI/generateKey/test_aes-cbc.https-expected.txt": [
+   "da492efdf628d9478810bfbc7e09bbbb31f9e218",
+   "support"
+  ],
+  "WebCryptoAPI/generateKey/test_aes-cbc.https.html": [
    "9c92564d0b64784bded21d3c337da125da1c0225",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_aes-ctr.html": [
+  "WebCryptoAPI/generateKey/test_aes-ctr.https-expected.txt": [
+   "c1001239ecb567665c702bfae0da2e11a356cf34",
+   "support"
+  ],
+  "WebCryptoAPI/generateKey/test_aes-ctr.https.html": [
    "3804433a5bd2c382c8bd9afbd1b41792d9f927c1",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_failures.html": [
+  "WebCryptoAPI/generateKey/test_failures.https-expected.txt": [
+   "99d43635e3d26100877db3f4c50d9326a6d2c4f5",
+   "support"
+  ],
+  "WebCryptoAPI/generateKey/test_failures.https.html": [
    "a1458bc27b594b9051bfbb7e537aebe2c95b6859",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_failures_AES-CBC.html": [
+  "WebCryptoAPI/generateKey/test_failures_AES-CBC.https-expected.txt": [
+   "392935784a5ea47edc59f5699e8fe03ed9417c53",
+   "support"
+  ],
+  "WebCryptoAPI/generateKey/test_failures_AES-CBC.https.html": [
    "bf4b12efa09c2602bed73b4ae2b94ebdf5bf9749",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_failures_AES-CTR.html": [
+  "WebCryptoAPI/generateKey/test_failures_AES-CTR.https-expected.txt": [
+   "d73ad12a0a977c6b71caa7f50d5fd76746da6724",
+   "support"
+  ],
+  "WebCryptoAPI/generateKey/test_failures_AES-CTR.https.html": [
    "2d33a87c30f30d76e547cb6e4b9637292c2e7b6e",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_failures_AES-GCM.html": [
+  "WebCryptoAPI/generateKey/test_failures_AES-GCM.https-expected.txt": [
+   "396f431edcefd6dd3858f656977cdfd0568be544",
+   "support"
+  ],
+  "WebCryptoAPI/generateKey/test_failures_AES-GCM.https.html": [
    "aaeb0182a48f680fd7f421a8ba7efa29561ad7fb",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_failures_AES-KW.html": [
+  "WebCryptoAPI/generateKey/test_failures_AES-KW.https-expected.txt": [
+   "cb599c3d2e1cb8ecaeaf3ab1a631e597adf128c3",
+   "support"
+  ],
+  "WebCryptoAPI/generateKey/test_failures_AES-KW.https.html": [
    "4dc9d4cff709a8a84569f6fc6eb2225a59fe8db4",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_failures_ECDH.html": [
+  "WebCryptoAPI/generateKey/test_failures_ECDH.https.html": [
    "6eca49b0a06e1c468c28dffab3435cf14972095c",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_failures_ECDSA.html": [
+  "WebCryptoAPI/generateKey/test_failures_ECDSA.https.html": [
    "decb88cd07b2ef2f2c07d1a1fd8e7dfc46e22350",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_failures_HMAC.html": [
+  "WebCryptoAPI/generateKey/test_failures_HMAC.https.html": [
    "ffd768d80a38ae9e9ae029c3372a227681b020dd",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html": [
+  "WebCryptoAPI/generateKey/test_failures_RSA-OAEP.https.html": [
    "ea5fab99e5fdc1b4232aa4c9eed96657f64b1e67",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_failures_RSA-PSS.html": [
+  "WebCryptoAPI/generateKey/test_failures_RSA-PSS.https.html": [
    "1e03b7b789b75bb25e3491fe8bcfc198dd53b46d",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html": [
+  "WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.https.html": [
    "749e526a3f67c246a328a99abd4c1da728571413",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_successes.html": [
-   "6dd8fd836361a4c02c602149fbde996d0131607a",
-   "testharness"
+  "WebCryptoAPI/generateKey/test_successes_AES-CBC.https-expected.txt": [
+   "da492efdf628d9478810bfbc7e09bbbb31f9e218",
+   "support"
   ],
-  "WebCryptoAPI/generateKey/test_successes_AES-CBC.html": [
+  "WebCryptoAPI/generateKey/test_successes_AES-CBC.https.html": [
    "e8ee3bdfb8aef171d6db35cc69a482f1a992d089",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_successes_AES-CTR.html": [
+  "WebCryptoAPI/generateKey/test_successes_AES-CTR.https-expected.txt": [
+   "c1001239ecb567665c702bfae0da2e11a356cf34",
+   "support"
+  ],
+  "WebCryptoAPI/generateKey/test_successes_AES-CTR.https.html": [
    "07f55a63a2327ee8804548ba5e802fcdba09010e",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_successes_AES-GCM.html": [
+  "WebCryptoAPI/generateKey/test_successes_AES-GCM.https-expected.txt": [
+   "25be4f6625f0fa8d8cb456b407ccbfc82c42bf90",
+   "support"
+  ],
+  "WebCryptoAPI/generateKey/test_successes_AES-GCM.https.html": [
    "ebec06754972d621026a4284c316c882be362dc3",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_successes_AES-KW.html": [
+  "WebCryptoAPI/generateKey/test_successes_AES-KW.https-expected.txt": [
+   "2d9dced7a71cb12dedfee33cce272d4b5e561d00",
+   "support"
+  ],
+  "WebCryptoAPI/generateKey/test_successes_AES-KW.https.html": [
    "e76258a60418fb1467d16a17b4e01da1d99bd036",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_successes_ECDH.html": [
+  "WebCryptoAPI/generateKey/test_successes_ECDH.https.html": [
    "b2b7d0a233473a51e67a760638abf1f532d1232b",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_successes_ECDSA.html": [
+  "WebCryptoAPI/generateKey/test_successes_ECDSA.https.html": [
    "c21190c7c74eb856a9fce3a4913723b46fa1887a",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_successes_HMAC.html": [
+  "WebCryptoAPI/generateKey/test_successes_HMAC.https.html": [
    "ccfe6cefe42764a46dd817046b026034be033e97",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html": [
-   "7ebe1df33a5df5f5a2cead014af5502246b6b833",
+  "WebCryptoAPI/generateKey/test_successes_RSA-OAEP.https.html": [
+   "04b89d631e81fd7822049c8513984c3af3711efd",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_successes_RSA-PSS.html": [
+  "WebCryptoAPI/generateKey/test_successes_RSA-PSS.https.html": [
    "623370ae56918c14ac14f40fb057327b0844be04",
    "testharness"
   ],
-  "WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html": [
+  "WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.https.html": [
    "ad5db5278bef55d9ae2336961c226199a4c94446",
    "testharness"
   ],
@@ -138633,6 +143485,14 @@
    "52b5381311cc0e2595d251273e054fa826de9765",
    "testharness"
   ],
+  "WebCryptoAPI/idlharness.https-expected.txt": [
+   "368ac7b721dc832d0c21925f95b4a0501d6963b7",
+   "support"
+  ],
+  "WebCryptoAPI/idlharness.https.html": [
+   "52b5381311cc0e2595d251273e054fa826de9765",
+   "testharness"
+  ],
   "WebCryptoAPI/idlharness.worker.js": [
    "e3478f4259364d773dab9ca5e0c7194a0b78d5b3",
    "testharness"
@@ -138661,18 +143521,30 @@
    "e9d9758d0478ecdf93a5fda9f196501e992de614",
    "testharness"
   ],
-  "WebCryptoAPI/import_export/test_ec_importKey.html": [
+  "WebCryptoAPI/import_export/test_ec_importKey.https.html": [
    "2c173849dd35c551b71983fb8efc20f650599da2",
    "testharness"
   ],
-  "WebCryptoAPI/import_export/test_rsa_importKey.html": [
+  "WebCryptoAPI/import_export/test_rsa_importKey.https.html": [
    "d12cf20829eace56868a7b40d38e75aca89932a6",
    "testharness"
   ],
-  "WebCryptoAPI/import_export/test_symmetric_importKey.html": [
+  "WebCryptoAPI/import_export/test_symmetric_importKey.https-expected.txt": [
+   "970c6567ab8edb203428f5e26a7a36e0556fb650",
+   "support"
+  ],
+  "WebCryptoAPI/import_export/test_symmetric_importKey.https.html": [
    "a69847f41e437363676a4ced439faba50ce85e5d",
    "testharness"
   ],
+  "WebCryptoAPI/secure_context/crypto-subtle-non-secure-context-not-available.sub.html": [
+   "e219b5ee2c878779562aded462bfcaa7ad81b63d",
+   "testharness"
+  ],
+  "WebCryptoAPI/secure_context/crypto-subtle-secure-context-available.https.sub.html": [
+   "4df3813485b7277571d61ce38a5811729f91ddbe",
+   "testharness"
+  ],
   "WebCryptoAPI/sign_verify/ecdsa.js": [
    "55c99894ea3ba9186de1082c189f37f77dfe12e1",
    "support"
@@ -138717,27 +143589,35 @@
    "766e1f95031b3f9f3dd5d0e3de8c70f5fdf5ac30",
    "support"
   ],
-  "WebCryptoAPI/sign_verify/test_ecdsa.html": [
+  "WebCryptoAPI/sign_verify/test_ecdsa.https.html": [
    "969eb4e062dfb91e40be42d4980f0d0e464d5b34",
    "testharness"
   ],
-  "WebCryptoAPI/sign_verify/test_hmac.html": [
+  "WebCryptoAPI/sign_verify/test_hmac.https.html": [
    "cd105449c7b9b75aa91ee0848fdca5bda78a1aae",
    "testharness"
   ],
-  "WebCryptoAPI/sign_verify/test_rsa_pkcs.html": [
+  "WebCryptoAPI/sign_verify/test_rsa_pkcs.https.html": [
    "d7840d0a6d848510bf547d64c8b197761f39e05e",
    "testharness"
   ],
-  "WebCryptoAPI/sign_verify/test_rsa_pss.html": [
+  "WebCryptoAPI/sign_verify/test_rsa_pss.https.html": [
    "408e1a081caa23f7e717128e94eb5cfeae9bac30",
    "testharness"
   ],
   "WebCryptoAPI/util/helpers.js": [
-   "6bf895ea91bfc92cb346f96af777bc9b8a0af0ee",
+   "76bfa10171fb405f321d015b4394a2a929d587dd",
    "support"
   ],
-  "WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html": [
+  "WebCryptoAPI/util/worker-report-crypto-subtle-presence.js": [
+   "4aacae51744fa0284ebc89c43084c4dae873e5c1",
+   "support"
+  ],
+  "WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.https-expected.txt": [
+   "fc77e7c8d71ecfe49cc5a54a83fc746a100b59f9",
+   "support"
+  ],
+  "WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.https.html": [
    "2f0070bafc5079f3b70dd8da567fde0ea6bfb113",
    "testharness"
   ],
@@ -138794,17 +143674,25 @@
    "testharness"
   ],
   "WebIDL/ecmascript-binding/has-instance.html": [
-   "4266bf65ad4dd3dd2acaf7b8e0d18e8999f8252b",
+   "8df0ec18a02041106df53ccc3168261d29ab7943",
    "testharness"
   ],
   "WebIDL/ecmascript-binding/interface-object.html": [
    "f68be23702792cb5236e608bf6e8421a9a851fb8",
    "testharness"
   ],
+  "WebIDL/ecmascript-binding/interface-prototype-object-expected.txt": [
+   "f9611911af3554b8ecb907aaddc29cbd1da20ed1",
+   "support"
+  ],
   "WebIDL/ecmascript-binding/interface-prototype-object.html": [
    "13d2a9dbbd0d78e240c2b88d548f88ba41184e5f",
    "testharness"
   ],
+  "WebIDL/ecmascript-binding/legacy-callback-interface-object.html": [
+   "4eac8c853a0627577d2bd96ed76c45bd187a5734",
+   "testharness"
+  ],
   "XMLHttpRequest/FormData-append.html": [
    "b41637b9f13c7876b581f0fb0162baea758d50e2",
    "testharness"
@@ -138986,7 +143874,7 @@
    "testharness"
   ],
   "XMLHttpRequest/formdata-foreach.html": [
-   "0de3e65e068a59180ba03c67ce70e4db8f0bbd87",
+   "ac4bcf3c043dec99e2feeaeff828ead2db1e9606",
    "testharness"
   ],
   "XMLHttpRequest/formdata-get.htm": [
@@ -139069,10 +143957,6 @@
    "1cb82348a9d6f3be34da762267cce7389f715f7c",
    "testharness"
   ],
-  "XMLHttpRequest/interfaces-expected.txt": [
-   "9af0abfb9789a9b77b7f8315507fdcaea17d57fe",
-   "support"
-  ],
   "XMLHttpRequest/interfaces.html": [
    "a4c597d2bdb85e37ffe5f5ebba961d7f8a3aeb29",
    "testharness"
@@ -140121,6 +145005,18 @@
    "b960bef807da94c0146ed2f537eaa1e05ec9a0ab",
    "testharness"
   ],
+  "accelerometer/Accelerometer.https.html": [
+   "cb802e1f9df53ef6e8e3a34daf54f9e02b019383",
+   "testharness"
+  ],
+  "accelerometer/Accelerometer_insecure_context.html": [
+   "62c0fdfe1ee0752956b4c68e877cd7f47ac887a1",
+   "testharness"
+  ],
+  "accelerometer/Accelerometer_onerror-manual.https.html": [
+   "e03faad7d297ce2c5d6fefa66a2397c3d9a32e2d",
+   "manual"
+  ],
   "accelerometer/idlharness.https-expected.txt": [
    "adc83b19e793491b1c6ea0fd8b46cd9f32e592fc",
    "support"
@@ -140129,6 +145025,10 @@
    "eedb225d9e8a05d528e62cc2d689dbfe36858052",
    "testharness"
   ],
+  "accelerometer/support-iframe.html": [
+   "5782b270802060f88a1842c2393fb7d18c8c75a8",
+   "support"
+  ],
   "apng/animated-png-timeout-ref.html": [
    "dcd3c58b9200109868f2b98bda346bf26f823e07",
    "support"
@@ -140174,11 +145074,11 @@
    "reftest"
   ],
   "background-fetch/interfaces-expected.txt": [
-   "2aaf5d1bd0464e1419d1228e51b0e9d9870852c2",
+   "19fa33f3051ab724d8d6bf3439feb459cfaec9ec",
    "support"
   ],
   "background-fetch/interfaces-worker.https-expected.txt": [
-   "d7146d68bb32f56107616c7687e4755f49bdbd43",
+   "d5017ead5f32888979f3cf44ed1181c70b6b3158",
    "support"
   ],
   "background-fetch/interfaces-worker.https.html": [
@@ -140197,6 +145097,54 @@
    "0c959d5fa41c3db70c326b83e064b8261a6f90b4",
    "testharness"
   ],
+  "battery-status/battery-charging-manual.html": [
+   "8ebb3c62fc6b678f5b0583cf0c699ff732ce5aa4",
+   "manual"
+  ],
+  "battery-status/battery-discharging-manual.html": [
+   "9704395bc6026b24d8ae4e5bfdb6edd04ef79b6b",
+   "manual"
+  ],
+  "battery-status/battery-full-manual.html": [
+   "7f3860749feb26bb9cb87286cb6f66b62aa64737",
+   "manual"
+  ],
+  "battery-status/battery-interface-idlharness.html": [
+   "c8f459ca2f9bd88d46484d8471dd3427c0e46394",
+   "testharness"
+  ],
+  "battery-status/battery-plugging-in-manual.html": [
+   "6dd6b6e88db39056da714690941a704bea29100f",
+   "manual"
+  ],
+  "battery-status/battery-promise-iframe.html": [
+   "43fc622c8b5eec5c9e78a0b640a73e2a16ad3dc2",
+   "testharness"
+  ],
+  "battery-status/battery-promise-window.html": [
+   "4407bd4501d8a32849bb8725ef24bf78e06e9c53",
+   "testharness"
+  ],
+  "battery-status/battery-promise.html": [
+   "197e72bf5cbad7e3b4bacd63c57db3dbabb525e0",
+   "testharness"
+  ],
+  "battery-status/battery-unplugging-manual.html": [
+   "a9293caf021d95d94cc7a5d3828b9221dd9dbfd1",
+   "manual"
+  ],
+  "battery-status/support-iframe-initial.html": [
+   "3c203529afca2f6b2a075eb8a42bf2206e4f16af",
+   "support"
+  ],
+  "battery-status/support-iframe.html": [
+   "3c203529afca2f6b2a075eb8a42bf2206e4f16af",
+   "support"
+  ],
+  "battery-status/support-window-open.html": [
+   "61b61d09a21daee964e0ebd26f7bdfdd1964c8ae",
+   "support"
+  ],
   "beacon/headers/header-referrer-no-referrer-when-downgrade.https-expected.txt": [
    "d7120d5fd0d4f1a0503339bb4a86345a64fd3cbb",
    "support"
@@ -140257,6 +145205,10 @@
    "e70503e7fb71617b9be631d5f2a9e73cacd83e3f",
    "support"
   ],
+  "bluetooth/OWNERS": [
+   "eac8b7eeda90e280724435cec01f545f04311746",
+   "support"
+  ],
   "bluetooth/idl-Bluetooth.html": [
    "5d4d8278b1f24798765974c35777f70fcbfc9cfa",
    "testharness"
@@ -140341,6 +145293,14 @@
    "a575b8135e6ddb1501fc2a082d7544ee86011b7d",
    "support"
   ],
+  "common/object-association.js": [
+   "c6955b7bbf00d73ec5959678391aa59d36da8321",
+   "support"
+  ],
+  "common/performance-timeline-utils.js": [
+   "0616ad8871126af7a74ff6937f3f7c623adcbd3e",
+   "support"
+  ],
   "common/redirect-opt-in.py": [
    "70caa012fa7b91e20b7a08e3708097d1c1da44a3",
    "support"
@@ -142969,12 +147929,132 @@
    "ff4d7ca289ea20fa00bca535fdcf929876a2278b",
    "testharness"
   ],
+  "cors/304.htm": [
+   "644c902be2861bed6dfa48ed12a12b08c6d9a2f5",
+   "testharness"
+  ],
+  "cors/README.md": [
+   "acf95ba2292a36d28bbe9aa857428b2d1741ad33",
+   "support"
+  ],
+  "cors/allow-headers.htm": [
+   "e28cf5812e58e490ec28bb407c4575f3d33687dc",
+   "testharness"
+  ],
+  "cors/basic.htm": [
+   "a3589dffef076a17cc33610ad49fae71485886c4",
+   "testharness"
+  ],
+  "cors/credentials-flag.htm": [
+   "0c2e70a707db7426e86726fc8e9cf86159606227",
+   "testharness"
+  ],
+  "cors/late-upload-events.htm": [
+   "fd228ae2b8c82e4ec4a13659c95f9e42f8030b50",
+   "testharness"
+  ],
+  "cors/origin.htm": [
+   "4fd804db576f22f4afc4ebc9f339341969322dbb",
+   "testharness"
+  ],
+  "cors/preflight-cache.htm": [
+   "9bbc0c447ed2837d6fe7743e8f4af0f022c59394",
+   "testharness"
+  ],
+  "cors/preflight-failure.htm": [
+   "73662dfcfabf5301b326e3c08d940825f032b644",
+   "testharness"
+  ],
+  "cors/redirect-origin.htm": [
+   "f95119805ab3693a444eb0b150e74173974e8e49",
+   "testharness"
+  ],
+  "cors/redirect-preflight-2.htm": [
+   "06a24558c5122208b55264005a73f8678da372c2",
+   "testharness"
+  ],
+  "cors/redirect-preflight.htm": [
+   "4ff2bbe8191e46bb1423731dade459e83cd0f516",
+   "testharness"
+  ],
+  "cors/redirect-userinfo.htm": [
+   "a6d6e48a8f2a8c164c635cdff2a0f1fe4da490e3",
+   "testharness"
+  ],
+  "cors/remote-origin.htm": [
+   "de77f7b61c505bcdad5ebfa33cfaee9db7088e1a",
+   "testharness"
+  ],
+  "cors/request-headers.htm": [
+   "56de3a6d1f3e96750f35cc2cacbdbb9b13e32f3f",
+   "testharness"
+  ],
+  "cors/resources/.gitignore": [
+   "cd808bdba86046b88e876b9fa9e1549b27a110db",
+   "support"
+  ],
+  "cors/resources/304.py": [
+   "b3270117326add2e3709b1bf790747cf3a83a218",
+   "support"
+  ],
+  "cors/resources/checkandremove.py": [
+   "d891a6e489124e4ef7f82faa51a5e2a7221925f9",
+   "support"
+  ],
+  "cors/resources/cors-cookie.py": [
+   "ab7074e4617a011d87d65043c71d01e96461a10b",
+   "support"
+  ],
+  "cors/resources/cors-headers.asis": [
+   "758f91ae0ce63c2f3f273a3588bea290d208e0d2",
+   "support"
+  ],
+  "cors/resources/cors-makeheader.py": [
+   "153ae440de7512da3001507010b5ef7bbbfb391e",
+   "support"
+  ],
+  "cors/resources/preflight.py": [
+   "d57c82ffc41dd9d78ea69df75dc11aa6a626f660",
+   "support"
+  ],
+  "cors/resources/remote-xhrer.html": [
+   "c942d5cf7950ebd9b968654a06d3a616f80ce9c2",
+   "support"
+  ],
+  "cors/resources/status.py": [
+   "736fa785c02e296acfbe37a61e191f61ebea3355",
+   "support"
+  ],
+  "cors/response-headers.htm": [
+   "e26f213e67940865d3d535f9fa173c999dbef31e",
+   "testharness"
+  ],
+  "cors/simple-requests.htm": [
+   "73671cf4dd3474c70b065a7f34e706677c6abb62",
+   "testharness"
+  ],
+  "cors/status-async.htm": [
+   "85670a399a068dbbd1f560c15d278cefce5f245b",
+   "testharness"
+  ],
+  "cors/status-preflight.htm": [
+   "dbb3d1c71c732c0f575a50d4f20e4f27ee815f16",
+   "testharness"
+  ],
+  "cors/status.htm": [
+   "1dd55535f1759d4ec23b9bb3652e7b56f0f82234",
+   "testharness"
+  ],
+  "cors/support.js": [
+   "8307ed240a531033c96da89197dcfb5ea25cde87",
+   "support"
+  ],
   "credential-management/idl.https-expected.txt": [
-   "fec68f08d6274aa393955df186bac40c4c937e8c",
+   "5e188755a9ce94c09b22bd1dbb1a0fcbe8a1b343",
    "support"
   ],
   "credential-management/idl.https.html": [
-   "bb80379aab6b421bcf86e0f8f0538e3228fb1095",
+   "c9664273f5786aae604f86c136197e0ee5270a71",
    "testharness"
   ],
   "css-font-loading/fontfacesetloadevent-constructor.html": [
@@ -156693,40 +161773,320 @@
    "f7a5738de1e8c4231afad100668cf18ba46a7b51",
    "support"
   ],
+  "css/css-grid-1/abspos/positioned-grid-items-001-ref.html": [
+   "1673c68d597b136ecd71aff6bc1bf0c336e79f03",
+   "support"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-001.html": [
+   "8258e9e56a3bd60c6538e393efb2d7dc922d8b4f",
+   "reftest"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-002.html": [
+   "448ff634fb002b8485575f01fc0f85ebc819542b",
+   "reftest"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-003.html": [
+   "7fc0c1d474e6989d169eebe69c90766f8d179bcc",
+   "reftest"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-004.html": [
+   "2bffd5ea91a62f5a92db467b07e41064b17f9713",
+   "reftest"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-005-ref.html": [
+   "b122fea36fae79fb18b33f5a664525eeb469c871",
+   "support"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-005.html": [
+   "b1c596e2b27b6e4da03d6dbc6e6e96e606d1c8ff",
+   "reftest"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-006-ref.html": [
+   "84fb3dbbac71e99420765d9a6eb1c9a5a599da9e",
+   "support"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-006.html": [
+   "73ad585a34948226e899e3e606b107fc969a0df0",
+   "reftest"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-007-ref.html": [
+   "c5ee44cd49c989d1e9b378d5c89776cd5192e476",
+   "support"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-007.html": [
+   "64efed1425fcb5f299fcad039c463c8c6583d376",
+   "reftest"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-008-ref.html": [
+   "8ba65302792a66eb2a2c470986763a468f8dfc1d",
+   "support"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-008.html": [
+   "fdb285c399994d50597adaeea1ac07b256b76bb7",
+   "reftest"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-009-ref.html": [
+   "e2b497cf7fafae8e7966e4b6ab00182b35905bd4",
+   "support"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-009.html": [
+   "d287eb287ba56f558c57bcce6da3382af74e6926",
+   "reftest"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-010.html": [
+   "6c4567902d785409ed21da7fecd21fd29399d34f",
+   "reftest"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-011-ref.html": [
+   "afd109a769fe804bccc3a21e25bdce324f98930d",
+   "support"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-011.html": [
+   "9595bee339cc454fdbb21640d20ae218002f4505",
+   "reftest"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-012-ref.html": [
+   "ce38108aa80906852bbbf8ef5ccc99045abbb42e",
+   "support"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-012.html": [
+   "5ca03ba877372b7da1b7293b76c82b829d397da0",
+   "reftest"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-013-ref.html": [
+   "2f6a961e31e34c7e9867b974d088653f77acbb32",
+   "support"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-013.html": [
+   "c616a111b38b34db007cc30d6e7bc04d64f8e5da",
+   "reftest"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-014-ref.html": [
+   "32e82acc03d527f9e158bcee1db77ee56c7801d2",
+   "support"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-014.html": [
+   "c6a339a995574c7de3ca66ca36a216cf31cd3193",
+   "reftest"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-015-ref.html": [
+   "40c5d9f8714ae92931e2de319c05fa530a548f2a",
+   "support"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-015.html": [
+   "3157b439f61a09b52d2d2eb37af627aa751a78ba",
+   "reftest"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-016-ref.html": [
+   "31376a55b028760a681ba1ce35756c1510629134",
+   "support"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-016.html": [
+   "91ccbd61eb0bd75e218fce3852cf8ade998f4d44",
+   "reftest"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-017-ref.html": [
+   "b3df58b256846bc883c52128b76169b7f13755eb",
+   "support"
+  ],
+  "css/css-grid-1/abspos/positioned-grid-items-017.html": [
+   "6e0f7a2262ec3476d8cf32ea562fe0f67ad5a7f1",
+   "reftest"
+  ],
   "css/css-grid-1/alignment/grid-content-distribution-001.html": [
-   "20d2c3cddd2051401966ffcf707ef1910f37a77d",
+   "71d678f48849879663d199ec57a5f19fb5e026b3",
    "reftest"
   ],
   "css/css-grid-1/alignment/grid-content-distribution-002.html": [
-   "6175f1a4fffe61b4a968351ecf2d807131be5c6f",
+   "a20d044edc50199306349700b03522225841fc72",
    "reftest"
   ],
   "css/css-grid-1/alignment/grid-content-distribution-003.html": [
-   "34021e8425010e83d16d6192ca67ca64d91d4ee6",
+   "4ef0c09a8c51e4fd2979887fe7420a62eb783027",
    "reftest"
   ],
   "css/css-grid-1/alignment/grid-content-distribution-004.html": [
-   "9b7d162b20ccc39827e207f2ade978acad72c936",
+   "f1f2f65fad70478230f2456cbdf68ead9c6de7f6",
    "reftest"
   ],
   "css/css-grid-1/alignment/grid-content-distribution-005.html": [
    "cf1c4546b569bea0bea062736ccea0e9e4f934ac",
    "reftest"
   ],
+  "css/css-grid-1/alignment/grid-content-distribution-006.html": [
+   "f0f17f458563b57a39ff7b684996edfede82e510",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-007.html": [
+   "08db6086c6a30888fee6881d6646d42c509d218b",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-008.html": [
+   "66d112eae6876a44c2246312719c2e6a3b93a5eb",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-009.html": [
+   "a27003f50acf7ff550d99b14a4a4435f80e791c0",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-010.html": [
+   "1f59c3d1af79df13007d0ba29132917a6e075e54",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-011.html": [
+   "edaf37eff5ed1db1709729e669aee460457de3ec",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-012.html": [
+   "6ba269671145f1f8d5a32f6a1efe5927a695f693",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-013.html": [
+   "a2036358ed56a79580d675cccd820e40b82bb3d0",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-014.html": [
+   "9e20812f1655d4bbbde261694deee0c1d09ff214",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-015.html": [
+   "d49d3b8b7a92a7cae108d7baa9d40b95699149aa",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-016.html": [
+   "9ac8ed870190e63aa9e248cf41c81c41b4816442",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-017.html": [
+   "7295162365f4929cf68ebad634be1d3bd6f7227a",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-018.html": [
+   "872fdebe89d9ddad40efbd19c5b429675a8fc1ce",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-019.html": [
+   "5e97218c93c95bd57edd96219a520a894184b2b6",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-020.html": [
+   "228cd6b2312f64f7ae7bb1421fb6b8c5e6bb4c22",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-021.html": [
+   "a626f563a51ef70a0a6221dd397c4ea9dce74f2c",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-022.html": [
+   "0699d18ff695b8920588304e9685f843fa006b4f",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-023.html": [
+   "788e76b9f562e1a2af800b8939d8cd6dccdaf991",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-024.html": [
+   "d0f957e475c3c0934a3d84e64ea6552e47cfac7a",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-025.html": [
+   "136e1a1999f3696a5742cb53a0d30e6411cfa6f4",
+   "reftest"
+  ],
   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-001.html": [
-   "88b01b5a68672c2cc6fbb44a32e98dfcd451a0c0",
+   "0681924a44ddc7c141a8c20203289c0862e7ec7c",
    "reftest"
   ],
   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-002.html": [
-   "152f9f4aa0579aded139f86cca9de26ac00b62e9",
+   "e7771a519139a375f641125ea2a0a90102d228c7",
    "reftest"
   ],
   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-003.html": [
-   "32e2645b47b613941b00270027c9ada5844563ff",
+   "7ff3085ec34b3fe9664ef0a9e02ebe862c42c22f",
    "reftest"
   ],
   "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-004.html": [
-   "d3a50f9c1cf717df90a9c8184b5c2a414a61b3c4",
+   "c474e6c83ca32385734a035fd36ef41e2e666f24",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-005.html": [
+   "c5a5d80b273add95223306d99471d3a030fb8be6",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-006.html": [
+   "55d9f476640c87eb1663114599ddb6eafd91b7f0",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-007.html": [
+   "d81f70fda4665e94cd32483127e069dec9b760cc",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-008.html": [
+   "d4f0fde36ff5b437ebda34698d199cce359f00fa",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-009.html": [
+   "5a50c58f6b9ba8b4b51b020b93ee61d23bfb500f",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-010.html": [
+   "fa5cc94c766ac0d455326bb117ae530df0ce6d4d",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-011.html": [
+   "3f02b75738ac80f1875a3adc0ce07052841c6be4",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-012.html": [
+   "97dac1879d441e29c97743e9e63bb44f6a413f67",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-013.html": [
+   "99832804da447b3cc35db8bb60492781a03ffb62",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-014.html": [
+   "2cc1f4a715b939a882d7394cb0d49d5ba4b127c7",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-015.html": [
+   "8b1947a434ec968a5bd0170334e7e2c907e69f28",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-016.html": [
+   "998612427cda18f277c5edf484892fd3b313bffc",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-017.html": [
+   "080c87419291575847c9e94eadf5096f4a438bb3",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-018.html": [
+   "aec32266b3e66fb38f45888140bf773d537728c9",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-019.html": [
+   "6891c290c82adce07bb2409732789b627f07ded0",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-020.html": [
+   "0ea2837b789ce2289aa2ec1c514006899d13def7",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-021.html": [
+   "0e2a972619d21b4de097ddca6f39f2cae486cc5c",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-022.html": [
+   "fb73bdbdff8fda79519e4fe387127ca539506357",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-023.html": [
+   "c8b2681075b476b15221bcb1fe1ea6a4e0c40409",
+   "reftest"
+  ],
+  "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-024.html": [
+   "6446e5dede7383a43ac46b8083b6012b312a8124",
    "reftest"
   ],
   "css/css-grid-1/grid-definition/fr-unit-with-percentage.html": [
@@ -171861,8 +177221,12 @@
    "88d834aadcd7b547720992a2894b9ab3251e3e04",
    "support"
   ],
+  "css/geometry-1/DOMMatrix-001-expected.txt": [
+   "ac33c3d83430e843341d2745b93cc834af0ed71d",
+   "support"
+  ],
   "css/geometry-1/DOMMatrix-001.html": [
-   "44c5a08d5e04aa37d4085c0166c449861b6eb313",
+   "67d37a8b37720e8a43e8c96a5d27bf07e87d7562",
    "testharness"
   ],
   "css/geometry-1/DOMMatrix-002.html": [
@@ -171873,6 +177237,14 @@
    "546e1556be89eddb7d24adc97bb1024f686d7df6",
    "testharness"
   ],
+  "css/geometry-1/DOMMatrix-css-string.worker.js": [
+   "b640ee1ef405e0edca83b6665de838b2e64e5785",
+   "testharness"
+  ],
+  "css/geometry-1/DOMPoint-001-expected.txt": [
+   "1d1653e3a532efe9ecd8fb474e7bd3e51a7a3467",
+   "support"
+  ],
   "css/geometry-1/DOMPoint-001.html": [
    "75a1c984c5a9b414bce5276e01f2b0b017bc49d3",
    "testharness"
@@ -171881,6 +177253,10 @@
    "30ca7cda7adda2bddda3643488a478af116f14cd",
    "testharness"
   ],
+  "css/geometry-1/DOMQuad-001-expected.txt": [
+   "ece00d8625a4d1e70573027ffdf829676bb39418",
+   "support"
+  ],
   "css/geometry-1/DOMQuad-001.html": [
    "5f48cfc224a18cfe37a7cf94cf48665a19681f21",
    "testharness"
@@ -171893,6 +177269,18 @@
    "f24895dc1d994388c45fb6fa39132a7e1c03d18b",
    "testharness"
   ],
+  "css/geometry-1/WebKitCSSMatrix.html": [
+   "353fb5d2950784a88ce7764bb23c4267ac837ca8",
+   "testharness"
+  ],
+  "css/geometry-1/WebKitCSSMatrix.worker.js": [
+   "35d9a1d1a7f655b55d94d0b409e9562a3fd08db5",
+   "testharness"
+  ],
+  "css/geometry-1/historical.html": [
+   "0246effb1d5cc1136dcea4f70de08c66cabbaa89",
+   "testharness"
+  ],
   "css/geometry-1/support/dommatrix-test-util.js": [
    "d0f0c482648ac39ccaebe359880b079369a8ba21",
    "support"
@@ -171957,6 +177345,10 @@
    "c7c664ce492ddee12caeebc45235073b65b46c42",
    "support"
   ],
+  "css/reference/ref-filled-green-300px-square.html": [
+   "ae0b29e989b96750353e32c1cc5f597604cb26dc",
+   "support"
+  ],
   "css/reference/single_square_list_marker.xht": [
    "24f700c8434ba676f079c99ad02bbc5c05be49da",
    "support"
@@ -171993,8 +177385,12 @@
    "86dd5c49bb80eb7c5fc31fa5ccde03cb3cd1eaa6",
    "reftest"
   ],
+  "css/selectors4/focus-within-006-ref.html": [
+   "cd252364cc3bcdbd1ee08cb05fd7f3170743b6a5",
+   "support"
+  ],
   "css/selectors4/focus-within-006.html": [
-   "559c91d9c1fde3acff64e8306c5336a128403f77",
+   "98c8ac4a0a0af6fdf5cc223665a80905a49ebab5",
    "reftest"
   ],
   "css/selectors4/focus-within-007-ref.html": [
@@ -172013,6 +177409,10 @@
    "099cc34fc6e8303f6698fa173950c969f626f1c5",
    "testharness"
   ],
+  "css/selectors4/focus-within-010.html": [
+   "150745c52d09926db02fdff2038858aa9c3bbf7d",
+   "reftest"
+  ],
   "css/selectors4/focus-within-display-none-001.html": [
    "d6cf51a6bc63173550d4822fe6bf9c2cb6a74ad0",
    "testharness"
@@ -172022,23 +177422,23 @@
    "support"
   ],
   "css/selectors4/focus-within-shadow-001.html": [
-   "04bea6ccfca052e4f1145bbc2ee29eafea6ec28c",
+   "d40955b06bcfe9b301ee107a9ed5bf04185778f2",
    "reftest"
   ],
   "css/selectors4/focus-within-shadow-002.html": [
-   "7d42c180427eeb8914a2d87a5de6041962cde606",
+   "2cdc61827ca490926c7b6b9a66c667792ef2bc33",
    "reftest"
   ],
   "css/selectors4/focus-within-shadow-003.html": [
-   "bb2a85b95b8d3a3bf9d99035522f02f2a85710d8",
+   "3350a0d3f5f50f150b7fb08a7d973a7a2f55fa29",
    "reftest"
   ],
   "css/selectors4/focus-within-shadow-004.html": [
-   "4339aa03e5120ddcca25a268e2d94539b1e04523",
+   "a5721ff3e15dc01114f823b43ad8411f9817fecf",
    "reftest"
   ],
   "css/selectors4/focus-within-shadow-005.html": [
-   "99c5fcb361ae4903b4e87315dfb8ba80f0296037",
+   "3a350e398a252d9687070f5dd02aaae3449c2425",
    "reftest"
   ],
   "css/selectors4/focus-within-shadow-006.html": [
@@ -174477,16 +179877,12 @@
    "8fb3e3327f8f657e2215c91c75f49fd739c15c57",
    "testharness"
   ],
-  "cssom-view/cssom-view/media-query-list-interface-expected.txt": [
-   "e10c7bbf158a0652b0ee64b7f16408bad7f3b774",
-   "support"
-  ],
   "cssom-view/cssom-view/media-query-list-interface.xht": [
    "62f0fdd48d1a4194d439ee22829b3346bed9a154",
    "testharness"
   ],
   "cssom-view/cssom-view/window-interface-expected.txt": [
-   "2d90834d824a27b9aada1b977630dfbb3879f215",
+   "f9c91ee81e61bbe5168efcfb6c710abcbdf265a0",
    "support"
   ],
   "cssom-view/cssom-view/window-interface.xht": [
@@ -174798,7 +180194,7 @@
    "testharness"
   ],
   "cssom/CSSKeyframesRule-expected.txt": [
-   "e252f60bc98e752751720a295459cc684a1b9e97",
+   "9d4a0e70fbf9e2a937eb1b9085d2151b6bf78e16",
    "support"
   ],
   "cssom/CSSKeyframesRule.html": [
@@ -174889,6 +180285,10 @@
    "c9ed57c7ef7a035c25feff4ea60547a57d727f31",
    "testharness"
   ],
+  "cssom/getComputedStyle-pseudo.html": [
+   "6c74e57a2e32a13cc3b7e955a2d89dafdf6d1730",
+   "testharness"
+  ],
   "cssom/historical.html": [
    "2c78218b89efb9bdf60cf708920be142051347c7",
    "testharness"
@@ -174918,7 +180318,7 @@
    "testharness"
   ],
   "cssom/interfaces-expected.txt": [
-   "f7a3e84adbeaefbee836699ae65e783652e5bcc7",
+   "0ba723a5501bf6c1ee8a9a16daac103b3e8638a8",
    "support"
   ],
   "cssom/interfaces.html": [
@@ -175213,6 +180613,10 @@
    "0c1c8fb977b24bb3b5ca33051b32932f36f5a960",
    "testharness"
   ],
+  "cssom/variable-names.html": [
+   "5ab67b9e86fd700a556d153898c2896448cc1759",
+   "testharness"
+  ],
   "custom-elements/CustomElementRegistry.html": [
    "d1661ab1734f7d1a252030aeac7e9842a7a4cb3b",
    "testharness"
@@ -175253,6 +180657,10 @@
    "724060b276a1f3254fd226e329631005ec5a5e87",
    "testharness"
   ],
+  "custom-elements/custom-element-registry/per-global.html": [
+   "3b143f80d77a0b15b59cc6e6f5344f85dafe4f4e",
+   "testharness"
+  ],
   "custom-elements/disconnected-callbacks-expected.txt": [
    "74388ea24fbfe987cb0c26c8a4d92e04c216e48e",
    "support"
@@ -175706,7 +181114,7 @@
    "testharness"
   ],
   "dom/interfaces-expected.txt": [
-   "51df51ac34194dc11f9ff4e2ea3993333c76910c",
+   "71eee7be7b4ec74490a7f52fea4d28aeaccf7b4e",
    "support"
   ],
   "dom/interfaces.html": [
@@ -176326,7 +181734,7 @@
    "support"
   ],
   "dom/nodes/Element-classlist.html": [
-   "dc4e8741784889b34d1710e4423fe05c6b89c6ed",
+   "c197df35960b77a7794eed10a1a927867a6658f4",
    "testharness"
   ],
   "dom/nodes/Element-closest-expected.txt": [
@@ -177262,7 +182670,7 @@
    "testharness"
   ],
   "domxpath/interfaces-expected.txt": [
-   "2b5d022a5dab228aaac03cb32b042179f9673adb",
+   "cb3cfe20146cbb757602172dcfc75cfddeea67ca",
    "support"
   ],
   "domxpath/interfaces.html": [
@@ -177382,7 +182790,7 @@
    "support"
   ],
   "editing/data/misc.js": [
-   "b3665906b4490411e15fcfd26e52df64a3470186",
+   "5e7a34bcaccb5ef4c2efa782fbc19991931bf8bc",
    "support"
   ],
   "editing/data/multitest.js": [
@@ -177477,6 +182885,10 @@
    "c812df13215631719f8ff17eee4e0a854684670d",
    "testharness"
   ],
+  "editing/other/extra-text-nodes.html": [
+   "ae2676afe7fb739c9fe7f2557971d8c1e9b58fdc",
+   "testharness"
+  ],
   "editing/other/restoration-expected.txt": [
    "44e469414a6a79011ef935a70af52aeee7b3689d",
    "support"
@@ -177745,10 +183157,6 @@
    "30bdfc96ffaff0277ceca69aad43d82d5ac691b6",
    "testharness"
   ],
-  "encoding/idlharness-expected.txt": [
-   "3f791bd20aaf834b865bce624535c26c83cb9ea8",
-   "support"
-  ],
   "encoding/idlharness.html": [
    "7f1eee3e9d3554fe49e04014501ed12bc57b89e8",
    "testharness"
@@ -178501,6 +183909,298 @@
    "17c7a7646bd10a09035bfbc48f6a29c033b44bda",
    "support"
   ],
+  "eventsource/README.md": [
+   "f450de54700a6057f2acb57d2c52257684b337f8",
+   "support"
+  ],
+  "eventsource/dedicated-worker/eventsource-close.htm": [
+   "700107771158b22fa280f30a5a52d1aac617ff6e",
+   "testharness"
+  ],
+  "eventsource/dedicated-worker/eventsource-constructor-non-same-origin.htm": [
+   "559eef919d29e8db8d0e8c58d71803d3ceb9d761",
+   "testharness"
+  ],
+  "eventsource/dedicated-worker/eventsource-constructor-url-bogus.htm": [
+   "d97370612a324674cc3c9db744656efc2c517573",
+   "testharness"
+  ],
+  "eventsource/dedicated-worker/eventsource-eventtarget.worker.js": [
+   "44793f9f72a6210b2dc8e188e9d0719d55d7f557",
+   "testharness"
+  ],
+  "eventsource/dedicated-worker/eventsource-onmesage.htm": [
+   "d70f4546165557fcffb4f9fc7629110101ecdde4",
+   "testharness"
+  ],
+  "eventsource/dedicated-worker/eventsource-onopen.htm": [
+   "b5eeab94f6c2e6968d4eddf51e602f014803189c",
+   "testharness"
+  ],
+  "eventsource/dedicated-worker/eventsource-prototype.htm": [
+   "e456055918c6de9aeba8a6f190e3b1026bad5002",
+   "testharness"
+  ],
+  "eventsource/dedicated-worker/eventsource-url.htm": [
+   "bf2cb242561dd44ff3179a397fdf76e2b6721eda",
+   "testharness"
+  ],
+  "eventsource/event-data.html": [
+   "d4c12398f299da6facce4afc785d9959d9c2f59b",
+   "testharness"
+  ],
+  "eventsource/eventsource-close.htm": [
+   "1ef734e03c84ac74b6a0d2d6be57593cdc3dc973",
+   "testharness"
+  ],
+  "eventsource/eventsource-constructor-document-domain.htm": [
+   "f44e3f48de8e62ea50a3a6bf6fa91c117357ce26",
+   "testharness"
+  ],
+  "eventsource/eventsource-constructor-non-same-origin.htm": [
+   "a4c501a1bd6dbc04dbead8326b5f804a2b832be1",
+   "testharness"
+  ],
+  "eventsource/eventsource-constructor-stringify.htm": [
+   "44861ddb6ebd37e1ef8b496ed734c0264f46a512",
+   "testharness"
+  ],
+  "eventsource/eventsource-constructor-url-bogus.htm": [
+   "579a6dc4342108d40a64300f94459a83a84f3d4a",
+   "testharness"
+  ],
+  "eventsource/eventsource-constructor-url-multi-window.htm": [
+   "83acdbb4b960268da4c476c833ca12b6e1a9d891",
+   "testharness"
+  ],
+  "eventsource/eventsource-cross-origin.htm": [
+   "968a3083770ed51e8875e59cde05a1591fb359e6",
+   "testharness"
+  ],
+  "eventsource/eventsource-eventtarget.htm": [
+   "6c310a29fead70bf530da7fb8606622f2b0b1f5a",
+   "testharness"
+  ],
+  "eventsource/eventsource-onmessage-realm-support.htm": [
+   "c6cb7f6b619c7e06150d7a52d7fb5db032398b52",
+   "support"
+  ],
+  "eventsource/eventsource-onmessage-realm.htm": [
+   "5b6b6a404b32e6feeda50994e847a51e8d05f37e",
+   "testharness"
+  ],
+  "eventsource/eventsource-onmessage-trusted.htm": [
+   "2e1db82bd52328761053868053e64b891c329a99",
+   "testharness"
+  ],
+  "eventsource/eventsource-onmessage.htm": [
+   "df7317125e36f62825d915f0bc156b24e1f473a9",
+   "testharness"
+  ],
+  "eventsource/eventsource-onopen.htm": [
+   "ca18dac3866e9614a16c847f2bfb19f06c22378c",
+   "testharness"
+  ],
+  "eventsource/eventsource-prototype.htm": [
+   "325c4c08b7bfd7fdf9fa3836508cb6853feecdac",
+   "testharness"
+  ],
+  "eventsource/eventsource-reconnect.htm": [
+   "b3e5285923d6d8d2d9065fdc6817f3b833f85140",
+   "testharness"
+  ],
+  "eventsource/eventsource-request-cancellation.htm": [
+   "d39a24ac7b6fa059d6a81375774c3ae62bfa3fa2",
+   "testharness"
+  ],
+  "eventsource/eventsource-url.htm": [
+   "9c9e6787d2a548732fa3a9b7daaa40a960454465",
+   "testharness"
+  ],
+  "eventsource/format-bom-2.htm": [
+   "66c286eaca02c11c753c3b78b4b9ffa48dd4774c",
+   "testharness"
+  ],
+  "eventsource/format-bom.htm": [
+   "0af0ca8628da33f201820c72dd44b4e8e2dee552",
+   "testharness"
+  ],
+  "eventsource/format-comments.htm": [
+   "f4d259fd156f61f83a1165daaccbe4872056ef48",
+   "testharness"
+  ],
+  "eventsource/format-data-before-final-empty-line.htm": [
+   "260a48e731b6264879e4069ba608121de5f20427",
+   "testharness"
+  ],
+  "eventsource/format-field-data.htm": [
+   "868530cc2d403b1b5ecd5bfdcef2e5be66f7cc61",
+   "testharness"
+  ],
+  "eventsource/format-field-event-empty.htm": [
+   "c5b9b6f9f28d5e66f742ac1e0f31a28fd09fa8a3",
+   "testharness"
+  ],
+  "eventsource/format-field-event.htm": [
+   "1c7a77a1f3cdb6cca816cb1944256892e6473e24",
+   "testharness"
+  ],
+  "eventsource/format-field-id-2.htm": [
+   "5704f240a4b83319e1ad436caebec40f5005e946",
+   "testharness"
+  ],
+  "eventsource/format-field-id.htm": [
+   "a33303664c6604026bcde699386d8d64647066d2",
+   "testharness"
+  ],
+  "eventsource/format-field-parsing.htm": [
+   "451a7acee5abb9c0cbec826506e39e5ececfcb7d",
+   "testharness"
+  ],
+  "eventsource/format-field-retry-bogus.htm": [
+   "36b3ab19c6cc026f8b853f53125dca872fb852f4",
+   "testharness"
+  ],
+  "eventsource/format-field-retry-empty.htm": [
+   "3e0e52881b91c3c3e0a2c09679f057ae86c26cf5",
+   "testharness"
+  ],
+  "eventsource/format-field-retry.htm": [
+   "ff77911ac434593326e06a450c1ad745a4675221",
+   "testharness"
+  ],
+  "eventsource/format-field-unknown.htm": [
+   "9be3a5363dfee1de580edf5979f8b61d4cce2fc6",
+   "testharness"
+  ],
+  "eventsource/format-leading-space.htm": [
+   "b0cffd5c72d1aee687c6774b3db9d9961b7ff6bc",
+   "testharness"
+  ],
+  "eventsource/format-mime-bogus.htm": [
+   "6941014dcabde9c35dc9f757e0c5c27cb331c62f",
+   "testharness"
+  ],
+  "eventsource/format-mime-trailing-semicolon.htm": [
+   "a24cf6a36134814e331ca64fe3c9a5771fd40f3c",
+   "testharness"
+  ],
+  "eventsource/format-mime-valid-bogus.htm": [
+   "e84580bf514c5ddfd54153090a1a1cd364776adf",
+   "testharness"
+  ],
+  "eventsource/format-newlines.htm": [
+   "35858a5a6f6313b2f52bb26787fcd4e7ebd17aa0",
+   "testharness"
+  ],
+  "eventsource/format-null-character.html": [
+   "260577b0b2013eea1e2b163ca70a73fdc6258439",
+   "testharness"
+  ],
+  "eventsource/format-utf-8.htm": [
+   "150899caa81465d6ee79b0f190225e477e852944",
+   "testharness"
+  ],
+  "eventsource/interfaces.html": [
+   "7c6142901b523241a7d4f37924b5ac23ca326dd3",
+   "testharness"
+  ],
+  "eventsource/request-accept.htm": [
+   "ef5b92a2396e77beca045e84933e7b1481cb6eb5",
+   "testharness"
+  ],
+  "eventsource/request-cache-control.htm": [
+   "9ef66188bb2413f0eb175abc85a99b1a044a63e7",
+   "testharness"
+  ],
+  "eventsource/request-credentials.htm": [
+   "010be5d86c8a720c0b21834c4be26d993de17285",
+   "testharness"
+  ],
+  "eventsource/request-redirect.htm": [
+   "50ad3c4126510681998fbf6bc645cd9461780344",
+   "testharness"
+  ],
+  "eventsource/request-status-error.htm": [
+   "05e310c3c51b0c6cbaf3d5948e29f9110d524f42",
+   "testharness"
+  ],
+  "eventsource/resources/accept.event_stream": [
+   "65722eb0b5da8423b12e4fa9de12b9bcfe1dbea1",
+   "support"
+  ],
+  "eventsource/resources/cache-control.event_stream": [
+   "da25f849ba134437ac1f0af6a17ecc90e3e319b5",
+   "support"
+  ],
+  "eventsource/resources/cors-cookie.py": [
+   "86d2b8ed9fdfc974e7d28d990e8709e79c93b131",
+   "support"
+  ],
+  "eventsource/resources/cors.py": [
+   "ce7af1571fd65a33698344465352b48e600a8650",
+   "support"
+  ],
+  "eventsource/resources/init.htm": [
+   "4faead7af5f158efef5edc7ed04a47dcb2651df5",
+   "support"
+  ],
+  "eventsource/resources/last-event-id.py": [
+   "9f4a48ce1f216200763937429f5a70d2f356b611",
+   "support"
+  ],
+  "eventsource/resources/message.py": [
+   "e0b16b61818b74560e6b53e75fc06ef100a85a1b",
+   "support"
+  ],
+  "eventsource/resources/message2.py": [
+   "1b993f3a10b39a76f209a4beb6191a83c769eb8f",
+   "support"
+  ],
+  "eventsource/resources/reconnect-fail.py": [
+   "69571dcc7a756fe02d4f59d22cc5db45e5b4da34",
+   "support"
+  ],
+  "eventsource/resources/status-error.py": [
+   "2a79947e7c0da4621a0299fbc279bc7eaefb2c0f",
+   "support"
+  ],
+  "eventsource/resources/status-reconnect.py": [
+   "96ec5d58d8558ca3b78c351c3fdf6835f709f4ca",
+   "support"
+  ],
+  "eventsource/shared-worker/eventsource-close.htm": [
+   "196601fcbfdb216fdf99730986e796a0f8164ddb",
+   "testharness"
+  ],
+  "eventsource/shared-worker/eventsource-constructor-non-same-origin.htm": [
+   "a9814bf1b62a81a39012d85d4a2daa4e58e2e298",
+   "testharness"
+  ],
+  "eventsource/shared-worker/eventsource-constructor-url-bogus.htm": [
+   "dfc1b40c7b127a1041cf9344cc11dcce342b65ca",
+   "testharness"
+  ],
+  "eventsource/shared-worker/eventsource-eventtarget.htm": [
+   "91574e0db564ce5f35a6d07b177b4333ebc6b53d",
+   "testharness"
+  ],
+  "eventsource/shared-worker/eventsource-onmesage.htm": [
+   "9baa0b480754acf4cc5fbf2360408b21e21088ce",
+   "testharness"
+  ],
+  "eventsource/shared-worker/eventsource-onopen.htm": [
+   "7daabfe1cbefd1bc64916bbc01af078a7bdbe6e6",
+   "testharness"
+  ],
+  "eventsource/shared-worker/eventsource-prototype.htm": [
+   "cd056d8608d651ef9e44c57e89c24102d6fdb963",
+   "testharness"
+  ],
+  "eventsource/shared-worker/eventsource-url.htm": [
+   "db0ae6b9e15f03d83dd5fcf870eb135dc75f42db",
+   "testharness"
+  ],
   "fetch/README.md": [
    "cc3f679ff78bf2e3b39cf967102c257b84fd7680",
    "support"
@@ -178753,10 +184453,6 @@
    "c360fd3d220fc13b35e5858dd9c7ddb49256ae72",
    "testharness"
   ],
-  "fetch/api/headers/headers-basic-expected.txt": [
-   "c7aa1da80c76986abd8e190ba07af702a4005565",
-   "support"
-  ],
   "fetch/api/headers/headers-basic.html": [
    "2eadcace244bb97aae5aee14657bf07f19df22aa",
    "testharness"
@@ -178774,7 +184470,7 @@
    "testharness"
   ],
   "fetch/api/headers/headers-idl-expected.txt": [
-   "e6908e18e9b16088954e80a788ef94014bc777af",
+   "9b7cf6bf382d80378214443eec3f96f09d502fc9",
    "support"
   ],
   "fetch/api/headers/headers-idl.html": [
@@ -179146,7 +184842,7 @@
    "testharness"
   ],
   "fetch/api/request/request-idl-expected.txt": [
-   "8c6c169325ac608963a21a0f9ad0311155665f77",
+   "e09072192ced173c4e4ad4fb0f8ceac51b40ec87",
    "support"
   ],
   "fetch/api/request/request-idl.html": [
@@ -179306,7 +185002,7 @@
    "testharness"
   ],
   "fetch/api/response/response-idl-expected.txt": [
-   "3418cf393722f28985e4ebc8d74f072628c87215",
+   "bd59cadc79d90c6b2fb119bb9c634529b6f28dbc",
    "support"
   ],
   "fetch/api/response/response-idl.html": [
@@ -179717,10 +185413,90 @@
    "e401e8e8bcd97446991398d6021a9bd712c923c5",
    "support"
   ],
+  "gamepad/OWNERS": [
+   "1e787fb5c201a568863a2953cf910a10e45cc23b",
+   "support"
+  ],
   "gamepad/idlharness.html": [
    "5a3fc1b9be284ad92d9cc252325e6f8eae02e1cc",
    "testharness"
   ],
+  "generic-sensor/generic-sensor-tests.js": [
+   "7b36a69dd7d9148f70a1d40d4108dcd747cb2913",
+   "support"
+  ],
+  "generic-sensor/idlharness.html": [
+   "0e3f29a3a065a3db2f6e0e77d9c6bbdf47bf5ca8",
+   "testharness"
+  ],
+  "geolocation-API/PositionOptions.https.html": [
+   "772c305b5b9e6a8ae61a44b395771b8d60bd7187",
+   "testharness"
+  ],
+  "geolocation-API/clearWatch_TypeError.html": [
+   "cce531a95f13a25148903807da87725390dd13dc",
+   "testharness"
+  ],
+  "geolocation-API/getCurrentPosition_IDL.https.html": [
+   "5c7c8f7406a82140384687bfc66b2ef1d8bdc259",
+   "testharness"
+  ],
+  "geolocation-API/getCurrentPosition_TypeError.html": [
+   "d00057185b0641895b700d43df91063beb0529ca",
+   "testharness"
+  ],
+  "geolocation-API/getCurrentPosition_permission-manual.html": [
+   "c4bd25b48591ab5078eafa3439363eaa0a24e7cb",
+   "manual"
+  ],
+  "geolocation-API/getCurrentPosition_permission_allow-manual.html": [
+   "e75a1408296aeed55b5edee35d86cb523cce5a4c",
+   "manual"
+  ],
+  "geolocation-API/getCurrentPosition_permission_allow.https.html": [
+   "02b0a2b3c021da0b811ba1c21ce0fc63d7839652",
+   "testharness"
+  ],
+  "geolocation-API/getCurrentPosition_permission_deny-manual.html": [
+   "44b2d8846c79ddf7eb8cb3ab76d8899b7e783fad",
+   "manual"
+  ],
+  "geolocation-API/getCurrentPosition_permission_deny.https.html": [
+   "aabbc7b2d392e2bbc26c08262bae4d57348da7a2",
+   "testharness"
+  ],
+  "geolocation-API/interfaces.html": [
+   "c5e300b504b6bf75818fbe79728c87b086ccce3d",
+   "testharness"
+  ],
+  "geolocation-API/support.js": [
+   "68515a39a244240502d7a871be505a079360cdce",
+   "support"
+  ],
+  "geolocation-API/watchPosition_TypeError.html": [
+   "84c57288bdc42dd2c6d97f81e2608a19769272b9",
+   "testharness"
+  ],
+  "geolocation-API/watchPosition_permission-manual.html": [
+   "39f9b8442320f67323f55f26a417deb2ae12eacf",
+   "manual"
+  ],
+  "geolocation-API/watchPosition_permission_deny.https.html": [
+   "ca3036737a662e8673477b1a09b6fce89f0f98f4",
+   "testharness"
+  ],
+  "gyroscope/Gyroscope.https.html": [
+   "03510d4964a52a53fc7648b5435e810e75ea747a",
+   "testharness"
+  ],
+  "gyroscope/Gyroscope_insecure_context.html": [
+   "319bcf346337ccdd67f94ba2d0d4849e5b57da5e",
+   "testharness"
+  ],
+  "gyroscope/Gyroscope_onerror-manual.https.html": [
+   "1e15b883bd317ca83783864fc563794cb0f6df8e",
+   "manual"
+  ],
   "gyroscope/idlharness.https-expected.txt": [
    "adc83b19e793491b1c6ea0fd8b46cd9f32e592fc",
    "support"
@@ -179729,14 +185505,14 @@
    "567b200f0ea88894bbffbffb6d20ea546f516e7d",
    "testharness"
   ],
+  "gyroscope/support-iframe.html": [
+   "b02be6c1cdae86e449b8bf635e18e0b60957bb81",
+   "support"
+  ],
   "hr-time/basic.any.js": [
    "5c727eed4efd84b4b280b2584b7338217971a9e7",
    "testharness"
   ],
-  "hr-time/idlharness-expected.txt": [
-   "bb9c7549a8514d7906753a36550f1f51cdf85ca9",
-   "support"
-  ],
   "hr-time/idlharness.html": [
    "b56993b32650d40226e08beee147bc28c76cfa22",
    "testharness"
@@ -179857,6 +185633,10 @@
    "16a810530a8101a0c672bad9c425ca0e8f1e16cc",
    "manual"
   ],
+  "html-media-capture/capture_reflect-expected.txt": [
+   "0cff3dfa8811bfafd066ee4e0194aa1aa4108cc4",
+   "support"
+  ],
   "html-media-capture/capture_reflect.html": [
    "81518a10ed38fa5e077430ce6fdf8ed844297a01",
    "testharness"
@@ -179881,6 +185661,10 @@
    "acef04c2541d30fdff411c74ccce81ee2086c9d2",
    "manual"
   ],
+  "html-media-capture/idlharness-expected.txt": [
+   "03ed7481bfae8eec07f40a6a76a48e0f5f1e13f1",
+   "support"
+  ],
   "html-media-capture/idlharness.html": [
    "32b3d387100f0e7ecda93d1fb88351680b259df0",
    "testharness"
@@ -180010,7 +185794,7 @@
    "testharness"
   ],
   "html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html": [
-   "18bd98353460da1c9d376e9453d9a96b7c273291",
+   "0f8425ba4fcdd12e357ec975c6439c89c72c1c3e",
    "testharness"
   ],
   "html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-samedoc.html": [
@@ -181301,6 +187085,10 @@
    "48192ef9970a0e258e790e69174755c3872604f1",
    "testharness"
   ],
+  "html/browsers/history/the-location-interface/per-global.window.js": [
+   "04de6e863ec1816fccda38e50b81d67bbcedb125",
+   "support"
+  ],
   "html/browsers/history/the-location-interface/reload_document_open_write-1.html": [
    "464fa292c3fa04da8594401bbdb7cbe2a30b41dc",
    "support"
@@ -184158,7 +189946,7 @@
    "testharness"
   ],
   "html/dom/reflection-metadata-expected.txt": [
-   "6cd0f738b34dcfd16495e4f8f6a42d3c635d5d1c",
+   "693042f0a15cd1045670ba6b0706ab9257507197",
    "support"
   ],
   "html/dom/reflection-metadata.html": [
@@ -184190,7 +189978,7 @@
    "testharness"
   ],
   "html/dom/reflection-tabular-expected.txt": [
-   "ae690ebf1c242116b0bebd94293b3a6d19067c66",
+   "ad7f43965720a5d69d8fd808ef07cbc9d860086c",
    "support"
   ],
   "html/dom/reflection-tabular.html": [
@@ -187637,6 +193425,50 @@
    "e3e7f3973cf8f9b466d4f22d1ec3b9b9241fb906",
    "support"
   ],
+  "html/editing/editing-0/spelling-and-grammar-checking/references/spelling-markers-001-ref.html": [
+   "a21ca78b9c6a8795eb4e2fa95f30a51a553a3e52",
+   "support"
+  ],
+  "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-001.html": [
+   "5c20688ee9f871cdc0b1553287dfe6d4d64dcf15",
+   "reftest"
+  ],
+  "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-002.html": [
+   "80318bc3c90f72803255831a95c482bf99105d29",
+   "reftest"
+  ],
+  "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-003.html": [
+   "ae4f1d7e6c954fd1f3fa53fcd77833954bcdf6d9",
+   "reftest"
+  ],
+  "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-004.html": [
+   "ace6101644d2c0e426d611016a3cb3dc30968f4a",
+   "reftest"
+  ],
+  "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-005.html": [
+   "5aae7d56aa63f90160ba1e296378b0a0832c07f0",
+   "reftest"
+  ],
+  "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-006.html": [
+   "e329657b5ebf7211237fa7712a3c710d3ea4b956",
+   "reftest"
+  ],
+  "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-007.html": [
+   "10c986cf6e428c782a09572be5c5438d256b17c1",
+   "reftest"
+  ],
+  "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-008.html": [
+   "c026d35ec89818f5624daad20163fb4ceed62828",
+   "reftest"
+  ],
+  "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-009.html": [
+   "68e7e27bc3777a8fe0807380a28c1ce60aa3becc",
+   "reftest"
+  ],
+  "html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-010.html": [
+   "0320abd956316beff38f2ff06e0f32ee2b2e9887",
+   "reftest"
+  ],
   "html/editing/editing-0/spelling-and-grammar-checking/user-interaction-editing-spellcheck.html": [
    "228e52ef1987df94158305799dc53086e435b24b",
    "testharness"
@@ -187825,10 +193657,6 @@
    "de0ed7f283f4e17155cd3fc07dd5cb688d6fd8be",
    "support"
   ],
-  "html/infrastructure/common-dom-interfaces/collections/domstringlist-interface-expected.txt": [
-   "4ba4f7e089dc138e38eb1d1a9d5265d7cd5fcd1f",
-   "support"
-  ],
   "html/infrastructure/common-dom-interfaces/collections/domstringlist-interface.html": [
    "ca8af91733f0b0704409e26f17d4a14977ce14f7",
    "testharness"
@@ -188005,22 +193833,42 @@
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
+  "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/broadcastchannel-success-and-failure-expected.txt": [
+   "f1a92556756ba2367d58775e9b4e4f56d3d22464",
+   "support"
+  ],
   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/broadcastchannel-success-and-failure.html": [
    "8375e9daeb9a11e53a9841874fef50677f0970dc",
    "testharness"
   ],
+  "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/broadcastchannel-success-expected.txt": [
+   "5b71103526f9bdc73d6cb0c952b341cd7aeb802d",
+   "support"
+  ],
   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/broadcastchannel-success.html": [
    "12bd51a62830514325b89263abc5710bbe6b510f",
    "testharness"
   ],
+  "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/identity-not-preserved-expected.txt": [
+   "b8bbcf78db5a8c1373a592d36818ee8feb20d092",
+   "support"
+  ],
   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/identity-not-preserved.html": [
    "594d11e18e7ef8e9aaa0eca3dc2865033827ce7c",
    "testharness"
   ],
+  "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/nested-worker-success-dedicatedworker-expected.txt": [
+   "dca7776baefe8e2c5758475769c3e28f265171bb",
+   "support"
+  ],
   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/nested-worker-success-dedicatedworker.html": [
    "1fa9a3ae8d33bfd08d37a18853d511b9de66889b",
    "testharness"
   ],
+  "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/nested-worker-success-sharedworker-expected.txt": [
+   "dca7776baefe8e2c5758475769c3e28f265171bb",
+   "support"
+  ],
   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/nested-worker-success-sharedworker.html": [
    "c93bd6d985380cde5e3309897ad56fccd0a73709",
    "testharness"
@@ -188029,6 +193877,10 @@
    "42b788cb6d8a9509239bbb5c141c1f014dd9a6bf",
    "support"
   ],
+  "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-transferring-expected.txt": [
+   "677ad31ab2ad8327f3c9fda6214093162ee0289d",
+   "support"
+  ],
   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-transferring.html": [
    "17b67f8d75e558be808493f5cba82f978a0b6822",
    "testharness"
@@ -188109,6 +193961,10 @@
    "a8d3ce61436cb0d5b23c275820fcde7d63cdafec",
    "support"
   ],
+  "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-history-expected.txt": [
+   "5330724ff028597c0f67b064f8a3238387d98ee8",
+   "support"
+  ],
   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-history.html": [
    "8f66e9b640ba812f3846a8fb0dc8f29fcf502f1e",
    "testharness"
@@ -188121,26 +193977,50 @@
    "bba8979a9270460b976f8c2ca6912c1b3dedeab2",
    "testharness"
   ],
+  "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-success.sub-expected.txt": [
+   "3fe5917b592d3fd122560ba1ae1855194ddfeaa1",
+   "support"
+  ],
   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-success.sub.html": [
    "dac4b1fd873c3ec42d05e24166e77424b15377d4",
    "testharness"
   ],
+  "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-messagechannel-success-expected.txt": [
+   "5bc3d99b084de09db7302a029b742d40f193fe9b",
+   "support"
+  ],
   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-messagechannel-success.html": [
    "298b5dba54eafaee6dafe5356b5196ed37f59b21",
    "testharness"
   ],
+  "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-serviceworker-failure.https-expected.txt": [
+   "b171c76db386b300ed5de0e3d1528bb129669f3e",
+   "support"
+  ],
   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-serviceworker-failure.https.html": [
    "11794f2d67e97eb97ad1871027b4a19e017e9624",
    "testharness"
   ],
+  "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-sharedworker-failure-expected.txt": [
+   "73b4d2fe27182f7958e1558aa9fca10fb3854779",
+   "support"
+  ],
   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-sharedworker-failure.html": [
    "735bfeda2e72815f331766b32ac02af71179902b",
    "testharness"
   ],
+  "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-similar-but-cross-origin-success.sub-expected.txt": [
+   "2aa5e9fcaa4376b0034c49feb2bf85cd7400e9c2",
+   "support"
+  ],
   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-similar-but-cross-origin-success.sub.html": [
    "5d30957d37646bd4ebc7112db8c055bae8cc6e23",
    "testharness"
   ],
+  "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-simple-success-expected.txt": [
+   "6819b2199c308f6d3f006e0274e891484cf1ff79",
+   "support"
+  ],
   "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-simple-success.html": [
    "7c0b8b2e411236aeeed3a8b7962dc70d8a94969f",
    "testharness"
@@ -188902,7 +194782,7 @@
    "support"
   ],
   "html/rendering/non-replaced-elements/tables/OWNERS": [
-   "9d89a9a80094b90ae9bdc0c8501aafef3adcbcf2",
+   "fde7a2ad96981226f11f642f440f872ff92cbee4",
    "support"
   ],
   "html/rendering/non-replaced-elements/tables/table-border-1-ref.html": [
@@ -190898,7 +196778,7 @@
    "testharness"
   ],
   "html/semantics/forms/textfieldselection/selection-after-content-change-expected.txt": [
-   "158d99363f5aaf434fffe94941eb9f9436261265",
+   "fe3e555124aa9d768ec354636888452faa49a346",
    "support"
   ],
   "html/semantics/forms/textfieldselection/selection-after-content-change.html": [
@@ -191182,7 +197062,7 @@
    "testharness"
   ],
   "html/semantics/forms/the-input-element/radio.html": [
-   "f80348bd3b3947eefc993323988799df13e7280e",
+   "e7b37335f58290c4f5a8e1a098c1cc50fb78a7b2",
    "testharness"
   ],
   "html/semantics/forms/the-input-element/range-2.html": [
@@ -192185,6 +198065,14 @@
    "d18faac90e11617824f0a2bc2ead29ad14de3622",
    "testharness"
   ],
+  "html/semantics/scripting-1/the-script-element/module/currentScript-null.html": [
+   "20f8022ca7d47c57a08c20a17b547d0d89630fb3",
+   "testharness"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/currentscript.js": [
+   "6bd1fff05e91002539688b03eff9d7313e0de9dc",
+   "support"
+  ],
   "html/semantics/scripting-1/the-script-element/module/errorhandling-parseerror-common.js": [
    "ff9af4e5253db096cd5de8d2e7ed74cd05ed2561",
    "support"
@@ -192258,7 +198146,7 @@
    "support"
   ],
   "html/semantics/scripting-1/the-script-element/module/execorder.html": [
-   "a1b14284d50eda5bd745c113cf9df10a621895f2",
+   "2180793400b87fa0793a9e30ec35608bc156a25e",
    "testharness"
   ],
   "html/semantics/scripting-1/the-script-element/module/imports-a.js": [
@@ -192313,12 +198201,16 @@
    "f2a20180b6bf5f9c89f5b9541885d55dc8a8ade6",
    "support"
   ],
+  "html/semantics/scripting-1/the-script-element/module/set-currentScript-on-window.js": [
+   "ad9a90f05a7a64901b18474c49d0baa579bfc60d",
+   "support"
+  ],
   "html/semantics/scripting-1/the-script-element/nomodule-reflect.html": [
    "ac2b3c16e9e9263cd4c14de205b63709c14ec2e3",
    "testharness"
   ],
   "html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html": [
-   "5b4a532b21caa6235bed10a28878c65523a816aa",
+   "6ef870db74ba0dbb6171c74437a78cef4a6f6062",
    "testharness"
   ],
   "html/semantics/scripting-1/the-script-element/nomodule-set-on-external-module-script.html": [
@@ -194061,10 +199953,50 @@
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
-  "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm": [
-   "060659a3aafbbf51c8e1a909d5e7d451fdba2893",
+  "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-1.htm": [
+   "3c58f1659b1e7a06fbc9068a243b8777fb00b730",
    "testharness"
   ],
+  "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-10.htm": [
+   "a57ac305ef379f0ddd61c0bb401278855b87146c",
+   "testharness"
+  ],
+  "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-2.htm": [
+   "a599308e7803ede1851741a813f4eb4838554a32",
+   "testharness"
+  ],
+  "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-3.htm": [
+   "2313b85385e2cad99257ca985c005126eb2fc009",
+   "testharness"
+  ],
+  "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-4.htm": [
+   "af4c7c1bb4b26dcc8c6e8dc53201499f0086de4e",
+   "testharness"
+  ],
+  "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-5.htm": [
+   "5e4189278e14a78fc78edb7960ff33c69f9fa4bf",
+   "testharness"
+  ],
+  "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-6.htm": [
+   "0fd5c5703309abab66cf553da9685d8e766f5278",
+   "testharness"
+  ],
+  "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-7.htm": [
+   "b7a95380287b3c8299f2028d055cb68e1f11fc6e",
+   "testharness"
+  ],
+  "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-8.htm": [
+   "61c32e514cdc7b3d40f6a7bdb0d4babf19ec562c",
+   "testharness"
+  ],
+  "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-9.htm": [
+   "c35672e53b9ebe1d778de8ec8ea654390389bea5",
+   "testharness"
+  ],
+  "html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm": [
+   "f675bac0053a5e0b8dffe83cbaf48709537409d7",
+   "support"
+  ],
   "html/the-xhtml-syntax/parsing-xhtml-fragments/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
@@ -194146,7 +200078,7 @@
    "testharness"
   ],
   "html/webappapis/idle-callbacks/callback-multiple-calls.html": [
-   "6375309c43a1e7c9fafdc95f01fcccb4c92f8afc",
+   "af6e6a65fda2486ac8669340988b1d57a178e77a",
    "testharness"
   ],
   "html/webappapis/idle-callbacks/callback-removed-frame.html": [
@@ -194513,18 +200445,34 @@
    "6427c8ff06c11f2877f026124d46748b5270bc8e",
    "support"
   ],
+  "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-dedicatedworker-expected.txt": [
+   "af176e5146cc29228a79f938a4213a7dee9a7bb5",
+   "support"
+  ],
   "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-dedicatedworker.html": [
    "e9ef057de8593404b63e34c8c2ff038236f26d7b",
    "testharness"
   ],
+  "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https-expected.txt": [
+   "de5070cdadcb7ba3183ced73c67dd41fac93e9b8",
+   "support"
+  ],
   "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html": [
    "f6cdef79aefb4739025c0c805dfc1ee7fcddef52",
    "testharness"
   ],
+  "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-sharedworker-expected.txt": [
+   "065db60d0b5d575c0757abe9cc05eebb471dc79d",
+   "support"
+  ],
   "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-sharedworker.html": [
    "6927215d83fc6562dabf74b1a089531556256f5c",
    "testharness"
   ],
+  "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-window-expected.txt": [
+   "6db918561d530cb3693ca40927130bf4c66f9e45",
+   "support"
+  ],
   "html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-window.html": [
    "5aab1e791ad444eb73383e06f4e2fbb1fb512072",
    "testharness"
@@ -194901,6 +200849,26 @@
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
+  "http/basic-auth-cache-test-ref.html": [
+   "42fbbd76956a8d2a84221500f70bd5c42cf5c75a",
+   "support"
+  ],
+  "http/basic-auth-cache-test.html": [
+   "3695684b66b1929a582d7b1cffee9487400b9c1c",
+   "reftest"
+  ],
+  "http/content_length.html": [
+   "5ade7f549fe195af4e897debb4913e07ad237243",
+   "testharness"
+  ],
+  "http/content_length.html.headers": [
+   "c86f164a128d02814744e0456e4588062eb016c8",
+   "support"
+  ],
+  "http/resources/securedimage.py": [
+   "bc4c7a8b5eef0e082a5fa7c8c763957d92730747",
+   "support"
+  ],
   "images/anim-gr.gif": [
    "d348de95f364f6654edc197ac5c72ebd4339f11b",
    "support"
@@ -195121,6 +201089,10 @@
    "3fabcfa40caf9c66bc74bcd83663eddb0f385051",
    "support"
   ],
+  "interfaces/webrtc-pc.idl": [
+   "4f94c4236168ed722f71d81bd957e0da72b29c71",
+   "support"
+  ],
   "longtask-timing/longtask-attributes.html": [
    "a88bd658adcb9ef3dcbfa803397910e531bc864b",
    "testharness"
@@ -195169,6 +201141,18 @@
    "4acb6764c2fb60ad55733c420dfd7c1946542f17",
    "support"
   ],
+  "magnetometer/Magnetometer.https.html": [
+   "4e7d890f37469aecbce415187bb0bcf239dac37b",
+   "testharness"
+  ],
+  "magnetometer/Magnetometer_insecure_context.html": [
+   "9708569b2e2764c973efe31e9f2f4e3de7f7a449",
+   "testharness"
+  ],
+  "magnetometer/Magnetometer_onerror-manual.https.html": [
+   "6adfb807ff2c1b24dad702b21f636e7805543704",
+   "manual"
+  ],
   "magnetometer/idlharness.https-expected.txt": [
    "adc83b19e793491b1c6ea0fd8b46cd9f32e592fc",
    "support"
@@ -195177,6 +201161,10 @@
    "b21217da9dc986e605d172d72a5f4f3e7b2aa216",
    "testharness"
   ],
+  "magnetometer/support-iframe.html": [
+   "4afaea574bcbd68422278c5e093cf6d37ab4f9f1",
+   "support"
+  ],
   "media-capabilities/README.md": [
    "7d6ceec9a74d5485a6f7d51504f22e5eaf81bfee",
    "support"
@@ -195186,7 +201174,7 @@
    "testharness"
   ],
   "media-capabilities/idlharness-expected.txt": [
-   "5dd584ee1063c3f84f1d50fc20f29870e97f9ca7",
+   "af14f23f4acbb383cded87cd505c385c6e2b7567",
    "support"
   ],
   "media-capabilities/idlharness.html": [
@@ -195246,7 +201234,7 @@
    "support"
   ],
   "media-source/interfaces-expected.txt": [
-   "00f357eeb3487d423ad537083a6f95d25f3b8c56",
+   "01312b6a76d9f1dd750d3657690c31504cb40450",
    "support"
   ],
   "media-source/interfaces.html": [
@@ -195774,19 +201762,27 @@
    "support"
   ],
   "mediacapture-fromelement/idlharness-expected.txt": [
-   "2a14bb74d8a729117abffcb33f37a7e5f4e95045",
+   "062e876f46293c80964767dbad631a6ef20b6022",
    "support"
   ],
   "mediacapture-fromelement/idlharness.html": [
    "ceeb48e7982eb88561f4c1630cb0fcf15d9cf73c",
    "testharness"
   ],
+  "mediacapture-image/idlharness-expected.txt": [
+   "7eaa5e273426a8d9b3472cb228091ed90f11a77e",
+   "support"
+  ],
+  "mediacapture-image/idlharness.html": [
+   "7ccf7fcab0344a2e1893e89d7689e2312287b64d",
+   "testharness"
+  ],
   "mediacapture-record/BlobEvent-constructor.html": [
    "29d5649ff97ca0631f8c841425a88248525f9774",
    "testharness"
   ],
   "mediacapture-record/idlharness-expected.txt": [
-   "e04fb8879cf82709e5f6eaa40d1e64918665ef9d",
+   "15c47d282eedba507c099d404e44848b4e4b6e74",
    "support"
   ],
   "mediacapture-record/idlharness.html": [
@@ -195918,7 +201914,7 @@
    "testharness"
   ],
   "mediacapture-streams/MediaStreamTrack-init.https-expected.txt": [
-   "72eff44313d8fb45278de4da064eaa322ff63074",
+   "36aea560450ddb3cbeea30e6b8d3d34a55081699",
    "support"
   ],
   "mediacapture-streams/MediaStreamTrack-init.https.html": [
@@ -195938,7 +201934,7 @@
    "support"
   ],
   "mediasession/idlharness-expected.txt": [
-   "cc2ca247cfee9fd0be5cb80ac1e650d79341485e",
+   "1125d49b762768478de6f0521ec7f2b20983d368",
    "support"
   ],
   "mediasession/idlharness.html": [
@@ -197233,6 +203229,10 @@
    "6a0548ef4b906e539d89940aa791a78bba905262",
    "support"
   ],
+  "mixed-content/imageset.https.sub.html": [
+   "e2005b813384f38b64baec9bc431e25aa61f417f",
+   "testharness"
+  ],
   "mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [
    "9219890ab0efa31e4f2db0646e12882da3a5443d",
    "testharness"
@@ -197609,10 +203609,6 @@
    "2fd556b87de54659b3b02647c24fd4033c134ad7",
    "support"
   ],
-  "navigation-timing/idlharness-expected.txt": [
-   "9ab5ec83962dfe74d44c054b00556545d9ebeec4",
-   "support"
-  ],
   "navigation-timing/idlharness.html": [
    "12635e5ffcc457a3db40ec483ea724f60a2ef59f",
    "testharness"
@@ -197622,7 +203618,7 @@
    "support"
   ],
   "navigation-timing/nav2_idlharness-expected.txt": [
-   "74c2dd20ecb939ba357339312ff83cfc7dbd16d8",
+   "291fda445c50ea3938b8a381b014f1eec5f733cb",
    "support"
   ],
   "navigation-timing/nav2_idlharness.html": [
@@ -197734,11 +203730,11 @@
    "support"
   ],
   "navigation-timing/resources/webperftestharness.js": [
-   "277312011faf560c6333a0810391e0cf50fdb61d",
+   "670154a84de50de0c6b310edfeb23a1f3d0d72d1",
    "support"
   ],
   "navigation-timing/test_document_open.html": [
-   "13e0ed36e865e06060cfb4cf0d3efc6dfc09d684",
+   "627ec3a534f3e6ce030a7f5824a67f26f458b091",
    "testharness"
   ],
   "navigation-timing/test_document_readiness_exist.html": [
@@ -197746,71 +203742,71 @@
    "testharness"
   ],
   "navigation-timing/test_navigate_within_document.html": [
-   "c2a4e7340d17ed4dfbe0899e827a96a733997b7d",
+   "ee8c8581c79be154437e9765885c125d22593b9c",
    "testharness"
   ],
   "navigation-timing/test_navigation_attributes_exist.html": [
-   "1dcf7144e6feb00f58fcfdf3c93b6bc65f49ff09",
+   "a1a9b3ebb814de031920729019d8917ddf906b12",
    "testharness"
   ],
   "navigation-timing/test_navigation_redirectCount_none.html": [
-   "5b6f58efd9837f60f47d5ad1a691c8a183b6020b",
+   "d1308890904883b0a5d684f56b8201f30f8633ff",
    "testharness"
   ],
   "navigation-timing/test_navigation_type_backforward.html": [
-   "39bafd06aab6f52e2e61181554cd5d1c0366c6d6",
+   "5a87b34ea921ef05ee43fe7cc3bdc4d2be56e2fd",
    "testharness"
   ],
   "navigation-timing/test_navigation_type_enums.html": [
-   "65927fa5f352377fee57ff4ed86518f36efc4777",
+   "ca1a454659dd9b0790905ec4ebaa67fee16229c0",
    "testharness"
   ],
   "navigation-timing/test_navigation_type_reload.html": [
-   "861072d2026f3fc4e35c7d3caf568eac2c8225a9",
+   "8b4e1b729a2f97932fe54018c8ea07629fb8ed00",
    "testharness"
   ],
   "navigation-timing/test_no_previous_document.html": [
-   "7cf63a018da4a387b7c1f4599f786b6e0cf3211b",
+   "728aea673231311336585484140f975993198c9b",
    "testharness"
   ],
   "navigation-timing/test_performance_attributes_exist.html": [
-   "93bb823553d23292d6f07b24d8d2e99135b5e75f",
+   "77ce7940ef510aad4545975e717bf5557dbfc948",
    "testharness"
   ],
   "navigation-timing/test_performance_attributes_exist_in_object.html": [
-   "f20d7fca8a279f8df8ba221bf229374a387ce29d",
+   "2ab286b7504e1976d02e6880b758c22fba10ba17",
    "testharness"
   ],
   "navigation-timing/test_readwrite.html": [
-   "f210f135fc9eb2040d81b3855eeccf34cfd81a35",
+   "20507630ddb21872b8eb5f0bca5d62064b8bd0ff",
    "testharness"
   ],
   "navigation-timing/test_timing_attributes_exist.html": [
-   "c7d2b16b357482f0da04662d81f0bc1d9ff6696e",
+   "199aa3389a6a0adf6cb5b18d133c889728cb4411",
    "testharness"
   ],
   "navigation-timing/test_timing_attributes_order.html": [
-   "db411d2ac783d49f059d24697fb0bea5e1b382d0",
+   "7719f088b9ff3bdedb8567ab9eab3f6ca776ecae",
    "testharness"
   ],
   "navigation-timing/test_timing_client_redirect.html": [
-   "6d747b5ea0c0f56bbfa4fdbf44924b40fec39b04",
+   "c6aed0cb03b941e0b8c62a0b086099759b4b25ef",
    "testharness"
   ],
   "navigation-timing/test_timing_reload.html": [
-   "8daff711c794f7e4f9d3f4fb4d2ef6df08df8ff9",
+   "57ba3573d672dbbc60695d049dec39efd5e1feb9",
    "testharness"
   ],
   "navigation-timing/test_timing_server_redirect.html": [
-   "199cd011e687ac74b647c7f1fe5214f965d8f85c",
+   "10b7f221c4667e92a993f0aae70820a95ea445aa",
    "testharness"
   ],
   "navigation-timing/test_timing_xserver_redirect.html": [
-   "f0ff9c47a25b6c6a93c6b5e0ffddc3b78444df14",
+   "a08120e4302c51307fa97de3d521c85c82adb53f",
    "testharness"
   ],
   "navigation-timing/test_unique_performance_objects.html": [
-   "c7d89bf7a3119dbfe9a581f82b5ac43ff6645a64",
+   "b9d933d6a33eabc0b9c9f856c91b802677fa1094",
    "testharness"
   ],
   "notifications/body-basic-manual.html": [
@@ -197865,10 +203861,6 @@
    "0d1c3d540163dc596080f7c09291d41a41f5c9b9",
    "testharness"
   ],
-  "notifications/interfaces-expected.txt": [
-   "76c9a1418837227cbe3dfc5256cdcc5ffc9c6493",
-   "support"
-  ],
   "notifications/interfaces.html": [
    "0a653fc93d0d01761fb642d426461130134d9cbf",
    "testharness"
@@ -197913,6 +203905,10 @@
    "f31d50ead567908aab1d1dad577eb06c912c97f3",
    "manual"
   ],
+  "orientation-event/OWNERS": [
+   "6a0960087150c96612bb8760ca687a7722627a79",
+   "support"
+  ],
   "orientation-event/devicemotionevent-init.html": [
    "fab191bbebab21f696fefc0ad9e8110b99855eee",
    "testharness"
@@ -197938,7 +203934,7 @@
    "manual"
   ],
   "orientation-event/idlharness-expected.txt": [
-   "403db3c048083e01063e8da5babae300c35e9df0",
+   "0ed66e5c56365883369a9dd2f6f9f318d04e511c",
    "support"
   ],
   "orientation-event/idlharness.html": [
@@ -198001,6 +203997,10 @@
    "6948dbbdc88ffd9aa84ad5a6c822b354809561b2",
    "manual"
   ],
+  "orientation-sensor/idlharness.https-expected.txt": [
+   "adc83b19e793491b1c6ea0fd8b46cd9f32e592fc",
+   "support"
+  ],
   "orientation-sensor/idlharness.https.html": [
    "049b5e9505165723cec70237e2ae5f0e2c7948f0",
    "testharness"
@@ -198077,14 +204077,14 @@
    "c0c611a34326ac2eba18e48d640aa358deaae551",
    "testharness"
   ],
-  "payment-request/interfaces.https-expected.txt": [
-   "40a3d4893d2ad82a2569bb008fd670b6b5374155",
-   "support"
-  ],
   "payment-request/interfaces.https.html": [
    "29af302db74de64e2bd1352ad92092a309d28c92",
    "testharness"
   ],
+  "payment-request/payment-request-constructor.https.html": [
+   "b9e425c8169460535f344a23af4d52fdfa7daed3",
+   "testharness"
+  ],
   "payment-request/payment-request-id.https.html": [
    "3e74f97fdf39bb1ca9f2cb5596155705cd15b5b0",
    "testharness"
@@ -198097,6 +204097,10 @@
    "88df88efdb1d44b56ac9758295f2e2920ae6c9ff",
    "support"
   ],
+  "payment-request/payment-request-show-method.https.html": [
+   "026e28265a88be54a56e2dadc0fb485303864dfc",
+   "testharness"
+  ],
   "pointerevents/README.md": [
    "91a8bd86357b0d96ba3ab8f08f88c28436de484c",
    "support"
@@ -198105,10 +204109,6 @@
    "cba44e2dd2a3c54106bfecc6cdd407643e2ba995",
    "manual"
   ],
-  "pointerevents/extension/idlharness-expected.txt": [
-   "419c5106c9d9d41689bdf0bcc5480e191adb9e05",
-   "support"
-  ],
   "pointerevents/extension/idlharness.html": [
    "64ed6d6c201773f0b5ab4b81369a2d601fe3363a",
    "testharness"
@@ -198125,10 +204125,6 @@
    "2af9a0d673339553ddfd30433c569f42b4803c22",
    "testharness"
   ],
-  "pointerevents/idlharness-expected.txt": [
-   "8db80f38011d2ae4ceacd2040db42d3edce9c787",
-   "support"
-  ],
   "pointerevents/idlharness.html": [
    "6ca74eb661910c27ed6cb8bbbb819b749007a75f",
    "testharness"
@@ -198405,6 +204401,54 @@
    "69023fcb8dcd5701d084e66c7b72ce121dc3435c",
    "support"
   ],
+  "pointerlock/constructor.html": [
+   "6b77dd2bd357f9e902846b9f96059537dda35b3e",
+   "testharness"
+  ],
+  "pointerlock/idlharness.html": [
+   "c2def90f67a355efc490ace9a27d873b87edb531",
+   "testharness"
+  ],
+  "pointerlock/movementX_Y_basic-manual.html": [
+   "b8567207aa3112562738cc6ffd2f2e5e2af652c5",
+   "manual"
+  ],
+  "pointerlock/movementX_Y_no-jumps-manual.html": [
+   "a58e494ab143d0658535cb571acbf85544c52c51",
+   "manual"
+  ],
+  "pointerlock/pointerlock_basic-manual.html": [
+   "4914806f0c1dc76a630dc82a8a0ee9ceacef06b4",
+   "manual"
+  ],
+  "pointerlock/pointerlock_fullscreen-manual.html": [
+   "c6cf680894c699d610716dfce34e8c67d0917498",
+   "manual"
+  ],
+  "pointerlock/pointerlock_indefinite-manual.html": [
+   "d52319bd8c660491ac5528ae90aece83a2cf5642",
+   "manual"
+  ],
+  "pointerlock/pointerlock_leave_Tab-manual.html": [
+   "41b0799807f5b7d88ebfc1e819ef10b5d4194aaf",
+   "manual"
+  ],
+  "pointerlock/pointerlock_leave_UA-manual.html": [
+   "3794be5ea066cb99e32a5669f3e5d08b9732159d",
+   "manual"
+  ],
+  "pointerlock/pointerlock_remove_target-manual.html": [
+   "6262b231ca8af095dee42c493e77662ee132dc05",
+   "manual"
+  ],
+  "pointerlock/pointerlock_remove_target_on_mouseup-manual.html": [
+   "21bba49e139c491f29d3a04c72601d688dfe5977",
+   "manual"
+  ],
+  "pointerlock/pointerlock_shadow-manual.html": [
+   "9e687345acc5b9966172bab7da04e3e7019e34c5",
+   "manual"
+  ],
   "preload/avoid-delaying-onload-link-preload.html": [
    "7f7c89ffad6f9bc2909d56e36b238ffcba260849",
    "testharness"
@@ -198497,6 +204541,30 @@
    "3ee15736925ad7eed449ff3074353140598461bd",
    "testharness"
   ],
+  "progress-events/Status.html": [
+   "2f34189d3c5515acab1431c80e4e97392a8afcc1",
+   "support"
+  ],
+  "progress-events/constructor.html": [
+   "d38d6eebf28444181dfc59b49ee348845d06ff0c",
+   "testharness"
+  ],
+  "progress-events/interface.html": [
+   "a614d8381b4fa9d04aef6c2a08889451b1b086a2",
+   "testharness"
+  ],
+  "progress-events/tests/submissions/Samsung/firing-events-http-content-length.html": [
+   "2788ec7607b0d75049e84ea0edc75afe71bcb002",
+   "testharness"
+  ],
+  "progress-events/tests/submissions/Samsung/firing-events-http-no-content-length.html": [
+   "9e5fbf0716e1a1ba3c0628ea2c1bc807d6819a9d",
+   "testharness"
+  ],
+  "progress-events/tests/submissions/Samsung/resources/no-content-length.py": [
+   "1a6c21ff409b1c16a45a58d1fafd1c8da28ce7c5",
+   "support"
+  ],
   "quirks-mode/blocks-ignore-line-height.html": [
    "01c5b2e89c88d4145429e8860eaa88f728d0601b",
    "testharness"
@@ -205973,6 +212041,82 @@
    "3d220a3cc0e6a05fbc40c0ab0e46a2e60162b2be",
    "testharness"
   ],
+  "secure-contexts/basic-dedicated-worker.html": [
+   "075f4170b133fe13e282ff5450871ef7960faf50",
+   "testharness"
+  ],
+  "secure-contexts/basic-dedicated-worker.https.html": [
+   "05beced009e36f577a1393f80198158f3d37063c",
+   "testharness"
+  ],
+  "secure-contexts/basic-popup-and-iframe-tests.html": [
+   "4141fa0e0eef64d170ce787bd6eb03b516d3af0a",
+   "testharness"
+  ],
+  "secure-contexts/basic-popup-and-iframe-tests.https.html": [
+   "cfa4222d01a569ca8619d9cb37f7ddb48d92bcb6",
+   "testharness"
+  ],
+  "secure-contexts/basic-popup-and-iframe-tests.https.js": [
+   "69573c7565eacce1d1069f8ae116615340d404c2",
+   "support"
+  ],
+  "secure-contexts/basic-shared-worker.html": [
+   "c9e83a73d9dfdf9880bc27f5f9ae5c20c918715d",
+   "testharness"
+  ],
+  "secure-contexts/basic-shared-worker.https.html": [
+   "7241035c47bc2a0251826d2c9ad3bc5f9acd61d2",
+   "testharness"
+  ],
+  "secure-contexts/postMessage-helper.html": [
+   "8b5438e8ff88bd322c5231b5116128f50652f43b",
+   "support"
+  ],
+  "secure-contexts/postMessage-helper.https.html": [
+   "8b5438e8ff88bd322c5231b5116128f50652f43b",
+   "support"
+  ],
+  "secure-contexts/server-locations.sub.js": [
+   "557c6bc670e807004ca08df15af14ca9edaa26aa",
+   "support"
+  ],
+  "secure-contexts/shared-worker-insecure-first.https.html": [
+   "81c9cd152b620dd70b11b72db021f4324dad16fa",
+   "testharness"
+  ],
+  "secure-contexts/shared-worker-secure-first.https.html": [
+   "38c411b3a8fa1acf9d87e4f68c58a52f54c3d379",
+   "testharness"
+  ],
+  "secure-contexts/support/dedicated-worker-script.js": [
+   "6065750183241c13c29697a5f4a87f35a0116877",
+   "support"
+  ],
+  "secure-contexts/support/https-subframe-dedicated.html": [
+   "5a9c1cee739efbad41f2ef6c4d70eda1f7b01646",
+   "support"
+  ],
+  "secure-contexts/support/https-subframe-shared.html": [
+   "805fdd9f814c8486845165830353472830df3c35",
+   "support"
+  ],
+  "secure-contexts/support/parent-dedicated-worker-script.js": [
+   "f30fd69030eb48c6d98f07f0f61cf7c75410991f",
+   "support"
+  ],
+  "secure-contexts/support/parent-shared-worker-script.js": [
+   "fe110557d01f13b1b62606bf39d4ed54ebb5eb23",
+   "support"
+  ],
+  "secure-contexts/support/shared-worker-insecure-popup.html": [
+   "5e5d40fe3b0a7d9b40fb272bb582772a7b36f716",
+   "support"
+  ],
+  "secure-contexts/support/shared-worker-script.js": [
+   "c9b3ac77b8c62131dbe0f7228071fc6bf5e5e838",
+   "support"
+  ],
   "selection/Document-open.html": [
    "31a5ee7a3619c62dbd35eafb66725bf4192639a0",
    "testharness"
@@ -206101,12 +212245,8 @@
    "4b5b638ae5cdaab02fbe9cca255a119134238a7d",
    "testharness"
   ],
-  "selection/interfaces-expected.txt": [
-   "db570dc214d7d94698ee7215f8ea35d6e8f23bb5",
-   "support"
-  ],
   "selection/interfaces.html": [
-   "dc08fae99f9b481a63ed5f78aa8b32eeaba28b35",
+   "55d32a5d2a362a2d7bd0ddc580fa24180f3d3579",
    "testharness"
   ],
   "selection/isCollapsed.html": [
@@ -206117,6 +212257,10 @@
    "bd203d8878c4de59de476fe6fa7417bd2678dfcc",
    "testharness"
   ],
+  "selection/removeRange-expected.txt": [
+   "97ec1164fdadc8db7737ad502dc2c9ed5ef7594a",
+   "support"
+  ],
   "selection/removeRange.html": [
    "4a1ca00b32bca658f31bbff3f01a0d9154fb9779",
    "testharness"
@@ -206141,8 +212285,32 @@
    "01ae6e757d428800555012783e290ebba575bcab",
    "testharness"
   ],
+  "server-timing/resources/blue.png": [
+   "7de5cdb5ad04ac365430b3b5f5ba01d2ba57ea23",
+   "support"
+  ],
+  "server-timing/resources/blue.png.sub.headers": [
+   "d14ff7ce6dce67417c14192a89f4fe2d31c099a7",
+   "support"
+  ],
+  "server-timing/resources/green.png": [
+   "ef91d21307a12b2cfaf33a90dffe16aa1cba42c9",
+   "support"
+  ],
+  "server-timing/resources/green.png.sub.headers": [
+   "e2fca01ea5a9c31731a1d5c4199849bf728da892",
+   "support"
+  ],
+  "server-timing/test_server_timing.html": [
+   "eab2a2be6984346d7fd83c8f3dcc99b2f3e09a08",
+   "testharness"
+  ],
+  "server-timing/test_server_timing.html.sub.headers": [
+   "c49030e9c6dabb55bff24b633b6660212bd2ecca",
+   "support"
+  ],
   "service-workers/OWNERS": [
-   "a41253fffa75a8aa9853bbc73c7107c94010f6a0",
+   "60cf1cd159aab93b711db350b6ee52e08e6cdf01",
    "support"
   ],
   "service-workers/cache-storage/common.https.html": [
@@ -206522,7 +212690,7 @@
    "testharness"
   ],
   "service-workers/service-worker/client-navigate.https.html": [
-   "e0c704605ec008a29662e1804d512284899ddd6f",
+   "c0403a4538bf063745a59f5848e30b13d1b3afc1",
    "testharness"
   ],
   "service-workers/service-worker/clients-get-client-types.https.html": [
@@ -206630,11 +212798,11 @@
    "testharness"
   ],
   "service-workers/service-worker/fetch-event-async-respond-with.https.html": [
-   "6ea721f98b2d145eeeb07b762901b9cfa1b51fbd",
+   "00c90429203c85ae8f10a6a6604cdf9619524f06",
    "testharness"
   ],
   "service-workers/service-worker/fetch-event-network-error.https.html": [
-   "ee1cd2ed2c3204af53422116289c558f5eff68d9",
+   "07b81a0af207ee0723a9abae90e49482701f8935",
    "testharness"
   ],
   "service-workers/service-worker/fetch-event-redirect.https-expected.txt": [
@@ -206645,8 +212813,12 @@
    "2a6f2d4f818ac325edd9c69c1b08801961728b20",
    "testharness"
   ],
+  "service-workers/service-worker/fetch-event-respond-with-argument.https.html": [
+   "ce7e7cf76aace24a92d455cdb6b54fc9048960e8",
+   "testharness"
+  ],
   "service-workers/service-worker/fetch-event-respond-with-stops-propagation.https.html": [
-   "2feaa5022ee31fb980f97075d932b0d87d6efe75",
+   "7d9e18d316c74f2b887f01a4576eb14b10d99b14",
    "testharness"
   ],
   "service-workers/service-worker/fetch-event-throws-after-respond-with.https.html": [
@@ -206666,11 +212838,11 @@
    "testharness"
   ],
   "service-workers/service-worker/fetch-event.https-expected.txt": [
-   "eacfa942f91037514c56d7d379897bd578aa2cfd",
+   "cf9a7058ac5946c1dd84596db1ac2f9c74f3e203",
    "support"
   ],
   "service-workers/service-worker/fetch-event.https.html": [
-   "2b3d7086eb6733d81c7b06516721b655d853682d",
+   "9f991210c315a2d436f760b099a43871692c64c4",
    "testharness"
   ],
   "service-workers/service-worker/fetch-frame-resource.https.html": [
@@ -206682,11 +212854,11 @@
    "testharness"
   ],
   "service-workers/service-worker/fetch-mixed-content-to-inscope.https.html": [
-   "e3035bdf8cec65bb0322b5dfce10a3a827bd415e",
+   "c9bc425bca04f96866b14a2d89ae9dbfcc900d5a",
    "testharness"
   ],
   "service-workers/service-worker/fetch-mixed-content-to-outscope.https.html": [
-   "45a83eeeb922301fc399a4808bb4d1014a541733",
+   "e48ab49326706532a754268211586f7a29f71ddb",
    "testharness"
   ],
   "service-workers/service-worker/fetch-request-css-base-url.https.html": [
@@ -206701,6 +212873,10 @@
    "60dcb3a4c3b3ca2e79adfc7b779724cbe3ffa1c4",
    "testharness"
   ],
+  "service-workers/service-worker/fetch-request-html-imports.https.html": [
+   "b854db3540539d20aa0bef0f869edabd0b8b4d47",
+   "testharness"
+  ],
   "service-workers/service-worker/fetch-request-no-freshness-headers.https.html": [
    "9631947d3cec78547bd4666b8ca970d037648cc8",
    "testharness"
@@ -206714,13 +212890,17 @@
    "support"
   ],
   "service-workers/service-worker/fetch-request-resources.https.html": [
-   "5ae2d1ae4eec846002635d6ff8d9d7c9a2aebd3f",
+   "cb072581704868845fe1ec57b3e7c70d53bac543",
    "testharness"
   ],
   "service-workers/service-worker/fetch-request-xhr.https.html": [
    "840aafe30e5a0c8129c05e3b311084b8c00267a6",
    "testharness"
   ],
+  "service-workers/service-worker/fetch-response-taint.https.html": [
+   "217383b4dddcc6f984c4cc7cd5f99e1f9b86cdd1",
+   "testharness"
+  ],
   "service-workers/service-worker/fetch-response-xhr.https.html": [
    "6d50c69d78a1eb077108209b94fdf0efe540883d",
    "testharness"
@@ -206750,7 +212930,19 @@
    "testharness"
   ],
   "service-workers/service-worker/getregistrations.https.html": [
-   "d76c66c08bd5c1addbdb149447f2268ac52ffcb2",
+   "15c2be991ec5b02a0aecf54e6c7bb455f240141d",
+   "testharness"
+  ],
+  "service-workers/service-worker/import-scripts-resource-map.https.html": [
+   "6bc46467c667f942fd30de063806474e8c94cff0",
+   "testharness"
+  ],
+  "service-workers/service-worker/import-scripts-updated-flag.https-expected.txt": [
+   "ad2763c9ca9eff1c4bd462256a63282e13ea378f",
+   "support"
+  ],
+  "service-workers/service-worker/import-scripts-updated-flag.https.html": [
+   "e902940bec870cf548c576b5fd06d2e71fd3f97a",
    "testharness"
   ],
   "service-workers/service-worker/indexeddb.https.html": [
@@ -206766,7 +212958,7 @@
    "testharness"
   ],
   "service-workers/service-worker/interfaces.https.html": [
-   "9153cc6536203170ba8d2189d7646200a1ded72e",
+   "f5e18c249ad8264548923f3c875ffeff523ab424",
    "testharness"
   ],
   "service-workers/service-worker/invalid-blobtype.https.html": [
@@ -207017,10 +213209,6 @@
    "7c49ce1c6170733033add6253a3f4a7e0483452e",
    "testharness"
   ],
-  "service-workers/service-worker/registration-useCache.https.html": [
-   "73d662eafa93ca3dee4a4e5d34623cf069c2b8f8",
-   "testharness"
-  ],
   "service-workers/service-worker/registration.https-expected.txt": [
    "36309067df5ff56185b6618affe450f7c298daaf",
    "support"
@@ -207034,7 +213222,7 @@
    "testharness"
   ],
   "service-workers/service-worker/request-end-to-end.https.html": [
-   "0f7bee59205515c72ae6d4aa1f408e8414f9659a",
+   "e141f4daca379d95b8be9ebe16a2475a41f3c6f5",
    "testharness"
   ],
   "service-workers/service-worker/resource-timing.https-expected.txt": [
@@ -207086,7 +213274,7 @@
    "support"
   ],
   "service-workers/service-worker/resources/client-navigate-worker.js": [
-   "6b277e1dcde40babec32046f9e637a47830bf29b",
+   "876f60f8c7112cc0a7a2df2fe2b298a3c9504214",
    "support"
   ],
   "service-workers/service-worker/resources/client-navigated-frame.html": [
@@ -207237,12 +213425,20 @@
    "f24007259baeab7e9a6932d35e0b2a5305b159a4",
    "support"
   ],
+  "service-workers/service-worker/resources/fetch-event-respond-with-argument-iframe.html": [
+   "4a9d7e189909b5adfdd4d1c0ebddb7cd90fde159",
+   "support"
+  ],
+  "service-workers/service-worker/resources/fetch-event-respond-with-argument-worker.js": [
+   "b58b92a145a89f71c414de5e837c1db026beb1d6",
+   "support"
+  ],
   "service-workers/service-worker/resources/fetch-event-respond-with-stops-propagation-worker.js": [
    "900fd1c2080fbb386589f7d6ee52c49da9d4fcb8",
    "support"
   ],
   "service-workers/service-worker/resources/fetch-event-test-worker.js": [
-   "ca79da139169762737411cb6cffb66b55b901d04",
+   "f9eab9a493f43ec5a8a662815a979e70fb3e3900",
    "support"
   ],
   "service-workers/service-worker/resources/fetch-event-within-sw-worker.js": [
@@ -207285,6 +213481,14 @@
    "5195f7d76f6c77bd167c9192a0386c2f8b7863c1",
    "support"
   ],
+  "service-workers/service-worker/resources/fetch-request-html-imports-iframe.html": [
+   "5828ad5fc04c9116419afe0ed02383b70b61c956",
+   "support"
+  ],
+  "service-workers/service-worker/resources/fetch-request-html-imports-worker.js": [
+   "bb18b72ad06bf2ee179883e1e5df6cc8a9329d36",
+   "support"
+  ],
   "service-workers/service-worker/resources/fetch-request-no-freshness-headers-iframe.html": [
    "6da48549aa02c25ffed99c9bdf3549e109f62e60",
    "support"
@@ -207298,11 +213502,11 @@
    "support"
   ],
   "service-workers/service-worker/resources/fetch-request-resources-iframe.https.html": [
-   "0023475ba862c10277efb63a18275a79facdd9c2",
+   "95bcbc6a2f4560788f77fa717fa06d7d018d99c6",
    "support"
   ],
   "service-workers/service-worker/resources/fetch-request-resources-worker.js": [
-   "db66bb2ec1cb1b70e1dddc50748ff134e623e401",
+   "4512140fe37ffd78086f54c6b0f6213675c0d74f",
    "support"
   ],
   "service-workers/service-worker/resources/fetch-request-xhr-iframe.https.html": [
@@ -207313,6 +213517,10 @@
    "fcbb50668ec1a3f7bdbd4331babda5b6e0295f2e",
    "support"
   ],
+  "service-workers/service-worker/resources/fetch-response-taint-iframe.html": [
+   "ce934e0f8f0a77ce236053f17c57f22bc44e4c27",
+   "support"
+  ],
   "service-workers/service-worker/resources/fetch-response-xhr-iframe.https.html": [
    "8bef6d586f438fa912c7e40ac82a5aa73e05706a",
    "support"
@@ -207365,6 +213573,22 @@
    "7881cd81f7fe54bf3be799f3549098c78b896574",
    "support"
   ],
+  "service-workers/service-worker/resources/import-scripts-echo.py": [
+   "95d29c9b8749cabf795d9a867e260827a8360640",
+   "support"
+  ],
+  "service-workers/service-worker/resources/import-scripts-resource-map-worker.js": [
+   "bafc81b044c2a52f4ceefcd15a0b8b3c7553146e",
+   "support"
+  ],
+  "service-workers/service-worker/resources/import-scripts-updated-flag-worker.js": [
+   "b83d48b7ed268293b4788e36bcd7293b1b15e751",
+   "support"
+  ],
+  "service-workers/service-worker/resources/import-scripts-version.py": [
+   "1f508292f99f22a8b4105658ebdb9568d46d2004",
+   "support"
+  ],
   "service-workers/service-worker/resources/indexeddb-worker.js": [
    "ed0ff45423ba74ad0b82e46debd865fdae2fbcb6",
    "support"
@@ -207378,7 +213602,7 @@
    "support"
   ],
   "service-workers/service-worker/resources/interfaces-worker.sub.js": [
-   "67190b30c485fe743de1515fe5c593aad584fcb3",
+   "c94ee8dee0233f31c4f1577bf8b4bda5d2be2209",
    "support"
   ],
   "service-workers/service-worker/resources/interfaces.js": [
@@ -207641,14 +213865,6 @@
    "cc8130f60240234fa216778dac70dd34fe4b2374",
    "support"
   ],
-  "service-workers/service-worker/resources/update-max-aged-worker-imported-script.py": [
-   "23fa131d0d35e0e5394100b4bfaa5ebf1a349b4b",
-   "support"
-  ],
-  "service-workers/service-worker/resources/update-max-aged-worker.py": [
-   "384ab2835ccb57316d59a911af57ba8638b26ad0",
-   "support"
-  ],
   "service-workers/service-worker/resources/update-nocookie-worker.py": [
    "0790be63a2023cccf03f84b2e5c8f5daa7958dd0",
    "support"
@@ -207714,11 +213930,11 @@
    "testharness"
   ],
   "service-workers/service-worker/skip-waiting-installed.https.html": [
-   "d668e51387bb680aeb0508a52f4fe73cbc56a552",
+   "8fb4d399affcfcc24b541e63390a94edf64bb771",
    "testharness"
   ],
   "service-workers/service-worker/skip-waiting-using-registration.https.html": [
-   "3418673911e8c1424f67f5a6ff1f0370a9fa7e26",
+   "140a5a9c801c9d65a0fda0ea341fa00035fad1f8",
    "testharness"
   ],
   "service-workers/service-worker/skip-waiting-without-client.https.html": [
@@ -207726,11 +213942,11 @@
    "testharness"
   ],
   "service-workers/service-worker/skip-waiting-without-using-registration.https.html": [
-   "2460eb074582e031701732392dd9cfc8b771816a",
+   "fbae21429467d4a19b6020542460a3ad465def63",
    "testharness"
   ],
   "service-workers/service-worker/skip-waiting.https.html": [
-   "4f00e2fbd9c5520cabcc019c68f7f1de50221cca",
+   "67ce73166e334af7658179373a6dbb8cdc48f230",
    "testharness"
   ],
   "service-workers/service-worker/state.https.html": [
@@ -208133,8 +214349,12 @@
    "fa2864cbf8e88250a793beeacf737c7d9413cdf2",
    "testharness"
   ],
+  "shadow-dom/slots-fallback-in-document-expected.txt": [
+   "df1bede4470827f16261fb3bc7ab913a2335fab6",
+   "support"
+  ],
   "shadow-dom/slots-fallback-in-document.html": [
-   "75a8644216c1c9e3303e7d8ce622091443265f91",
+   "eac2fee4991725b4d2ca104a586c02d109b7d721",
    "testharness"
   ],
   "shadow-dom/slots-fallback.html": [
@@ -208481,10 +214701,6 @@
    "bc28599cea839c13daf4739168f8c1ea42526050",
    "testharness"
   ],
-  "staticrange/idlharness-expected.txt": [
-   "e522301af84363895b14bf2c9ca54c206a9ee3e7",
-   "support"
-  ],
   "staticrange/idlharness.html": [
    "16f30a68d97edf19c5255328fd1460ac54a4c025",
    "testharness"
@@ -208501,10 +214717,6 @@
    "6e5db2d0c2f5d2d8f1e2d04da953a3f2c50bec7a",
    "testharness"
   ],
-  "storage/interfaces.https-expected.txt": [
-   "9a8cf2bf1a59ee18acdb7207a0a8fb625ec4287c",
-   "support"
-  ],
   "storage/interfaces.https.html": [
    "76fa61c3a87485266a7f9d6f66e5d08bb7881ff7",
    "testharness"
@@ -208521,6 +214733,18 @@
    "6ce5a9b14d80030f0adfa1808857294e8c923cb2",
    "testharness"
   ],
+  "storage/persist-permission-manual.https.html": [
+   "6b7c0b9d5c8cee3922f6797dace85b441e5ea45c",
+   "manual"
+  ],
+  "storage/persisted-worker.https.html": [
+   "87d7bf4c615b07b3fa701239fc1823826a054e80",
+   "testharness"
+  ],
+  "storage/persisted.https.html": [
+   "98be04abdc48c76b30f90af007f214f9759083dd",
+   "testharness"
+  ],
   "storage/resources/storagemanager-persist-worker.js": [
    "a9d24b2477938410371bae881a05a68cd56fe72e",
    "support"
@@ -208533,6 +214757,10 @@
    "660d3d068314c34d215df19c0b849ec711f57854",
    "support"
   ],
+  "storage/storage-persisted.js": [
+   "dbf6e5bed3dec6ca59926c439ec9d6aca89d78b9",
+   "support"
+  ],
   "storage/storagemanager-estimate.https.html": [
    "6319416d647f1671a7b8d36bbb4d79495e76a956",
    "testharness"
@@ -209506,11 +215734,11 @@
    "testharness"
   ],
   "svg/interfaces-expected.txt": [
-   "10ee15299c71512ab720319784db50f62ac6c794",
+   "6e6a5e5a7d27f75d7fb8f99fcdc954212bc8b816",
    "support"
   ],
   "svg/interfaces.html": [
-   "af04368e73b54ea570eba5fa483d3b1eeb462b17",
+   "0c355e7adc334d000991f4181d3bf254302eb915",
    "testharness"
   ],
   "svg/linking/reftests/href-a-element-attr-change.html": [
@@ -210013,6 +216241,114 @@
    "4e49ff6d795fff54bc14069ab4f6f5fb5270f1c8",
    "testharness"
   ],
+  "url/README.md": [
+   "165b2a70da8bc2a7df3fe424a540f36b4f7be899",
+   "support"
+  ],
+  "url/a-element-origin-xhtml.xhtml": [
+   "56019fd2d3870324ba412e3e0c602bad3b90ef49",
+   "testharness"
+  ],
+  "url/a-element-origin.html": [
+   "9e93740286ed4f6964b13861eedaf94705572d60",
+   "testharness"
+  ],
+  "url/a-element-origin.js": [
+   "db3ac8253d1d877c49e365f89eea0ed1a5bad32e",
+   "support"
+  ],
+  "url/a-element-xhtml.xhtml": [
+   "3c85e56094317c6babc96bdc187ee66ee4f040cd",
+   "testharness"
+  ],
+  "url/a-element.html": [
+   "f1e6c1192c181236eb9bd32ead4f42338d020577",
+   "testharness"
+  ],
+  "url/a-element.js": [
+   "cf3fd382286fe89570e68e0d90131db35e03e6ef",
+   "support"
+  ],
+  "url/failure.html": [
+   "908456e354703473b0806bbdac6d60216505905f",
+   "testharness"
+  ],
+  "url/historical.any.js": [
+   "89dd0f84e69896c802c7a2062c9f4846cdca98c6",
+   "testharness"
+  ],
+  "url/interfaces.html": [
+   "25e16a1f57ab1acbb19a3b3acc77fccc3facf6cd",
+   "testharness"
+  ],
+  "url/setters_tests.json": [
+   "6e388e46caf1a0259a6dc6778e7b33619e389751",
+   "support"
+  ],
+  "url/url-constructor.html": [
+   "478523551e13b4066293fc2244972dd82b9bd87f",
+   "testharness"
+  ],
+  "url/url-origin.html": [
+   "84a487b251a9f6dd320bf793050d1e43ae933ed9",
+   "testharness"
+  ],
+  "url/url-setters.html": [
+   "f9746a232f2047deb0bf0b5a73376a69b0ec14e2",
+   "testharness"
+  ],
+  "url/url-tojson.html": [
+   "d961e88b6976933599ec06b1a2b6da6f200c150b",
+   "testharness"
+  ],
+  "url/urlencoded-parser.html": [
+   "4eb385fec2e8cbd3e65dbf36edb47a6f2beb0de8",
+   "testharness"
+  ],
+  "url/urlsearchparams-append.html": [
+   "df184eb089b0e639b96e901b10179cc4051f887e",
+   "testharness"
+  ],
+  "url/urlsearchparams-constructor.html": [
+   "854e06efa9598f66705605bdef20c4a500ab2e9b",
+   "testharness"
+  ],
+  "url/urlsearchparams-delete.html": [
+   "eaeaab453fb90ba939c4dca0db11a07d50acce26",
+   "testharness"
+  ],
+  "url/urlsearchparams-foreach.html": [
+   "5bdc17d623884a8916681f19df55c4bef5965ff2",
+   "testharness"
+  ],
+  "url/urlsearchparams-get.html": [
+   "33ae86cc4d7ae13385f3501dbe309562ecf965e8",
+   "testharness"
+  ],
+  "url/urlsearchparams-getall.html": [
+   "0d7b0ec7e984048ed87f2ea2967bac413a55858e",
+   "testharness"
+  ],
+  "url/urlsearchparams-has.html": [
+   "149f1a71e64135460f627bfc569f93a0dae18d73",
+   "testharness"
+  ],
+  "url/urlsearchparams-set.html": [
+   "2a540fed628b86c8a59766a83c57fbb3e73dd620",
+   "testharness"
+  ],
+  "url/urlsearchparams-sort.html": [
+   "6a3904b5dada6b1e071b16529e75c6ce18ce45d6",
+   "testharness"
+  ],
+  "url/urlsearchparams-stringifier.html": [
+   "cac1f9bb91c391110bccdab2d8faab43a9232040",
+   "testharness"
+  ],
+  "url/urltestdata.json": [
+   "f99eff3fa00a813fc77deaee2d2c08a19df10af9",
+   "support"
+  ],
   "user-timing/clear_all_marks.any.js": [
    "61961fe36a9d1f9492ad0d54ab46dbd95202bc84",
    "testharness"
@@ -210041,10 +216377,6 @@
    "bb08ac2ee06bc12e75cc44b76f06d3f0262f44ba",
    "testharness"
   ],
-  "user-timing/idlharness-expected.txt": [
-   "b40603fa131e36bf00ca21384e0f7d5ed527bc22",
-   "support"
-  ],
   "user-timing/idlharness.html": [
    "b24d4d5faf5df5d67135560d5fe362cc6d72c28f",
    "testharness"
@@ -210074,7 +216406,7 @@
    "testharness"
   ],
   "user-timing/measure.html": [
-   "9b753ac314aabc2e4ec6aee7381b956e7f345b78",
+   "8374bbae73ac549b6c8b953d25948ed33b579591",
    "testharness"
   ],
   "user-timing/measure_exceptions_navigation_timing.html": [
@@ -210082,7 +216414,7 @@
    "testharness"
   ],
   "user-timing/measure_navigation_timing.html": [
-   "9bc61c9ae7d5c83f883270c98db6cd088bb0ecd2",
+   "b54bbb96f5c24b61e4d64a3633229781213d9cd2",
    "testharness"
   ],
   "user-timing/measure_syntax_err.any.js": [
@@ -210090,7 +216422,7 @@
    "testharness"
   ],
   "user-timing/resources/webperftestharness.js": [
-   "8b534ce21f036d46da0183bd36676c7b0a2f468d",
+   "b1f81236de54467168bd09d749c2a6f453c5c3e1",
    "support"
   ],
   "user-timing/resources/webperftestharnessextension.js": [
@@ -210101,6 +216433,62 @@
    "b042938e492c9017402e07d3a551d503ec32fa91",
    "testharness"
   ],
+  "vibration/api-is-present.html": [
+   "0c3c74860bfa27bcdc22a29fe97aa1459a05148f",
+   "testharness"
+  ],
+  "vibration/cancel-when-hidden-manual.html": [
+   "919d3a12fe1ae0b518f7a69a50bd95aaf06c4cd5",
+   "manual"
+  ],
+  "vibration/cancel-with-0-manual.html": [
+   "98eeadb226d27685907319f364ac4091a962d995",
+   "manual"
+  ],
+  "vibration/cancel-with-array-0-manual.html": [
+   "64a3b25d44cfe5773254ebdc6e22705177fb1eef",
+   "manual"
+  ],
+  "vibration/cancel-with-empty-array-manual.html": [
+   "c5cb3390f2ba8af94f4f35398caa29b8f3c7c852",
+   "manual"
+  ],
+  "vibration/cancel-with-new-manual.html": [
+   "4efea60445ee5349e58077cc06184f95d8c969af",
+   "manual"
+  ],
+  "vibration/idl.html": [
+   "3d0038cd553484f527c2642284cba84adabf5f22",
+   "testharness"
+  ],
+  "vibration/invalid-values.html": [
+   "52dda7cccc18982483eaba6fd3e8d8ebcb4155fd",
+   "testharness"
+  ],
+  "vibration/pattern-array-extra-manual.html": [
+   "48f43b7ddc69b0cedb1f3077212ec554c0d5a818",
+   "manual"
+  ],
+  "vibration/pattern-array-manual.html": [
+   "cb86e49638093e65b0660982649733e96fa9c813",
+   "manual"
+  ],
+  "vibration/pattern-array-with-0-manual.html": [
+   "ce0e6f0374c75ca7f6067fb837580ed850de30af",
+   "manual"
+  ],
+  "vibration/silent-ignore.html": [
+   "bfa8b3fd032dcddf8b2fb6ea83d449b15c74b6fb",
+   "testharness"
+  ],
+  "vibration/simple-array-manual.html": [
+   "ae52d64dfea4e39179595d565f86c6a3a0fae756",
+   "manual"
+  ],
+  "vibration/simple-scalar-manual.html": [
+   "f6ae98a534bfc2d0b57ef11f8f1ebb3d72629c3c",
+   "manual"
+  ],
   "web-animations/README.md": [
    "d6cb0e31dc3cc6d83b5051cee38a0b8e118fd43f",
    "support"
@@ -210118,11 +216506,11 @@
    "testharness"
   ],
   "web-animations/animation-model/animation-types/property-list.js": [
-   "09135b91237467c4fbeeda3fd7b4d459a82ff4fb",
+   "2843e53e0bf500d529062dce14889693fdf9f58a",
    "support"
   ],
   "web-animations/animation-model/animation-types/property-types.js": [
-   "ebccba780b163032d4aba54cdbbf1b892464bcfa",
+   "b42366e9ef71bc6671543a05a85a5b932b2e2e03",
    "support"
   ],
   "web-animations/animation-model/animation-types/spacing-keyframes-filters-expected.txt": [
@@ -210273,14 +216661,6 @@
    "b23b76881f4d38c07710d0e59c1f6c8569de9060",
    "testharness"
   ],
-  "web-animations/interfaces/Animation/reverse-expected.txt": [
-   "abbbb6575c1ffc212e0380c3da3831d0500e79a9",
-   "support"
-  ],
-  "web-animations/interfaces/Animation/reverse.html": [
-   "669b8b6722a2eed4383574c3fab9738b9702d723",
-   "testharness"
-  ],
   "web-animations/interfaces/Animation/startTime-expected.txt": [
    "86d25e2be39e0991d8730796c37b66bf4a71c058",
    "support"
@@ -210341,10 +216721,6 @@
    "2df691f77422d0e64833addf0c099e44f9afe051",
    "testharness"
   ],
-  "web-animations/interfaces/AnimationTimeline/idlharness-expected.txt": [
-   "5600b65e314d99ac198bd037e8298c527be236c3",
-   "support"
-  ],
   "web-animations/interfaces/AnimationTimeline/idlharness.html": [
    "d8c0e90499563d96ac9802632840f5333f61c8ac",
    "testharness"
@@ -210529,6 +216905,10 @@
    "2b4f51977d43f9bf90c066bfcc57728ae096b6e9",
    "testharness"
   ],
+  "web-animations/timing-model/animations/reversing-an-animation.html": [
+   "2b5631893d0d0846e5e57097ce4ae54dfa8a03e3",
+   "testharness"
+  ],
   "web-animations/timing-model/animations/set-the-animation-start-time-expected.txt": [
    "87e1f9a20eae0d6ac1a39e10ff6a8930f4dd39d3",
    "support"
@@ -210609,10 +216989,6 @@
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
-  "webaudio/the-audio-api/the-audiobuffer-interface/idl-test-expected.txt": [
-   "6b284b6fc0ff092c5dd764d94a1bdcddd53033de",
-   "support"
-  ],
   "webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html": [
    "11ec68dec57c960cea256c28237715866c58ac84",
    "testharness"
@@ -210629,10 +217005,6 @@
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
-  "webaudio/the-audio-api/the-audiodestinationnode-interface/idl-test-expected.txt": [
-   "cce26d82c4feb990b66939dfb9f16cbd7490f0a3",
-   "support"
-  ],
   "webaudio/the-audio-api/the-audiodestinationnode-interface/idl-test.html": [
    "74770d22caf02df7fb3cd3fb1e7499436e69cbed",
    "testharness"
@@ -210717,10 +217089,6 @@
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
-  "webaudio/the-audio-api/the-delaynode-interface/idl-test-expected.txt": [
-   "341ab52c6d3a9d417cc839b4333bed8e32d34e47",
-   "support"
-  ],
   "webaudio/the-audio-api/the-delaynode-interface/idl-test.html": [
    "55a67c98908e18856e55c2e9437b63e8dc6feb94",
    "testharness"
@@ -210737,10 +217105,6 @@
    "823f7ae1a5f5eb0c630e7d1881c50a1f710f9350",
    "support"
   ],
-  "webaudio/the-audio-api/the-gainnode-interface/idl-test-expected.txt": [
-   "d15b9ffd10f6ab972a87c33516dc5a60b833e374",
-   "support"
-  ],
   "webaudio/the-audio-api/the-gainnode-interface/idl-test.html": [
    "35c753a641939795d00ec7ce1a55bfc74324a075",
    "testharness"
@@ -210809,6 +217173,30 @@
    "3c9dc0358862e39dfc3be1d80add650d028283bb",
    "testharness"
   ],
+  "webauthn/helpers.js": [
+   "bc38559e447710f701bc5392b0d02704ae97e970",
+   "support"
+  ],
+  "webauthn/interfaces.https.html": [
+   "5a30981934a38e09328a946352b21a8abc90851f",
+   "testharness"
+  ],
+  "webauthn/interfaces.idl": [
+   "78cdd63fc1b0e3eff699976b67b72d46cf108ed2",
+   "support"
+  ],
+  "webauthn/makecredential-badargs-accountinformation.https.html": [
+   "7f81446a152ab31223b79e3089eb29505a8b603d",
+   "testharness"
+  ],
+  "webauthn/makecredential-badargs-attestationchallenge.https.html": [
+   "26fbc55b0c313be854ddd59469baf6dcdd5d21c6",
+   "testharness"
+  ],
+  "webauthn/makecredential-badargs-cryptoparameters.https.html": [
+   "9e2cbb2a667cf57f979c3e67516fb63fedd18d46",
+   "testharness"
+  ],
   "webmessaging/Channel_postMessage_DataCloneErr.htm": [
    "a62fdac80932ca059c8853ca9a9f8edd13926f86",
    "testharness"
@@ -210941,8 +217329,12 @@
    "19fc5d2f7e0f30e9d35a8606c3fb05b537ea3a82",
    "testharness"
   ],
+  "webmessaging/messageerror-expected.txt": [
+   "653ee33be30702fad9a9561d4cd2d4e118b17007",
+   "support"
+  ],
   "webmessaging/messageerror.html": [
-   "41894048fbd03504650033355cc7769132ef45ee",
+   "92c5359ad64394cb2d30402204968d49227c5daf",
    "testharness"
   ],
   "webmessaging/postMessage_ArrayBuffer.sub.htm": [
@@ -211233,6 +217625,10 @@
    "7665873355c531e009824021a2b75daaf2dd6e3f",
    "testharness"
   ],
+  "webrtc/RTCConfiguration-iceCandidatePoolSize-expected.txt": [
+   "6a8a8a37f23934a864d8480f3dfa39424240b843",
+   "support"
+  ],
   "webrtc/RTCConfiguration-iceCandidatePoolSize.html": [
    "9551402aed448bf6abde4aa815d174ba321cc655",
    "testharness"
@@ -211241,10 +217637,18 @@
    "8a8b30a23abddb5d11a802fead534fd56aacbb62",
    "testharness"
   ],
+  "webrtc/RTCPeerConnection-canTrickleIceCandidates-expected.txt": [
+   "2ac075fe0ee3b4c0da551ad770db34192b426e8a",
+   "support"
+  ],
   "webrtc/RTCPeerConnection-canTrickleIceCandidates.html": [
    "0f585a89bd8f25aa8f83b6ec39b704cbb8e970b2",
    "testharness"
   ],
+  "webrtc/RTCPeerConnection-constructor-expected.txt": [
+   "44d65542c6dfcfe15b83f88172da69acb6f8d953",
+   "support"
+  ],
   "webrtc/RTCPeerConnection-constructor.html": [
    "54fff02eab02b0be84c945ec7e77afe722d9f988",
    "testharness"
@@ -211257,16 +217661,28 @@
    "4e46c66c535a49573a3400355dde79b63f7b95d6",
    "testharness"
   ],
+  "webrtc/RTCPeerConnection-iceGatheringState-expected.txt": [
+   "6be33b9fb07075dfc81993ff1753e48a86f295b4",
+   "support"
+  ],
   "webrtc/RTCPeerConnection-iceGatheringState.html": [
    "4f752838326116e65543a10e023a0cbe9c07e9e8",
    "testharness"
   ],
+  "webrtc/RTCPeerConnection-idl-expected.txt": [
+   "a8578ee98585cababd679ff4569850e81bf439ee",
+   "support"
+  ],
   "webrtc/RTCPeerConnection-idl.html": [
    "e322b3ab7f8e0bc7ff802f00234a9a6e80b8285a",
    "testharness"
   ],
+  "webrtc/RTCPeerConnection-setRemoteDescription-expected.txt": [
+   "0d463daf158bf55234120da2d1115763080f513f",
+   "support"
+  ],
   "webrtc/RTCPeerConnection-setRemoteDescription.html": [
-   "987ba908b798954a80cdfcfdab476ac0bf62cca0",
+   "ee89fd092059a4cc489536898d4a47a7bbbf36f2",
    "testharness"
   ],
   "webrtc/RTCPeerConnectionIceEvent-constructor.html": [
@@ -211281,14 +217697,26 @@
    "56a37968e489d6ee39a1234ca888dd628f17648e",
    "testharness"
   ],
+  "webrtc/datachannel-idlharness-expected.txt": [
+   "de46e2abe3f943b563dad21be3840eff49284d39",
+   "support"
+  ],
   "webrtc/datachannel-idlharness.html": [
    "a1753a9a537a626775194ccc5dfdbf6829c5df35",
    "testharness"
   ],
+  "webrtc/getstats-expected.txt": [
+   "2ee9ce522b2b7ab95a38abfc3394c7c503caf589",
+   "support"
+  ],
   "webrtc/getstats.html": [
    "6656998d4adfab0e6ca51c98cd141cf162d3879c",
    "testharness"
   ],
+  "webrtc/interfaces.html": [
+   "bd71316e6efddce47bb4cf3218b3133f8c69c3db",
+   "testharness"
+  ],
   "webrtc/no-media-call-expected.txt": [
    "d38f866ce4a9b8f3410903cd7c1497006d93933b",
    "support"
@@ -211313,6 +217741,930 @@
    "ce76df05d5866807a4b58c9509ce66efcddaf3d7",
    "testharness"
   ],
+  "websockets/Close-1000-reason.htm": [
+   "a3733fc46f0a5358cc8dbfd74d422e1a598bdf64",
+   "testharness"
+  ],
+  "websockets/Close-1000.htm": [
+   "0069f2d11be01418818303b4b684b66286e19b66",
+   "testharness"
+  ],
+  "websockets/Close-Reason-124Bytes.htm": [
+   "2e5cba512f7c5ee4555dcbddfb828aefcc59a833",
+   "testharness"
+  ],
+  "websockets/Close-reason-unpaired-surrogates.htm": [
+   "ceb97248d6008bb64cfba83db29ebcc10e0d1342",
+   "testharness"
+  ],
+  "websockets/Close-undefined.htm": [
+   "ba4e24f11a947545effc1b1f3dbf88596bae07ca",
+   "testharness"
+  ],
+  "websockets/Create-Secure-extensions-empty.htm": [
+   "43b0888236645f21b9d6bb47de5084416a84e9c5",
+   "testharness"
+  ],
+  "websockets/Create-Secure-url-with-space.htm": [
+   "efbd97dc88a100d175319ee25d2348a775d81c38",
+   "testharness"
+  ],
+  "websockets/Create-Secure-valid-url-array-protocols.htm": [
+   "2d50bb602ad9d63e3861f20b3036bddbc26d8652",
+   "testharness"
+  ],
+  "websockets/Create-Secure-valid-url-binaryType-blob.htm": [
+   "d21546210669e9dee52ef2ee6e061cb58ed71793",
+   "testharness"
+  ],
+  "websockets/Create-Secure-valid-url-protocol-setCorrectly.htm": [
+   "dc29257cc894ac0dca51274f2e3b4907f479709c",
+   "testharness"
+  ],
+  "websockets/Create-Secure-valid-url-protocol-string.htm": [
+   "a75a612744e1dee1f880f6742fc911bcd479fa0a",
+   "testharness"
+  ],
+  "websockets/Create-Secure-valid-url.htm": [
+   "38b96b5067655fd49e8ccba22ef3e9ba7781bc9c",
+   "testharness"
+  ],
+  "websockets/Create-Secure-verify-url-set-non-default-port.htm": [
+   "42c638cfe0a02d34bb7280f0f3a046f9a86bcfc5",
+   "testharness"
+  ],
+  "websockets/Create-asciiSep-protocol-string.htm": [
+   "36b2fb2c3e2f7592ef4c3ab0494bf89e514235ac",
+   "testharness"
+  ],
+  "websockets/Create-blocked-port.htm": [
+   "7a385334740d92171f8a07dc63f7b43e7588160b",
+   "testharness"
+  ],
+  "websockets/Create-invalid-urls.htm": [
+   "f5e8116cf1aafc7f307031c8eae3bca22017eb09",
+   "testharness"
+  ],
+  "websockets/Create-non-absolute-url.htm": [
+   "f3255ca1da5c8e81c37e658cb2dc83e1a7dc2e63",
+   "testharness"
+  ],
+  "websockets/Create-nonAscii-protocol-string.htm": [
+   "f556c52a5ba7370dfd94f57331d606b147b0932f",
+   "testharness"
+  ],
+  "websockets/Create-protocol-with-space.htm": [
+   "923fd2681d86812d63347f995f91747ebec18a44",
+   "testharness"
+  ],
+  "websockets/Create-protocols-repeated-case-insensitive.htm": [
+   "55a3dbf713cf45900f8af2e9c9bc2f41bb447141",
+   "testharness"
+  ],
+  "websockets/Create-protocols-repeated.htm": [
+   "3c5bfbf4d7f15cdbb59c23d445478779756d0446",
+   "testharness"
+  ],
+  "websockets/Create-valid-url-array-protocols.htm": [
+   "35ce12e805210326787f541c14ec51e05a690b14",
+   "testharness"
+  ],
+  "websockets/Create-valid-url-protocol-empty.htm": [
+   "73f7c09d0ece2e04dc58fb7a7393d29cbfe0ea43",
+   "testharness"
+  ],
+  "websockets/Create-valid-url-protocol.htm": [
+   "46072d6def631dd1ea02fb9c9ea2e3055fef030c",
+   "testharness"
+  ],
+  "websockets/Create-valid-url.htm": [
+   "3e2100b411287b23ac1482042c41e38589258b7d",
+   "testharness"
+  ],
+  "websockets/Create-verify-url-set-non-default-port.htm": [
+   "db720152509ca6e887861253bea84c0d4df26cfc",
+   "testharness"
+  ],
+  "websockets/Create-wrong-scheme.htm": [
+   "a09b10dacf5cd94470b976b8129c63d76d554295",
+   "testharness"
+  ],
+  "websockets/README.md": [
+   "1b8473c8d482b7628fc7337e263c78aca7ca5088",
+   "support"
+  ],
+  "websockets/Secure-Close-1000-reason.htm": [
+   "efdaaff2b022593bb07ed84ff5908577ede569a7",
+   "testharness"
+  ],
+  "websockets/Secure-Close-1000-verify-code.htm": [
+   "eae076f962a5cbd9486f5fbd789e312c4e5a3d2e",
+   "testharness"
+  ],
+  "websockets/Secure-Close-1000.htm": [
+   "eab6ab47671ee679a0a44347a6fcf3f3549b7b94",
+   "testharness"
+  ],
+  "websockets/Secure-Close-1005-verify-code.htm": [
+   "fb6c2597b519a20b35c0dd2c3f029389be6532a9",
+   "testharness"
+  ],
+  "websockets/Secure-Close-1005.htm": [
+   "adb8d72ce31891ebca7c11f61692dd4f39339e92",
+   "testharness"
+  ],
+  "websockets/Secure-Close-2999-reason.htm": [
+   "43c67789e3c68bc900411146a143219effb315bb",
+   "testharness"
+  ],
+  "websockets/Secure-Close-3000-reason.htm": [
+   "0695a3ebc6c672938cbce1f789a0513ee6db568f",
+   "testharness"
+  ],
+  "websockets/Secure-Close-3000-verify-code.htm": [
+   "feb82aba92cdaa40609259f1187d71ace00ab5af",
+   "testharness"
+  ],
+  "websockets/Secure-Close-4999-reason.htm": [
+   "0b1951f1f1cf9c8cb60a55046c45ffdff556c081",
+   "testharness"
+  ],
+  "websockets/Secure-Close-Reason-124Bytes.htm": [
+   "c53e247ed528f3cec25b8848260f0e7eaa643716",
+   "testharness"
+  ],
+  "websockets/Secure-Close-Reason-Unpaired-surrogates.htm": [
+   "49b47b4ced20884680a8628ad9b357a66019fe96",
+   "testharness"
+  ],
+  "websockets/Secure-Close-onlyReason.htm": [
+   "41c7c1faa23830c808f5f99768cabb30ec4edc53",
+   "testharness"
+  ],
+  "websockets/Secure-Close-readyState-Closed.htm": [
+   "052c9bb606637edc33e59ba9fa3e67deaf5e74e5",
+   "testharness"
+  ],
+  "websockets/Secure-Close-readyState-Closing.htm": [
+   "35704eaf42480235c09ba2bae0e34f8d733682b5",
+   "testharness"
+  ],
+  "websockets/Secure-Close-server-initiated-close.htm": [
+   "b5937b68def472531f56b35d960734ce1b27d392",
+   "testharness"
+  ],
+  "websockets/Secure-Close-undefined.htm": [
+   "d512819928be3394d94ac6d912e53937068b0f75",
+   "testharness"
+  ],
+  "websockets/Secure-Send-65K-data.htm": [
+   "feb8e310899761a838be2629d5e7292da0a25c83",
+   "testharness"
+  ],
+  "websockets/Secure-Send-binary-65K-arraybuffer.htm": [
+   "2cc593f16e1d0d7be2e294417b77d7859179632f",
+   "testharness"
+  ],
+  "websockets/Secure-Send-binary-arraybuffer.htm": [
+   "78fb09f9b69bde01f34dae580488c7dc9f33af88",
+   "testharness"
+  ],
+  "websockets/Secure-Send-binary-arraybufferview-float32.htm": [
+   "758da1119fc55fbe9429898b95097248c3c700ee",
+   "testharness"
+  ],
+  "websockets/Secure-Send-binary-arraybufferview-float64.htm": [
+   "fa78032fd2927ec8f15cdc2fb62d41eb1b67dbe6",
+   "testharness"
+  ],
+  "websockets/Secure-Send-binary-arraybufferview-int32.htm": [
+   "072b01fd222c48e764516c92813a4a2761d0bc12",
+   "testharness"
+  ],
+  "websockets/Secure-Send-binary-arraybufferview-uint16-offset-length.htm": [
+   "dc11615983d4284daa42ee8abbc7816102d4c466",
+   "testharness"
+  ],
+  "websockets/Secure-Send-binary-arraybufferview-uint32-offset.htm": [
+   "8fc6f7bc526a39fde7185659531c572a278e8549",
+   "testharness"
+  ],
+  "websockets/Secure-Send-binary-arraybufferview-uint8-offset-length.htm": [
+   "a2e88d419ce9fc3bfc068a5f08e63c19757ff4d8",
+   "testharness"
+  ],
+  "websockets/Secure-Send-binary-arraybufferview-uint8-offset.htm": [
+   "077a984a831b2ac1e671211a08a99e0e50629c39",
+   "testharness"
+  ],
+  "websockets/Secure-Send-binary-blob.htm": [
+   "dcc7c4adac3cfb7e970011669665fc160bfa20c5",
+   "testharness"
+  ],
+  "websockets/Secure-Send-data.htm": [
+   "11ea2e974c8783690f647056043539c707896062",
+   "testharness"
+  ],
+  "websockets/Secure-Send-null.htm": [
+   "8836b74fd5560ddc2de107f39f3a55c9ae872c58",
+   "testharness"
+  ],
+  "websockets/Secure-Send-paired-surrogates.htm": [
+   "cf37fc5bb12a0d5cccfb93f052db9244c27a425a",
+   "testharness"
+  ],
+  "websockets/Secure-Send-unicode-data.htm": [
+   "f47a23c0b4ef9282e4186a57b42837bb2f5a072b",
+   "testharness"
+  ],
+  "websockets/Secure-Send-unpaired-surrogates.htm": [
+   "42bae64815bac37b3af91cb069fa91e3a4ad4dde",
+   "testharness"
+  ],
+  "websockets/Send-0byte-data.htm": [
+   "f9d31c7341f80323a6f3a45c50447fde5db3bccd",
+   "testharness"
+  ],
+  "websockets/Send-65K-data.htm": [
+   "e4b64f085429773f757c02a3fd6e1a740929a411",
+   "testharness"
+  ],
+  "websockets/Send-Unpaired-Surrogates.htm": [
+   "8a589aac896c1354ffb056b77542a407128bf560",
+   "testharness"
+  ],
+  "websockets/Send-before-open.htm": [
+   "5fa9343d7b7378e496f18097748f0d268090b166",
+   "testharness"
+  ],
+  "websockets/Send-binary-65K-arraybuffer.htm": [
+   "f45db48ab7d94c96b997628b5a431d1d992c98ac",
+   "testharness"
+  ],
+  "websockets/Send-binary-arraybuffer.htm": [
+   "7f1337c564d41a4a0208bed137128a3ee0796047",
+   "testharness"
+  ],
+  "websockets/Send-binary-arraybufferview-int16-offset.htm": [
+   "13dc817a45a97179bd155720d826d3d7dd683762",
+   "testharness"
+  ],
+  "websockets/Send-binary-arraybufferview-int8.htm": [
+   "b1c1938fceea9f8e56848b67af0279028e97e1be",
+   "testharness"
+  ],
+  "websockets/Send-binary-blob.htm": [
+   "2f225979d20881e5e8a7be665d439b320e2c631e",
+   "testharness"
+  ],
+  "websockets/Send-data.htm": [
+   "564e6c8508b2eda5b194d5b901f2db12991894a9",
+   "testharness"
+  ],
+  "websockets/Send-data.worker.js": [
+   "15e48679dd7355ad5d0a3abe3e21ec12494f804d",
+   "testharness"
+  ],
+  "websockets/Send-null.htm": [
+   "aaea5803d872e01e9eda000a888dc601296798b8",
+   "testharness"
+  ],
+  "websockets/Send-paired-surrogates.htm": [
+   "d01ddc6f6a84a97a32af15661385d316b42d6e05",
+   "testharness"
+  ],
+  "websockets/Send-unicode-data.htm": [
+   "4dc9fad1832c1057a6818a71c458bf340bc2afb2",
+   "testharness"
+  ],
+  "websockets/binary/001.html": [
+   "127d6a587adf6dd3cfd9dd96ad80dfad5afdeea3",
+   "testharness"
+  ],
+  "websockets/binary/002.html": [
+   "904a6d9ac64b24a9b4b4e3ebc268a3f8d20726b2",
+   "testharness"
+  ],
+  "websockets/binary/004.html": [
+   "8f6fa94cd40f4dd937e8e7e44d09bec4eb86d8ae",
+   "testharness"
+  ],
+  "websockets/binary/005.html": [
+   "ead8c6611c8dedcd913f6021d457c2452ce0c793",
+   "testharness"
+  ],
+  "websockets/binaryType-wrong-value.htm": [
+   "6873fe9127b4b5100f228e5821cfc41735906429",
+   "testharness"
+  ],
+  "websockets/close-invalid.any.js": [
+   "d50557d4578f2d96080748315dcc8ffc7d6b7485",
+   "testharness"
+  ],
+  "websockets/closing-handshake/002.html": [
+   "5b6e5f3f0b31a6eeaded1a137516405fa69ef8ec",
+   "testharness"
+  ],
+  "websockets/closing-handshake/003.html": [
+   "942d33a4e56537421f1a54044a49882e7e7671fe",
+   "testharness"
+  ],
+  "websockets/closing-handshake/004.html": [
+   "c9453f90be53c38d7b4a4e8aa8e8040d2d6f8ab9",
+   "testharness"
+  ],
+  "websockets/constants.js": [
+   "d1aff62046b7ade8beb6bb762adc3a7871b3c71f",
+   "support"
+  ],
+  "websockets/constructor.html": [
+   "d3b167c749ee22dbc935e0eaf5d65c2c488d3808",
+   "testharness"
+  ],
+  "websockets/constructor/001.html": [
+   "04a3ceb6f0f0ee9cc8e58b298a9c086faf432fcd",
+   "testharness"
+  ],
+  "websockets/constructor/002.html": [
+   "4288a4cfc4ae73afb9b93b2c2c8e05c182a6a5e1",
+   "testharness"
+  ],
+  "websockets/constructor/004.html": [
+   "4d2986bb16eb72796627a6552461d80c29c444e4",
+   "testharness"
+  ],
+  "websockets/constructor/005.html": [
+   "f53573d7362675c0ed4c9b52c857bad183a2d5f7",
+   "testharness"
+  ],
+  "websockets/constructor/006.html": [
+   "1eb12c5646a800f1f69890991a9bd03b94afc998",
+   "testharness"
+  ],
+  "websockets/constructor/007.html": [
+   "ebcf8a13064f433f567180b8cab79206ca19007a",
+   "testharness"
+  ],
+  "websockets/constructor/008.html": [
+   "f57613b6ba8a7d56e0905fe77f2784a5f0f9ff24",
+   "testharness"
+  ],
+  "websockets/constructor/009.html": [
+   "6375dd0856f08e24759951e5f0eec7bda1c41ea7",
+   "testharness"
+  ],
+  "websockets/constructor/010.html": [
+   "c0c6f54f8c9290e6fbf8a1ddf22e6a1362ef586d",
+   "testharness"
+  ],
+  "websockets/constructor/011.html": [
+   "60f0ca813c13a6003a3f376ffbddd38a8a7a6f98",
+   "testharness"
+  ],
+  "websockets/constructor/012.html": [
+   "355a6c6ce54a84d75cec17d62a337ea0f98934e9",
+   "testharness"
+  ],
+  "websockets/constructor/013.html": [
+   "bac0dc89e73a158b1a07b514646fd8be5a83da14",
+   "testharness"
+  ],
+  "websockets/constructor/014.html": [
+   "13b62c474c2b1f2604cc1f65a13c3ae6705200df",
+   "testharness"
+  ],
+  "websockets/constructor/016.html": [
+   "471adc2727ec28b9120e4f0ad22d4d2b845b6128",
+   "testharness"
+  ],
+  "websockets/constructor/017.html": [
+   "41f717f7c3d080394d0889bc6d04f805dad87872",
+   "testharness"
+  ],
+  "websockets/constructor/018.html": [
+   "43651cb19bd505cac4f47c21637fe03fa7517f50",
+   "testharness"
+  ],
+  "websockets/constructor/019.html": [
+   "7a782cdb6acd101d7ab83dc10fad6e85a3689341",
+   "testharness"
+  ],
+  "websockets/constructor/020.html": [
+   "a65f1aa9d316b72de66b722cf8e5fc06cebceb5b",
+   "testharness"
+  ],
+  "websockets/constructor/021.html": [
+   "c6dca1babe148801793bb0dfbc35594ed8af4054",
+   "testharness"
+  ],
+  "websockets/constructor/022.html": [
+   "7326a722a1b47f611c920ecd7e1ee1d6e6a5d0aa",
+   "testharness"
+  ],
+  "websockets/cookies/001.html": [
+   "677a47c39a4b25fccc65f0d1bdfe2a90e98230d4",
+   "testharness"
+  ],
+  "websockets/cookies/002.html": [
+   "e424609e5847011d2728530e472a2f8890781981",
+   "testharness"
+  ],
+  "websockets/cookies/003.html": [
+   "f8a37f2350cce1c72fd2e5e4a6134bc487230e43",
+   "testharness"
+  ],
+  "websockets/cookies/004.html": [
+   "d16b80545db418cf5e1feaaaf6585c1458c28e57",
+   "testharness"
+  ],
+  "websockets/cookies/005.html": [
+   "6cb3b01be1541d1ae112f47bff27d7c154e3b99b",
+   "testharness"
+  ],
+  "websockets/cookies/006.html": [
+   "676deb52c3b881fe96e12198a7f068d1392f63cf",
+   "testharness"
+  ],
+  "websockets/cookies/007.html": [
+   "f6c909514090e36b756bdf2f04302b282dd4f50b",
+   "testharness"
+  ],
+  "websockets/cookies/support/set-cookie.py": [
+   "4975c1735e1140a7528056c954c34a63227c3180",
+   "support"
+  ],
+  "websockets/eventhandlers.html": [
+   "430d1e421f7a6b66ea924d922c69184edebffa7c",
+   "testharness"
+  ],
+  "websockets/extended-payload-length.html": [
+   "13fe0096aeb23c249d41fb6dcafafeab1d319fc3",
+   "testharness"
+  ],
+  "websockets/handlers/echo-cookie_wsh.py": [
+   "af25163add710a6dc87f40d7ef7e75ba056543d4",
+   "support"
+  ],
+  "websockets/handlers/echo-query_v13_wsh.py": [
+   "4470992bce9e4e37f211f3a09d9cbd02cc4d5bd5",
+   "support"
+  ],
+  "websockets/handlers/echo-query_wsh.py": [
+   "5b2dc7f7c15a6302159f83aff2304a4bc41da257",
+   "support"
+  ],
+  "websockets/handlers/echo_close_data_wsh.py": [
+   "16a060418f69009accbad9412ca0a4ecef39962a",
+   "support"
+  ],
+  "websockets/handlers/echo_exit_wsh.py": [
+   "c2c2cdae87d3b5f248a9e725806e55978d6c5b89",
+   "support"
+  ],
+  "websockets/handlers/echo_raw_wsh.py": [
+   "01f12a280b6c5f5adfbdd02fff481c269a3b53cf",
+   "support"
+  ],
+  "websockets/handlers/echo_wsh.py": [
+   "60b5cf207d3ccf566bb131897e86fb55f3a5a9bd",
+   "support"
+  ],
+  "websockets/handlers/empty-message_wsh.py": [
+   "c0a0cff8432b590e07dfe583d71741d6cbd1844c",
+   "support"
+  ],
+  "websockets/handlers/handshake_no_protocol_wsh.py": [
+   "402a157415d4a230fb74e37514b04e9a50e7acba",
+   "support"
+  ],
+  "websockets/handlers/handshake_protocol_wsh.py": [
+   "d2bd6907be6dbf38e0f00352ea2f822f70cf8feb",
+   "support"
+  ],
+  "websockets/handlers/handshake_sleep_2_wsh.py": [
+   "27cd83457ab10624c547242da7a59eee96b14cf8",
+   "support"
+  ],
+  "websockets/handlers/invalid_wsh.py": [
+   "63ae697719d99764265d6b08d25f5fd4cd54a282",
+   "support"
+  ],
+  "websockets/handlers/origin_wsh.py": [
+   "8902e32ac93447d12195fdd3a24e883173b42295",
+   "support"
+  ],
+  "websockets/handlers/protocol_array_wsh.py": [
+   "8a0022cc80a4bf2c6d84a114e6602cdd7bc6928f",
+   "support"
+  ],
+  "websockets/handlers/protocol_wsh.py": [
+   "b9faa29fb3d2bff4a373f0baf3b9c1e95b091f26",
+   "support"
+  ],
+  "websockets/handlers/set-cookie-secure_wsh.py": [
+   "dcddb4ac3db1cdd74c39cd4f28d0498165d2e0aa",
+   "support"
+  ],
+  "websockets/handlers/set-cookie_http_wsh.py": [
+   "9705c2e131a8b4c597f43b3677b06752a273cba4",
+   "support"
+  ],
+  "websockets/handlers/set-cookie_wsh.py": [
+   "0c7c1a301abc149af3773fbec4c6fac4ff76e38e",
+   "support"
+  ],
+  "websockets/handlers/simple_handshake_wsh.py": [
+   "505e18342ef95441f71868b9ef7ce275b38dfe6f",
+   "support"
+  ],
+  "websockets/handlers/sleep_10_v13_wsh.py": [
+   "535fb27b2390171ec32577162cdeb331d94f06b6",
+   "support"
+  ],
+  "websockets/handlers/stash_responder_wsh.py": [
+   "ccb39515d6c1076ce7645350627d1a976eb7b6f5",
+   "support"
+  ],
+  "websockets/handlers/wrong_accept_key_wsh.py": [
+   "2f6a2cac69311e917cd52a40d942e1a422ea1ea6",
+   "support"
+  ],
+  "websockets/interfaces/CloseEvent/clean-close.html": [
+   "9340da7ccf1f8ba5170258449332f6d90ea13db9",
+   "testharness"
+  ],
+  "websockets/interfaces/CloseEvent/constructor.html": [
+   "ae9cb7462639dc7005b476449cd791eceeb408d0",
+   "testharness"
+  ],
+  "websockets/interfaces/CloseEvent/historical.html": [
+   "56c581fc5664f4248d86e0c6c38d462c0e21c699",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer.html": [
+   "1d4a66b40fe01794ddb7657963b26585e6bdbb4e",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob.html": [
+   "1c13273c8c121d283401d4dc1b30679956d1115a",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-getter.html": [
+   "466630e990131ebf0b1cd5df8f992a40e52eb6f2",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-setter.html": [
+   "94b39458e66d79a34c5460eb77e7d2cd06dfe2c0",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-deleting.html": [
+   "b80b0aeaf6f75b9449602d996c7e801864ff3438",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-getting.html": [
+   "b33e529d71e52a9b8760a335490d2cd4c2f15487",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-initial.html": [
+   "1f30a1b5dd4b6b506c2428de6ed126efeaa13fc5",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-large.html": [
+   "6f3bb19d8a64467bad54a0379315738d4b4a6e2e",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-readonly.html": [
+   "d7bccf22f58fa29005b22107d1d5861b105f080c",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-unicode.html": [
+   "29d71f289b096480c74668855cfd1a744e96d763",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/close/close-basic.html": [
+   "7b66ec99cd13c7a919fceab5e4254d1e33250874",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/close/close-connecting.html": [
+   "74319c41269f449f54f2405705c84a908d5609c9",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/close/close-multiple.html": [
+   "9b58c23715dbfb53f5a3a8a8d00fc176976cc94c",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/close/close-nested.html": [
+   "a9e476bfe195cee756dd8da46f88924116757afe",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/close/close-replace.html": [
+   "f97a87a3dc08346a4f5443fc1a6b50b2ab85e840",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/close/close-return.html": [
+   "b1f87e7e898559bec64ee7438ed421bfbe54885b",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/constants/001.html": [
+   "51090c4ef3a3d6227095a6b10243f47ee2921a9b",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/constants/002.html": [
+   "94b4186ebfd0e587a98181c4fc14bff19f8a48b7",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/constants/003.html": [
+   "4bc1005a0094277f91607327551a52ce980fbeab",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/constants/004.html": [
+   "fcd09d1a2939e3f8f30831d5a8de2ad57b6c2b6a",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/constants/005.html": [
+   "8384ab15e572c9ac41e46b9ca93bbdc875777e86",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/constants/006.html": [
+   "d6afc2b56a254c19aabf11d910c19e4c1655dc21",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/001.html": [
+   "cfc6fc5b3050aa7206234790c2925ce81303037f",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/002.html": [
+   "cab4d96879c125e66d1c1a4f555191591dee2b70",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/003.html": [
+   "53f23f50038691a76cea6d1ded8214607e917fc9",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/004.html": [
+   "49e3aa8d2b578e21b16081248432047033b63dad",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/006.html": [
+   "0293f6c4135df8a515dc281cd1e3f4d11e1af03f",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/007.html": [
+   "e43b82e7b54c6fe5bd14a404d2fa57417f952ddf",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/008.html": [
+   "160c6c1dfdb88cb369b01ec649035b04d9e14d3c",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/009.html": [
+   "a62e49426dfc7984f5d6ee55466e345dbb8b5a05",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/010.html": [
+   "4535c1224cd19b260f05b8ea53496f3bc9c6a71b",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/011.html": [
+   "096891432c3dcbebe295aa30df9ef0d519e0bc74",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/012.html": [
+   "3b62aef340efe8e598e2d4d4a481cb46c50b115e",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/013.html": [
+   "5915630992a26cb55b570f25bc10a8147ce970e5",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/014.html": [
+   "c52fc8cd54de45b20513caba4f71bb763f20dfa8",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/015.html": [
+   "ec6d2d3c769f84b66fdab6e3504402f29ee475a9",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/016.html": [
+   "0d5d64a9700f6bb72ea2c62d1f9368dfda24ab54",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/017.html": [
+   "f3b141f588248e6cb257095c6297135bd6eb5b8e",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/018.html": [
+   "858bd4937109754a3cd6d96ce098d6b23da1a619",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/019.html": [
+   "69c3f71c1f01bd5fe68bcc42e51233ade5f5cd53",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/events/020.html": [
+   "3f61fc525df3f6005bd373410bebbac46c3227f7",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/extensions/001.html": [
+   "dbb8875cd70afed7bf533d8fe963aca52fe6f2e5",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/protocol/protocol-initial.html": [
+   "adeb123d6d1fc06f85ff0a4a387b479148927e89",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/readyState/001.html": [
+   "155bcee2312b200099c18a7aaa7b08d685bc9c1b",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/readyState/002.html": [
+   "33c9eded70c36a50d05c72ce9806862aa91d270c",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/readyState/003.html": [
+   "e41609436a7a4de147e48dfc8a9b0261f23a665b",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/readyState/004.html": [
+   "da71ca7b7aa2aed5995365530764c8d13f6fe655",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/readyState/005.html": [
+   "02f0cde93ac2fe000b30b80b3179f20dce633c07",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/readyState/006.html": [
+   "66e54e302771b62d7ea41b250667e5ba4240f278",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/readyState/007.html": [
+   "f98baa8fcdc7be984dc06c758f0db24f6e01e4f0",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/readyState/008.html": [
+   "2f6b015fd73c9bfb647c919b1ca0eeea081b448f",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/send/001.html": [
+   "da336c8d3344864cc435d44bdd6d1f4ef8d5fc9a",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/send/002.html": [
+   "db5a416b53cfc3b5441bdd4cb4ee8b4f7e4f3099",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/send/003.html": [
+   "79ba49c7dd438944fda8ec7efdf1d31675577141",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/send/004.html": [
+   "035d1d172d49a471e38e195e7a2147d18364ed2e",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/send/005.html": [
+   "f26ed4f1ca75788757173d9c5b380593ea43ad56",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/send/006.html": [
+   "4084131e0225184084fb31ed16fa6b411ead6f16",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/send/007.html": [
+   "a856dd0bc5c955c9b79c337a973b5868b882b48d",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/send/008.html": [
+   "76e56c0de7ec28916ee8d953321fa60dd06a4108",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/send/009.html": [
+   "2a6959894d31e4ca151822f5835fa3df7ea0e1fe",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/send/010.html": [
+   "d6ef67502ffc5cb04ca3e97f490d6dddbdab7832",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/send/011.html": [
+   "b2c0eca5b7ba85a2af31a6ab2fb9a1d202d2d052",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/send/012.html": [
+   "483329f82e11bdb58409555c7c4c5cac3b559d49",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/url/001.html": [
+   "a0a8787841aad8914354b51ec2ae1813d29ad761",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/url/002.html": [
+   "07023a0c4ab0d33e48533544d09ec388ba7bf818",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/url/003.html": [
+   "9f651fcbf3a96fda4ac6fdb9bbf7b89382ffcdcf",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/url/004.html": [
+   "c38822d26a5e083cea019aec3424799ee4a7700f",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/url/005.html": [
+   "7cdff7df864f782896add6fa7b17f54934c10ffc",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/url/006.html": [
+   "0a2c31ddd2e15c207d9f9805dd84f01cbc1cf319",
+   "testharness"
+  ],
+  "websockets/interfaces/WebSocket/url/resolve.html": [
+   "a5f79ff7857cf5f1ff722f1787cc2cedaa0da8b1",
+   "testharness"
+  ],
+  "websockets/keeping-connection-open/001.html": [
+   "029f933714a7e2215ee54ce7cd0f6a1f0df403d6",
+   "testharness"
+  ],
+  "websockets/multi-globals/message-received.html": [
+   "9b865062fdf1c96bac2b7b707130ef5fcbaf52ac",
+   "testharness"
+  ],
+  "websockets/multi-globals/support/incumbent.sub.html": [
+   "8a183b27fd0171b80e812769b819b4e810d6ef96",
+   "support"
+  ],
+  "websockets/multi-globals/support/relevant.html": [
+   "38946a76b98b46be5edf2031a16c3c4cfb4caab1",
+   "support"
+  ],
+  "websockets/opening-handshake/001.html": [
+   "9e09154a0b784fb2449c5e96b2f867579fec677b",
+   "testharness"
+  ],
+  "websockets/opening-handshake/002.html": [
+   "febd63b81e9f1be92381a7b286a8e14bc46166af",
+   "testharness"
+  ],
+  "websockets/opening-handshake/003-sets-origin.worker.js": [
+   "b5a23172a68b23ac5ec5384b6c3a96c1b9ec0a20",
+   "testharness"
+  ],
+  "websockets/opening-handshake/003.html": [
+   "e42909561f03341ab160dddb541fc27842ab79cc",
+   "testharness"
+  ],
+  "websockets/opening-handshake/005.html": [
+   "bf330ce240331f39f78a34f638119d5f7b434347",
+   "testharness"
+  ],
+  "websockets/security/001.html": [
+   "4de87e1c2660aa70754059971045ca86a6417ae5",
+   "testharness"
+  ],
+  "websockets/security/002.html": [
+   "51e56fc8ceac3be2107872900c1930b1f5bd60da",
+   "testharness"
+  ],
+  "websockets/security/check.py": [
+   "cc1a6f0c2659e3ca18a7dd487bde3eb4fe0d15b2",
+   "support"
+  ],
+  "websockets/unload-a-document/001-1.html": [
+   "5388c58ec7f586a8c79da8955ea25ff0350a08ff",
+   "support"
+  ],
+  "websockets/unload-a-document/001.html": [
+   "bcfd6cdc6b9dc497c3828fe0a77f1db3676be495",
+   "testharness"
+  ],
+  "websockets/unload-a-document/002-1.html": [
+   "284ca768f294b0716ada9f2936f3862e075388c2",
+   "support"
+  ],
+  "websockets/unload-a-document/002.html": [
+   "f39414dbf15f502f6be82324bbf389e75532cb6b",
+   "testharness"
+  ],
+  "websockets/unload-a-document/003.html": [
+   "3d1861da30072c3e73f9f1e656f836b8cec7c150",
+   "testharness"
+  ],
+  "websockets/unload-a-document/004.html": [
+   "a70ee20ff039315f7bcfd1ece1b54705d3479b5c",
+   "testharness"
+  ],
+  "websockets/unload-a-document/005-1.html": [
+   "e887d64a40f838ffcf0179d1ad7631f7c5821320",
+   "support"
+  ],
+  "websockets/unload-a-document/005.html": [
+   "19ea73ca1bd94adbf9205a511df6deedaa071b33",
+   "testharness"
+  ],
+  "websockets/websocket.sub.js": [
+   "c62b0a641a1ac5487932ed1d79979c52d5f32f45",
+   "support"
+  ],
   "webstorage/OWNERS": [
    "e831e24e141c3e6e8dc8232a1a0ee0f580356400",
    "support"
@@ -211434,7 +218786,7 @@
    "support"
   ],
   "webstorage/idlharness-expected.txt": [
-   "9f33c851c39bff4d5a895075fcfe44dc91514d5e",
+   "be40f6fe8536914417a1e65756c540c36f7e25ee",
    "support"
   ],
   "webstorage/idlharness.html": [
@@ -211585,6 +218937,10 @@
    "19fd5ede17b9c7e9d234e855eb7dd7fe343bc73e",
    "testharness"
   ],
+  "webusb/OWNERS": [
+   "8ea92f4cb8f9ba417745337ecb38e4a8615f50d5",
+   "support"
+  ],
   "webusb/idlharness-expected.txt": [
    "782c531643c47df8f225ca54eae57f1c7e7d72b4",
    "support"
@@ -211594,7 +218950,7 @@
    "testharness"
   ],
   "webvr/idlharness-expected.txt": [
-   "c0960e8c78266a7a6fe49a91c963f393b04dd060",
+   "57556d1b78db42d2bfd8582376d4c200b1c9ebe4",
    "support"
   ],
   "webvr/idlharness.html": [
@@ -211734,7 +219090,7 @@
    "support"
   ],
   "webvtt/api/interfaces-expected.txt": [
-   "ae4ac09131979fe00e079bea72219691626dac16",
+   "951b9aa58e48d30f53e964ba0c98589e4a25b73e",
    "support"
   ],
   "webvtt/api/interfaces.html": [
@@ -214438,7 +221794,7 @@
    "reftest"
   ],
   "workers/OWNERS": [
-   "a41253fffa75a8aa9853bbc73c7107c94010f6a0",
+   "b0b1d8b5f995ce1f7aefd1ce9b454b7b398b578f",
    "support"
   ],
   "workers/README.md": [
diff --git a/third_party/WebKit/LayoutTests/external/wpt/README.md b/third_party/WebKit/LayoutTests/external/wpt/README.md
index 266d4ec..33aa2dd 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/README.md
+++ b/third_party/WebKit/LayoutTests/external/wpt/README.md
@@ -228,16 +228,16 @@
 
 The lint tool is also run automatically for every submitted pull
 request, and reviewers will not merge branches with tests that have
-lint errors, so you must fix any errors the lint tool reports. For
-details on doing that, see the [lint-tool documentation][lint-tool].
+lint errors, so you must fix any errors the lint tool reports.
 
-But in the unusual case of error reports for things essential to a
+In the unusual case of error reports for things essential to a
 certain test or that for other exceptional reasons shouldn't prevent
 a merge of a test, update and commit the `lint.whitelist` file in the
-web-platform-tests root directory to suppress the error reports. For
-details on doing that, see the [lint-tool documentation][lint-tool].
+web-platform-tests root directory to suppress the error reports.
 
-[lint-tool]: https://github.com/w3c/web-platform-tests/blob/master/docs/lint-tool.md
+For more details, see the [lint-tool documentation][lint-tool].
+
+[lint-tool]: http://web-platform-tests.org/writing-tests/lint-tool.html
 
 Adding command-line scripts ("tools" subdirs)
 ---------------------------------------------
@@ -305,5 +305,5 @@
 Documentation
 =============
 
-* [How to write and review tests](http://testthewebforward.org/docs/)
+* [How to write and review tests](http://web-platform-tests.org/)
 * [Documentation for the wptserve server](http://wptserve.readthedocs.org/en/latest/)
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_ecdh_bits-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_ecdh_bits-expected.txt
deleted file mode 100644
index 5733e0b5..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_ecdh_bits-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL WebCryptoAPI: deriveBits() Using ECDH Uncaught TypeError: Cannot read property 'importKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html
deleted file mode 100644
index a1890382..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: deriveBits() Using ECDH</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveBits">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="ecdh_bits.js"></script>
-
-<h1>deriveBits Tests for ECDH</h1>
-
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_ecdh_keys-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_ecdh_keys-expected.txt
deleted file mode 100644
index 93148818..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_ecdh_keys-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL WebCryptoAPI:deriveKey() Using ECDH Uncaught TypeError: Cannot read property 'importKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html
deleted file mode 100644
index b303295f..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI:deriveKey() Using ECDH</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="ecdh_keys.js"></script>
-
-<h1>deriveKey Tests for ECDH</h1>
-
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_hkdf-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_hkdf-expected.txt
deleted file mode 100644
index 68096e6..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_hkdf-expected.txt
+++ /dev/null
@@ -1,3712 +0,0 @@
-This is a testharness.js-based test.
-Found 3708 tests; 144 PASS, 3564 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL short derivedKey, normal salt, SHA-384, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS short derivedKey, normal salt, SHA-384, with normal info with missing salt 
-PASS short derivedKey, normal salt, SHA-384, with normal info with missing info 
-PASS short derivedKey, normal salt, SHA-384, with normal info with null length 
-FAIL short derivedKey, normal salt, SHA-384, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-384, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL short derivedKey, normal salt, SHA-384, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS short derivedKey, normal salt, SHA-384, with empty info with missing salt 
-PASS short derivedKey, normal salt, SHA-384, with empty info with missing info 
-PASS short derivedKey, normal salt, SHA-384, with empty info with null length 
-FAIL short derivedKey, normal salt, SHA-384, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-384, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL short derivedKey, normal salt, SHA-512, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS short derivedKey, normal salt, SHA-512, with normal info with missing salt 
-PASS short derivedKey, normal salt, SHA-512, with normal info with missing info 
-PASS short derivedKey, normal salt, SHA-512, with normal info with null length 
-FAIL short derivedKey, normal salt, SHA-512, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-512, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL short derivedKey, normal salt, SHA-512, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS short derivedKey, normal salt, SHA-512, with empty info with missing salt 
-PASS short derivedKey, normal salt, SHA-512, with empty info with missing info 
-PASS short derivedKey, normal salt, SHA-512, with empty info with null length 
-FAIL short derivedKey, normal salt, SHA-512, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-512, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL short derivedKey, normal salt, SHA-1, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS short derivedKey, normal salt, SHA-1, with normal info with missing salt 
-PASS short derivedKey, normal salt, SHA-1, with normal info with missing info 
-PASS short derivedKey, normal salt, SHA-1, with normal info with null length 
-FAIL short derivedKey, normal salt, SHA-1, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-1, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL short derivedKey, normal salt, SHA-1, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS short derivedKey, normal salt, SHA-1, with empty info with missing salt 
-PASS short derivedKey, normal salt, SHA-1, with empty info with missing info 
-PASS short derivedKey, normal salt, SHA-1, with empty info with null length 
-FAIL short derivedKey, normal salt, SHA-1, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-1, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL short derivedKey, normal salt, SHA-256, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS short derivedKey, normal salt, SHA-256, with normal info with missing salt 
-PASS short derivedKey, normal salt, SHA-256, with normal info with missing info 
-PASS short derivedKey, normal salt, SHA-256, with normal info with null length 
-FAIL short derivedKey, normal salt, SHA-256, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-256, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL short derivedKey, normal salt, SHA-256, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS short derivedKey, normal salt, SHA-256, with empty info with missing salt 
-PASS short derivedKey, normal salt, SHA-256, with empty info with missing info 
-PASS short derivedKey, normal salt, SHA-256, with empty info with null length 
-FAIL short derivedKey, normal salt, SHA-256, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-256, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, normal salt, PBKDF2, with normal info with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, normal salt, PBKDF2, with empty info with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL short derivedKey, empty salt, SHA-384, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS short derivedKey, empty salt, SHA-384, with normal info with missing salt 
-PASS short derivedKey, empty salt, SHA-384, with normal info with missing info 
-PASS short derivedKey, empty salt, SHA-384, with normal info with null length 
-FAIL short derivedKey, empty salt, SHA-384, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-384, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL short derivedKey, empty salt, SHA-384, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS short derivedKey, empty salt, SHA-384, with empty info with missing salt 
-PASS short derivedKey, empty salt, SHA-384, with empty info with missing info 
-PASS short derivedKey, empty salt, SHA-384, with empty info with null length 
-FAIL short derivedKey, empty salt, SHA-384, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-384, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL short derivedKey, empty salt, SHA-512, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS short derivedKey, empty salt, SHA-512, with normal info with missing salt 
-PASS short derivedKey, empty salt, SHA-512, with normal info with missing info 
-PASS short derivedKey, empty salt, SHA-512, with normal info with null length 
-FAIL short derivedKey, empty salt, SHA-512, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-512, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL short derivedKey, empty salt, SHA-512, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS short derivedKey, empty salt, SHA-512, with empty info with missing salt 
-PASS short derivedKey, empty salt, SHA-512, with empty info with missing info 
-PASS short derivedKey, empty salt, SHA-512, with empty info with null length 
-FAIL short derivedKey, empty salt, SHA-512, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-512, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL short derivedKey, empty salt, SHA-1, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS short derivedKey, empty salt, SHA-1, with normal info with missing salt 
-PASS short derivedKey, empty salt, SHA-1, with normal info with missing info 
-PASS short derivedKey, empty salt, SHA-1, with normal info with null length 
-FAIL short derivedKey, empty salt, SHA-1, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-1, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL short derivedKey, empty salt, SHA-1, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS short derivedKey, empty salt, SHA-1, with empty info with missing salt 
-PASS short derivedKey, empty salt, SHA-1, with empty info with missing info 
-PASS short derivedKey, empty salt, SHA-1, with empty info with null length 
-FAIL short derivedKey, empty salt, SHA-1, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-1, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL short derivedKey, empty salt, SHA-256, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS short derivedKey, empty salt, SHA-256, with normal info with missing salt 
-PASS short derivedKey, empty salt, SHA-256, with normal info with missing info 
-PASS short derivedKey, empty salt, SHA-256, with normal info with null length 
-FAIL short derivedKey, empty salt, SHA-256, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-256, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL short derivedKey, empty salt, SHA-256, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS short derivedKey, empty salt, SHA-256, with empty info with missing salt 
-PASS short derivedKey, empty salt, SHA-256, with empty info with missing info 
-PASS short derivedKey, empty salt, SHA-256, with empty info with null length 
-FAIL short derivedKey, empty salt, SHA-256, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-256, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short derivedKey, empty salt, PBKDF2, with normal info with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short derivedKey, empty salt, PBKDF2, with empty info with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL long derivedKey, normal salt, SHA-384, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS long derivedKey, normal salt, SHA-384, with normal info with missing salt 
-PASS long derivedKey, normal salt, SHA-384, with normal info with missing info 
-PASS long derivedKey, normal salt, SHA-384, with normal info with null length 
-FAIL long derivedKey, normal salt, SHA-384, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-384, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL long derivedKey, normal salt, SHA-384, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS long derivedKey, normal salt, SHA-384, with empty info with missing salt 
-PASS long derivedKey, normal salt, SHA-384, with empty info with missing info 
-PASS long derivedKey, normal salt, SHA-384, with empty info with null length 
-FAIL long derivedKey, normal salt, SHA-384, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-384, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL long derivedKey, normal salt, SHA-512, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS long derivedKey, normal salt, SHA-512, with normal info with missing salt 
-PASS long derivedKey, normal salt, SHA-512, with normal info with missing info 
-PASS long derivedKey, normal salt, SHA-512, with normal info with null length 
-FAIL long derivedKey, normal salt, SHA-512, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-512, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL long derivedKey, normal salt, SHA-512, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS long derivedKey, normal salt, SHA-512, with empty info with missing salt 
-PASS long derivedKey, normal salt, SHA-512, with empty info with missing info 
-PASS long derivedKey, normal salt, SHA-512, with empty info with null length 
-FAIL long derivedKey, normal salt, SHA-512, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-512, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL long derivedKey, normal salt, SHA-1, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS long derivedKey, normal salt, SHA-1, with normal info with missing salt 
-PASS long derivedKey, normal salt, SHA-1, with normal info with missing info 
-PASS long derivedKey, normal salt, SHA-1, with normal info with null length 
-FAIL long derivedKey, normal salt, SHA-1, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-1, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL long derivedKey, normal salt, SHA-1, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS long derivedKey, normal salt, SHA-1, with empty info with missing salt 
-PASS long derivedKey, normal salt, SHA-1, with empty info with missing info 
-PASS long derivedKey, normal salt, SHA-1, with empty info with null length 
-FAIL long derivedKey, normal salt, SHA-1, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-1, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL long derivedKey, normal salt, SHA-256, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS long derivedKey, normal salt, SHA-256, with normal info with missing salt 
-PASS long derivedKey, normal salt, SHA-256, with normal info with missing info 
-PASS long derivedKey, normal salt, SHA-256, with normal info with null length 
-FAIL long derivedKey, normal salt, SHA-256, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-256, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL long derivedKey, normal salt, SHA-256, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS long derivedKey, normal salt, SHA-256, with empty info with missing salt 
-PASS long derivedKey, normal salt, SHA-256, with empty info with missing info 
-PASS long derivedKey, normal salt, SHA-256, with empty info with null length 
-FAIL long derivedKey, normal salt, SHA-256, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-256, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, normal salt, PBKDF2, with normal info with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, normal salt, PBKDF2, with empty info with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL long derivedKey, empty salt, SHA-384, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS long derivedKey, empty salt, SHA-384, with normal info with missing salt 
-PASS long derivedKey, empty salt, SHA-384, with normal info with missing info 
-PASS long derivedKey, empty salt, SHA-384, with normal info with null length 
-FAIL long derivedKey, empty salt, SHA-384, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-384, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL long derivedKey, empty salt, SHA-384, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS long derivedKey, empty salt, SHA-384, with empty info with missing salt 
-PASS long derivedKey, empty salt, SHA-384, with empty info with missing info 
-PASS long derivedKey, empty salt, SHA-384, with empty info with null length 
-FAIL long derivedKey, empty salt, SHA-384, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-384, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL long derivedKey, empty salt, SHA-512, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS long derivedKey, empty salt, SHA-512, with normal info with missing salt 
-PASS long derivedKey, empty salt, SHA-512, with normal info with missing info 
-PASS long derivedKey, empty salt, SHA-512, with normal info with null length 
-FAIL long derivedKey, empty salt, SHA-512, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-512, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL long derivedKey, empty salt, SHA-512, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS long derivedKey, empty salt, SHA-512, with empty info with missing salt 
-PASS long derivedKey, empty salt, SHA-512, with empty info with missing info 
-PASS long derivedKey, empty salt, SHA-512, with empty info with null length 
-FAIL long derivedKey, empty salt, SHA-512, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-512, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL long derivedKey, empty salt, SHA-1, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS long derivedKey, empty salt, SHA-1, with normal info with missing salt 
-PASS long derivedKey, empty salt, SHA-1, with normal info with missing info 
-PASS long derivedKey, empty salt, SHA-1, with normal info with null length 
-FAIL long derivedKey, empty salt, SHA-1, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-1, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL long derivedKey, empty salt, SHA-1, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS long derivedKey, empty salt, SHA-1, with empty info with missing salt 
-PASS long derivedKey, empty salt, SHA-1, with empty info with missing info 
-PASS long derivedKey, empty salt, SHA-1, with empty info with null length 
-FAIL long derivedKey, empty salt, SHA-1, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-1, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL long derivedKey, empty salt, SHA-256, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS long derivedKey, empty salt, SHA-256, with normal info with missing salt 
-PASS long derivedKey, empty salt, SHA-256, with normal info with missing info 
-PASS long derivedKey, empty salt, SHA-256, with normal info with null length 
-FAIL long derivedKey, empty salt, SHA-256, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-256, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL long derivedKey, empty salt, SHA-256, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS long derivedKey, empty salt, SHA-256, with empty info with missing salt 
-PASS long derivedKey, empty salt, SHA-256, with empty info with missing info 
-PASS long derivedKey, empty salt, SHA-256, with empty info with null length 
-FAIL long derivedKey, empty salt, SHA-256, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-256, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long derivedKey, empty salt, PBKDF2, with normal info with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long derivedKey, empty salt, PBKDF2, with empty info with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL empty derivedKey, normal salt, SHA-384, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS empty derivedKey, normal salt, SHA-384, with normal info with missing salt 
-PASS empty derivedKey, normal salt, SHA-384, with normal info with missing info 
-PASS empty derivedKey, normal salt, SHA-384, with normal info with null length 
-FAIL empty derivedKey, normal salt, SHA-384, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-384, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL empty derivedKey, normal salt, SHA-384, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS empty derivedKey, normal salt, SHA-384, with empty info with missing salt 
-PASS empty derivedKey, normal salt, SHA-384, with empty info with missing info 
-PASS empty derivedKey, normal salt, SHA-384, with empty info with null length 
-FAIL empty derivedKey, normal salt, SHA-384, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-384, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL empty derivedKey, normal salt, SHA-512, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS empty derivedKey, normal salt, SHA-512, with normal info with missing salt 
-PASS empty derivedKey, normal salt, SHA-512, with normal info with missing info 
-PASS empty derivedKey, normal salt, SHA-512, with normal info with null length 
-FAIL empty derivedKey, normal salt, SHA-512, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-512, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL empty derivedKey, normal salt, SHA-512, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS empty derivedKey, normal salt, SHA-512, with empty info with missing salt 
-PASS empty derivedKey, normal salt, SHA-512, with empty info with missing info 
-PASS empty derivedKey, normal salt, SHA-512, with empty info with null length 
-FAIL empty derivedKey, normal salt, SHA-512, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-512, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL empty derivedKey, normal salt, SHA-1, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS empty derivedKey, normal salt, SHA-1, with normal info with missing salt 
-PASS empty derivedKey, normal salt, SHA-1, with normal info with missing info 
-PASS empty derivedKey, normal salt, SHA-1, with normal info with null length 
-FAIL empty derivedKey, normal salt, SHA-1, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-1, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL empty derivedKey, normal salt, SHA-1, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS empty derivedKey, normal salt, SHA-1, with empty info with missing salt 
-PASS empty derivedKey, normal salt, SHA-1, with empty info with missing info 
-PASS empty derivedKey, normal salt, SHA-1, with empty info with null length 
-FAIL empty derivedKey, normal salt, SHA-1, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-1, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL empty derivedKey, normal salt, SHA-256, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS empty derivedKey, normal salt, SHA-256, with normal info with missing salt 
-PASS empty derivedKey, normal salt, SHA-256, with normal info with missing info 
-PASS empty derivedKey, normal salt, SHA-256, with normal info with null length 
-FAIL empty derivedKey, normal salt, SHA-256, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-256, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL empty derivedKey, normal salt, SHA-256, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS empty derivedKey, normal salt, SHA-256, with empty info with missing salt 
-PASS empty derivedKey, normal salt, SHA-256, with empty info with missing info 
-PASS empty derivedKey, normal salt, SHA-256, with empty info with null length 
-FAIL empty derivedKey, normal salt, SHA-256, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-256, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, normal salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, normal salt, PBKDF2, with normal info with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, normal salt, PBKDF2, with empty info with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, normal salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL empty derivedKey, empty salt, SHA-384, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-384, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS empty derivedKey, empty salt, SHA-384, with normal info with missing salt 
-PASS empty derivedKey, empty salt, SHA-384, with normal info with missing info 
-PASS empty derivedKey, empty salt, SHA-384, with normal info with null length 
-FAIL empty derivedKey, empty salt, SHA-384, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-384, with normal info with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-384, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-384, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL empty derivedKey, empty salt, SHA-384, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-384, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS empty derivedKey, empty salt, SHA-384, with empty info with missing salt 
-PASS empty derivedKey, empty salt, SHA-384, with empty info with missing info 
-PASS empty derivedKey, empty salt, SHA-384, with empty info with null length 
-FAIL empty derivedKey, empty salt, SHA-384, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-384, with empty info with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-384, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-384, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL empty derivedKey, empty salt, SHA-512, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-512, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS empty derivedKey, empty salt, SHA-512, with normal info with missing salt 
-PASS empty derivedKey, empty salt, SHA-512, with normal info with missing info 
-PASS empty derivedKey, empty salt, SHA-512, with normal info with null length 
-FAIL empty derivedKey, empty salt, SHA-512, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-512, with normal info with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-512, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-512, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL empty derivedKey, empty salt, SHA-512, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-512, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS empty derivedKey, empty salt, SHA-512, with empty info with missing salt 
-PASS empty derivedKey, empty salt, SHA-512, with empty info with missing info 
-PASS empty derivedKey, empty salt, SHA-512, with empty info with null length 
-FAIL empty derivedKey, empty salt, SHA-512, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-512, with empty info with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-512, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-512, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL empty derivedKey, empty salt, SHA-1, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-1, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS empty derivedKey, empty salt, SHA-1, with normal info with missing salt 
-PASS empty derivedKey, empty salt, SHA-1, with normal info with missing info 
-PASS empty derivedKey, empty salt, SHA-1, with normal info with null length 
-FAIL empty derivedKey, empty salt, SHA-1, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-1, with normal info with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-1, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-1, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL empty derivedKey, empty salt, SHA-1, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-1, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS empty derivedKey, empty salt, SHA-1, with empty info with missing salt 
-PASS empty derivedKey, empty salt, SHA-1, with empty info with missing info 
-PASS empty derivedKey, empty salt, SHA-1, with empty info with null length 
-FAIL empty derivedKey, empty salt, SHA-1, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-1, with empty info with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-1, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-1, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL empty derivedKey, empty salt, SHA-256, with normal info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-256, with normal info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS empty derivedKey, empty salt, SHA-256, with normal info with missing salt 
-PASS empty derivedKey, empty salt, SHA-256, with normal info with missing info 
-PASS empty derivedKey, empty salt, SHA-256, with normal info with null length 
-FAIL empty derivedKey, empty salt, SHA-256, with normal info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-256, with normal info with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-256, with normal info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-256, with normal info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL empty derivedKey, empty salt, SHA-256, with empty info with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-256, with empty info assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-PASS empty derivedKey, empty salt, SHA-256, with empty info with missing salt 
-PASS empty derivedKey, empty salt, SHA-256, with empty info with missing info 
-PASS empty derivedKey, empty salt, SHA-256, with empty info with null length 
-FAIL empty derivedKey, empty salt, SHA-256, with empty info with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-256, with empty info with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-256, with empty info with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, empty salt, SHA-256, with empty info with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty derivedKey, empty salt, PBKDF2, with normal info with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, PBKDF2, with normal info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty derivedKey, empty salt, PBKDF2, with empty info with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty derivedKey, empty salt, PBKDF2, with empty info assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_hkdf.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_hkdf.html
deleted file mode 100644
index 23143bdbc8..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_hkdf.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: deriveBits() and deriveKey() Using HKDF</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveBits">
-<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="hkdf_vectors.js"></script>
-<script src="hkdf.js"></script>
-
-<h1>deriveBits and deriveKey Tests for HKDF</h1>
-
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_pbkdf2-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_pbkdf2-expected.txt
deleted file mode 100644
index f545493..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_pbkdf2-expected.txt
+++ /dev/null
@@ -1,8743 +0,0 @@
-This is a testharness.js-based test.
-Found 8739 tests; 0 PASS, 8739 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-384, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-512, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-1, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, short salt, SHA-256, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, short salt, PBKDF2, with 1 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, short salt, PBKDF2, with 1000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, short salt, PBKDF2, with 100000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-384, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-512, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-1, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, long salt, SHA-256, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, long salt, PBKDF2, with 1 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, long salt, PBKDF2, with 1000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, long salt, PBKDF2, with 100000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-384, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-512, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-1, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL short password, empty salt, SHA-256, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL short password, empty salt, PBKDF2, with 1 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, empty salt, PBKDF2, with 1000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL short password, empty salt, PBKDF2, with 100000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using short password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using short password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using short password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using short password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using short password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using short password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using short password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using short password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using short password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using short password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using short password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using short password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using short password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using short password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using short password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using short password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-384, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-512, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-1, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, short salt, SHA-256, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, short salt, PBKDF2, with 1 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, short salt, PBKDF2, with 1000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, short salt, PBKDF2, with 100000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-384, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-512, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-1, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, long salt, SHA-256, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, long salt, PBKDF2, with 1 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, long salt, PBKDF2, with 1000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, long salt, PBKDF2, with 100000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-384, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-512, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-1, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL long password, empty salt, SHA-256, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL long password, empty salt, PBKDF2, with 1 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, empty salt, PBKDF2, with 1000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL long password, empty salt, PBKDF2, with 100000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using long password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using long password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using long password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using long password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using long password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using long password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using long password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using long password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using long password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using long password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using long password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-384, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, short salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-512, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, short salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-1, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, short salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, short salt, SHA-256, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, short salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, short salt, PBKDF2, with 1 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, short salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, short salt, PBKDF2, with 1000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, short salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, short salt, PBKDF2, with 100000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, short salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-384, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, long salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-512, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, long salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-1, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, long salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-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 TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL 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 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL 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 assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, long salt, SHA-256, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, long salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, long salt, PBKDF2, with 1 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, long salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, long salt, PBKDF2, with 1000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, long salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, long salt, PBKDF2, with 100000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, long salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-384, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 1 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 1000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 100000 iterations with bad hash name SHA384 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-384, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-384, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-512, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 1 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 1000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 100000 iterations with bad hash name SHA512 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-512, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-512, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-1, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 1 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 1000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 100000 iterations with bad hash name SHA1 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-1, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-1, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-256, with 1 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 1 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 1 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 1 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 1 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 1 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 1 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 1000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 1000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 1000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 1000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 1000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 1000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveBits failed with error TypeError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error TypeError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. Reached unreachable code
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveKey with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage assert_equals: deriveKey with missing deriveKey usage correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 100000 iterations with null length assert_equals: deriveBits with null length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 100000 iterations with 0 length assert_equals: deriveBits with 0 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 100000 iterations with non-multiple of 8 length assert_equals: deriveBits with non-multiple of 8 length correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 assert_equals: deriveBits with bad hash name correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 100000 iterations with missing deriveBits usage assert_equals: deriveBits with missing deriveBits usage correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key assert_equals: deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "InvalidAccessError" but got "TypeError"
-FAIL empty password, empty salt, SHA-256, with 0 iterations assert_equals: deriveBits with 0 iterations correctly threw OperationError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, SHA-256, with 0 iterations assert_equals: derivekey with 0 iterations correctly threw OperationError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "OperationError" but got "TypeError"
-FAIL empty password, empty salt, PBKDF2, with 1 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, PBKDF2, with 1 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, empty salt, PBKDF2, with 1000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, PBKDF2, with 1000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL empty password, empty salt, PBKDF2, with 100000 iterations with non-digest algorithm PBKDF2 assert_equals: deriveBits with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveBits' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 128  using empty password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 192  using empty password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CBC length: 256  using empty password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 128  using empty password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 192  using empty password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-CTR length: 256  using empty password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 128  using empty password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 192  using empty password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-GCM length: 256  using empty password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 128  using empty password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 192  using empty password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: AES-KW length: 256  using empty password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using empty password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using empty password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using empty password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using empty password, empty salt, PBKDF2, with 100000 iterations assert_equals: derivekey with non-digest algorithm correctly threw NotSupportedError: Failed to execute 'deriveKey' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'. expected "NotSupportedError" but got "TypeError"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html
deleted file mode 100644
index 0658b1a..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveBits">
-<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="pbkdf2_vectors.js"></script>
-<script src="pbkdf2.js"></script>
-
-<h1>deriveBits and deriveKey Tests for PBKDF2</h1>
-
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/digest/test_digest-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/digest/test_digest-expected.txt
deleted file mode 100644
index cb90610..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/digest/test_digest-expected.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-This is a testharness.js-based test.
-Found 80 tests; 0 PASS, 80 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL SHA-1 with empty source data Cannot read property 'digest' of undefined
-FAIL sha-1 with empty source data Cannot read property 'digest' of undefined
-FAIL Sha-1 with empty source data Cannot read property 'digest' of undefined
-FAIL SHA-1 with empty source data and altered buffer after call Cannot read property 'digest' of undefined
-FAIL SHA-256 with empty source data Cannot read property 'digest' of undefined
-FAIL sha-256 with empty source data Cannot read property 'digest' of undefined
-FAIL Sha-256 with empty source data Cannot read property 'digest' of undefined
-FAIL SHA-256 with empty source data and altered buffer after call Cannot read property 'digest' of undefined
-FAIL SHA-384 with empty source data Cannot read property 'digest' of undefined
-FAIL sha-384 with empty source data Cannot read property 'digest' of undefined
-FAIL Sha-384 with empty source data Cannot read property 'digest' of undefined
-FAIL SHA-384 with empty source data and altered buffer after call Cannot read property 'digest' of undefined
-FAIL SHA-512 with empty source data Cannot read property 'digest' of undefined
-FAIL sha-512 with empty source data Cannot read property 'digest' of undefined
-FAIL Sha-512 with empty source data Cannot read property 'digest' of undefined
-FAIL SHA-512 with empty source data and altered buffer after call Cannot read property 'digest' of undefined
-FAIL SHA-1 with short source data Cannot read property 'digest' of undefined
-FAIL sha-1 with short source data Cannot read property 'digest' of undefined
-FAIL Sha-1 with short source data Cannot read property 'digest' of undefined
-FAIL SHA-1 with short source data and altered buffer after call Cannot read property 'digest' of undefined
-FAIL SHA-256 with short source data Cannot read property 'digest' of undefined
-FAIL sha-256 with short source data Cannot read property 'digest' of undefined
-FAIL Sha-256 with short source data Cannot read property 'digest' of undefined
-FAIL SHA-256 with short source data and altered buffer after call Cannot read property 'digest' of undefined
-FAIL SHA-384 with short source data Cannot read property 'digest' of undefined
-FAIL sha-384 with short source data Cannot read property 'digest' of undefined
-FAIL Sha-384 with short source data Cannot read property 'digest' of undefined
-FAIL SHA-384 with short source data and altered buffer after call Cannot read property 'digest' of undefined
-FAIL SHA-512 with short source data Cannot read property 'digest' of undefined
-FAIL sha-512 with short source data Cannot read property 'digest' of undefined
-FAIL Sha-512 with short source data Cannot read property 'digest' of undefined
-FAIL SHA-512 with short source data and altered buffer after call Cannot read property 'digest' of undefined
-FAIL SHA-1 with medium source data Cannot read property 'digest' of undefined
-FAIL sha-1 with medium source data Cannot read property 'digest' of undefined
-FAIL Sha-1 with medium source data Cannot read property 'digest' of undefined
-FAIL SHA-1 with medium source data and altered buffer after call Cannot read property 'digest' of undefined
-FAIL SHA-256 with medium source data Cannot read property 'digest' of undefined
-FAIL sha-256 with medium source data Cannot read property 'digest' of undefined
-FAIL Sha-256 with medium source data Cannot read property 'digest' of undefined
-FAIL SHA-256 with medium source data and altered buffer after call Cannot read property 'digest' of undefined
-FAIL SHA-384 with medium source data Cannot read property 'digest' of undefined
-FAIL sha-384 with medium source data Cannot read property 'digest' of undefined
-FAIL Sha-384 with medium source data Cannot read property 'digest' of undefined
-FAIL SHA-384 with medium source data and altered buffer after call Cannot read property 'digest' of undefined
-FAIL SHA-512 with medium source data Cannot read property 'digest' of undefined
-FAIL sha-512 with medium source data Cannot read property 'digest' of undefined
-FAIL Sha-512 with medium source data Cannot read property 'digest' of undefined
-FAIL SHA-512 with medium source data and altered buffer after call Cannot read property 'digest' of undefined
-FAIL SHA-1 with long source data Cannot read property 'digest' of undefined
-FAIL sha-1 with long source data Cannot read property 'digest' of undefined
-FAIL Sha-1 with long source data Cannot read property 'digest' of undefined
-FAIL SHA-1 with long source data and altered buffer after call Cannot read property 'digest' of undefined
-FAIL SHA-256 with long source data Cannot read property 'digest' of undefined
-FAIL sha-256 with long source data Cannot read property 'digest' of undefined
-FAIL Sha-256 with long source data Cannot read property 'digest' of undefined
-FAIL SHA-256 with long source data and altered buffer after call Cannot read property 'digest' of undefined
-FAIL SHA-384 with long source data Cannot read property 'digest' of undefined
-FAIL sha-384 with long source data Cannot read property 'digest' of undefined
-FAIL Sha-384 with long source data Cannot read property 'digest' of undefined
-FAIL SHA-384 with long source data and altered buffer after call Cannot read property 'digest' of undefined
-FAIL SHA-512 with long source data Cannot read property 'digest' of undefined
-FAIL sha-512 with long source data Cannot read property 'digest' of undefined
-FAIL Sha-512 with long source data Cannot read property 'digest' of undefined
-FAIL SHA-512 with long source data and altered buffer after call Cannot read property 'digest' of undefined
-FAIL AES-GCM with empty Cannot read property 'digest' of undefined
-FAIL RSA-OAEP with empty Cannot read property 'digest' of undefined
-FAIL PBKDF2 with empty Cannot read property 'digest' of undefined
-FAIL AES-KW with empty Cannot read property 'digest' of undefined
-FAIL AES-GCM with short Cannot read property 'digest' of undefined
-FAIL RSA-OAEP with short Cannot read property 'digest' of undefined
-FAIL PBKDF2 with short Cannot read property 'digest' of undefined
-FAIL AES-KW with short Cannot read property 'digest' of undefined
-FAIL AES-GCM with medium Cannot read property 'digest' of undefined
-FAIL RSA-OAEP with medium Cannot read property 'digest' of undefined
-FAIL PBKDF2 with medium Cannot read property 'digest' of undefined
-FAIL AES-KW with medium Cannot read property 'digest' of undefined
-FAIL AES-GCM with long Cannot read property 'digest' of undefined
-FAIL RSA-OAEP with long Cannot read property 'digest' of undefined
-FAIL PBKDF2 with long Cannot read property 'digest' of undefined
-FAIL AES-KW with long Cannot read property 'digest' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/digest/test_digest.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/digest/test_digest.html
deleted file mode 100644
index e6e7aab..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/digest/test_digest.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: digest()</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#dfn-SubtleCrypto-method-digest">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="digest.js"></script>
-
-<h1>encrypt Tests for digest method</h1>
-
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_cbc-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_cbc-expected.txt
deleted file mode 100644
index acaf858f8..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_cbc-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL WebCryptoAPI: encrypt() Using AES-CBC Uncaught TypeError: Cannot read property 'importKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_cbc.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_cbc.html
deleted file mode 100644
index 7a2805d3..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_cbc.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: encrypt() Using AES-CBC</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#SubtleCrypto-method-encrypt">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="aes_cbc_vectors.js"></script>
-<script src="aes.js"></script>
-
-<h1>encrypt Tests for AES-CBC</h1>
-
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_ctr-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_ctr-expected.txt
deleted file mode 100644
index fe841be..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_ctr-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL WebCryptoAPI: encrypt() Using AES-CTR Uncaught TypeError: Cannot read property 'importKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_ctr.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_ctr.html
deleted file mode 100644
index a48dfd3f..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_ctr.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: encrypt() Using AES-CTR</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#SubtleCrypto-method-encrypt">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="aes_ctr_vectors.js"></script>
-<script src="aes.js"></script>
-
-<h1>encrypt Tests for AES-CTR</h1>
-
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_gcm-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_gcm-expected.txt
deleted file mode 100644
index 9cb67f8..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_gcm-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL WebCryptoAPI: encrypt() Using AES-GCM Uncaught TypeError: Cannot read property 'importKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_gcm.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_gcm.html
deleted file mode 100644
index 9f8b8bd..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_gcm.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: encrypt() Using AES-GCM</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#SubtleCrypto-method-encrypt">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="aes_gcm_vectors.js"></script>
-<script src="aes.js"></script>
-
-<h1>encrypt Tests for AES-GCM</h1>
-
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_rsa_oaep-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_rsa_oaep-expected.txt
deleted file mode 100644
index 1fd97bb..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_rsa_oaep-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL WebCryptoAPI: encrypt() Using RSA-OAEP Uncaught TypeError: Cannot read property 'importKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_rsa_oaep.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_rsa_oaep.html
deleted file mode 100644
index df8d8f4..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/encrypt_decrypt/test_rsa_oaep.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: encrypt() Using RSA-OAEP</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#SubtleCrypto-method-encrypt">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="rsa_vectors.js"></script>
-<script src="rsa.js"></script>
-
-<h1>encrypt Tests for RSA-OAEP</h1>
-
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_aes-cbc-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_aes-cbc-expected.txt
deleted file mode 100644
index ff38b1b..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_aes-cbc-expected.txt
+++ /dev/null
@@ -1,292 +0,0 @@
-This is a testharness.js-based test.
-Found 288 tests; 0 PASS, 288 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_aes-cbc.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_aes-cbc.html
deleted file mode 100644
index a3054a5..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_aes-cbc.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() Successful Calls</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="successes.js"></script>
-
-<h1>generateKey Tests for Good Parameters</h1>
-<p>
-    <strong>Warning!</strong> RSA key generation is intrinsically
-    very slow, so the related tests can take up to
-    several minutes to complete, depending on browser!
-</p>
-
-<div id="log"></div>
-<script>
-run_test("AES-CBC");
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_aes-ctr-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_aes-ctr-expected.txt
deleted file mode 100644
index 88aec1e..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_aes-ctr-expected.txt
+++ /dev/null
@@ -1,292 +0,0 @@
-This is a testharness.js-based test.
-Found 288 tests; 0 PASS, 288 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_aes-ctr.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_aes-ctr.html
deleted file mode 100644
index bb1abf0d..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_aes-ctr.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() Successful Calls</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="successes.js"></script>
-
-<h1>generateKey Tests for Good Parameters</h1>
-<p>
-    <strong>Warning!</strong> RSA key generation is intrinsically
-    very slow, so the related tests can take up to
-    several minutes to complete, depending on browser!
-</p>
-
-<div id="log"></div>
-<script>
-run_test("AES-CTR");
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures-expected.txt
deleted file mode 100644
index 3356c8f..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures-expected.txt
+++ /dev/null
@@ -1,2372 +0,0 @@
-This is a testharness.js-based test.
-Found 2368 tests; 0 PASS, 2368 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Bad algorithm: generateKey(AES, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: 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, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: 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, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: 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, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: 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, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: 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, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: 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, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: 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, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: 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, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 128, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 128, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 192, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 192, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 256, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 256, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 128, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 128, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 192, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 192, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 256, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 256, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 128, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 128, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 192, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 192, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 256, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 256, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 128, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 128, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 192, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 192, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 256, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 256, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-256}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-256}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-384}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-384}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-521}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-521}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-256}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-256}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-384}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-384}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-521}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-521}, true, []) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures.html
deleted file mode 100644
index 14e57b2..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() for Failures</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="failures.js"></script>
-
-<h1>generateKey Tests for Bad Parameters</h1>
-
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-CBC-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-CBC-expected.txt
deleted file mode 100644
index 28a2bf53f..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-CBC-expected.txt
+++ /dev/null
@@ -1,742 +0,0 @@
-This is a testharness.js-based test.
-Found 738 tests; 0 PASS, 738 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Bad algorithm: generateKey(AES, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 128, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 128, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 192, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 192, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 256, name: AES-CBC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 256, name: AES-CBC}, true, []) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-CBC.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-CBC.html
deleted file mode 100644
index 7650908c..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-CBC.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() for Failures</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="failures.js"></script>
-
-<h1>generateKey Tests for Bad Parameters</h1>
-
-<div id="log"></div>
-<script>
-run_test(["AES-CBC"]);
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-CTR-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-CTR-expected.txt
deleted file mode 100644
index 417c1a4..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-CTR-expected.txt
+++ /dev/null
@@ -1,742 +0,0 @@
-This is a testharness.js-based test.
-Found 738 tests; 0 PASS, 738 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Bad algorithm: generateKey(AES, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 128, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 128, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 192, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 192, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 256, name: AES-CTR}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 256, name: AES-CTR}, true, []) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-CTR.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-CTR.html
deleted file mode 100644
index f08737c..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-CTR.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() for Failures</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="failures.js"></script>
-
-<h1>generateKey Tests for Bad Parameters</h1>
-
-<div id="log"></div>
-<script>
-run_test(["AES-CTR"]);
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt
deleted file mode 100644
index 374f314..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt
+++ /dev/null
@@ -1,742 +0,0 @@
-This is a testharness.js-based test.
-Found 738 tests; 0 PASS, 738 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Bad algorithm: generateKey(AES, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 128, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 128, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 192, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 192, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 256, name: AES-GCM}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 256, name: AES-GCM}, true, []) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-GCM.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-GCM.html
deleted file mode 100644
index 4ef6a777..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-GCM.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() for Failures</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="failures.js"></script>
-
-<h1>generateKey Tests for Bad Parameters</h1>
-
-<div id="log"></div>
-<script>
-run_test(["AES-GCM"]);
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-KW-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-KW-expected.txt
deleted file mode 100644
index 2eca11a..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-KW-expected.txt
+++ /dev/null
@@ -1,484 +0,0 @@
-This is a testharness.js-based test.
-Found 480 tests; 0 PASS, 480 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Bad algorithm: generateKey(AES, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 128, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 128, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 192, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 192, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 256, name: AES-KW}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({length: 256, name: AES-KW}, true, []) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-KW.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-KW.html
deleted file mode 100644
index 7cbb4f8..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_AES-KW.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() for Failures</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="failures.js"></script>
-
-<h1>generateKey Tests for Bad Parameters</h1>
-
-<div id="log"></div>
-<script>
-run_test(["AES-KW"]);
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_ECDH-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_ECDH-expected.txt
deleted file mode 100644
index 7242951..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_ECDH-expected.txt
+++ /dev/null
@@ -1,444 +0,0 @@
-This is a testharness.js-based test.
-Found 440 tests; 0 PASS, 440 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Bad algorithm: generateKey(AES, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-256}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-256}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-384}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-384}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-521}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-521}, true, []) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_ECDH.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_ECDH.html
deleted file mode 100644
index c606a5b..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_ECDH.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() for Failures</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="failures.js"></script>
-
-<h1>generateKey Tests for Bad Parameters</h1>
-
-<div id="log"></div>
-<script>
-run_test(["ECDH"]);
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_ECDSA-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_ECDSA-expected.txt
deleted file mode 100644
index fbb4291..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_ECDSA-expected.txt
+++ /dev/null
@@ -1,422 +0,0 @@
-This is a testharness.js-based test.
-Found 418 tests; 0 PASS, 418 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Bad algorithm: generateKey(AES, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-256}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-256}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-384}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-384}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-521}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-521}, true, []) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_ECDSA.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_ECDSA.html
deleted file mode 100644
index 8b742e8..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_ECDSA.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() for Failures</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="failures.js"></script>
-
-<h1>generateKey Tests for Bad Parameters</h1>
-
-<div id="log"></div>
-<script>
-run_test(["ECDSA"]);
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_HMAC-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_HMAC-expected.txt
deleted file mode 100644
index a2b49b32..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_HMAC-expected.txt
+++ /dev/null
@@ -1,456 +0,0 @@
-This is a testharness.js-based test.
-Found 452 tests; 0 PASS, 452 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Bad algorithm: generateKey(AES, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_HMAC.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_HMAC.html
deleted file mode 100644
index e037f0d..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_HMAC.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() for Failures</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="failures.js"></script>
-
-<h1>generateKey Tests for Bad Parameters</h1>
-
-<div id="log"></div>
-<script>
-run_test(["HMAC"]);
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSA-OAEP-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSA-OAEP-expected.txt
deleted file mode 100644
index 517efc1f..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSA-OAEP-expected.txt
+++ /dev/null
@@ -1,500 +0,0 @@
-This is a testharness.js-based test.
-Found 496 tests; 0 PASS, 496 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Bad algorithm: generateKey(AES, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: 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, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: 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, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: 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, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: 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, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: 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, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: 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, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: 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, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: 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, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html
deleted file mode 100644
index ddd63beb..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() for Failures</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="failures.js"></script>
-
-<h1>generateKey Tests for Bad Parameters</h1>
-
-<div id="log"></div>
-<script>
-run_test(["RSA-OAEP"]);
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSA-PSS-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSA-PSS-expected.txt
deleted file mode 100644
index 465c02d..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSA-PSS-expected.txt
+++ /dev/null
@@ -1,396 +0,0 @@
-This is a testharness.js-based test.
-Found 392 tests; 0 PASS, 392 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Bad algorithm: generateKey(AES, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSA-PSS.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSA-PSS.html
deleted file mode 100644
index 2814b34..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSA-PSS.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() for Failures</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="failures.js"></script>
-
-<h1>generateKey Tests for Bad Parameters</h1>
-
-<div id="log"></div>
-<script>
-run_test(["RSA-PSS"]);
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5-expected.txt
deleted file mode 100644
index 15f4f84..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5-expected.txt
+++ /dev/null
@@ -1,396 +0,0 @@
-This is a testharness.js-based test.
-Found 392 tests; 0 PASS, 392 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Bad algorithm: generateKey(AES, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) Cannot read property 'generateKey' of undefined
-FAIL Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html
deleted file mode 100644
index 0e28914..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() for Failures</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="failures.js"></script>
-
-<h1>generateKey Tests for Bad Parameters</h1>
-
-<div id="log"></div>
-<script>
-run_test(["RSASSA-PKCS1-v1_5"]);
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes-expected.txt
deleted file mode 100644
index 0cb1849..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes-expected.txt
+++ /dev/null
@@ -1,1390 +0,0 @@
-This is a testharness.js-based test.
-Found 1386 tests; 0 PASS, 1386 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-kw}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-kw}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-kw}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-kw}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-kw}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-kw}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-kw}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-kw}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-kw}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-kw}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-kw}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-kw}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-kw}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-kw}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-kw}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-kw}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-kw}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-kw}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-kw}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-kw}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-kw}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-kw}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-kw}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-kw}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-kw}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-kw}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-kw}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-kw}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-kw}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-kw}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-kw}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-kw}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-kw}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-kw}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-kw}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-kw}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: hmac}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: hmac}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: hmac}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: hmac}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: hmac}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: hmac}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: hmac}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: hmac}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: hmac}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: hmac}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: hmac}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: hmac}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: hmac}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: hmac}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: hmac}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: hmac}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: hmac}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: hmac}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: hmac}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: hmac}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: hmac}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: hmac}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: hmac}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: hmac}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: hmac}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: hmac}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: hmac}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: hmac}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: hmac}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: hmac}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: hmac}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: hmac}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes.html
deleted file mode 100644
index 384db1c..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() Successful Calls</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="successes.js"></script>
-
-<h1>generateKey Tests for Good Parameters</h1>
-<p>
-    <strong>Warning!</strong> RSA key generation is intrinsically
-    very slow, so the related tests can take up to
-    several minutes to complete, depending on browser!
-</p>
-
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-CBC-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-CBC-expected.txt
deleted file mode 100644
index ff38b1b..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-CBC-expected.txt
+++ /dev/null
@@ -1,292 +0,0 @@
-This is a testharness.js-based test.
-Found 288 tests; 0 PASS, 288 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-CBC.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-CBC.html
deleted file mode 100644
index af80935..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-CBC.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() Successful Calls</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="successes.js"></script>
-
-<h1>generateKey Tests for Good Parameters</h1>
-<p>
-    <strong>Warning!</strong> RSA key generation is intrinsically
-    very slow, so the related tests can take up to
-    several minutes to complete, depending on browser!
-</p>
-
-<div id="log"></div>
-<script>
-run_test(["AES-CBC"]);
-</script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-CTR-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-CTR-expected.txt
deleted file mode 100644
index 88aec1e..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-CTR-expected.txt
+++ /dev/null
@@ -1,292 +0,0 @@
-This is a testharness.js-based test.
-Found 288 tests; 0 PASS, 288 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-ctr}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-CTR.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-CTR.html
deleted file mode 100644
index 3608a4f..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-CTR.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() Successful Calls</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="successes.js"></script>
-
-<h1>generateKey Tests for Good Parameters</h1>
-<p>
-    <strong>Warning!</strong> RSA key generation is intrinsically
-    very slow, so the related tests can take up to
-    several minutes to complete, depending on browser!
-</p>
-
-<div id="log"></div>
-<script>
-run_test(["AES-CTR"]);
-</script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-GCM-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-GCM-expected.txt
deleted file mode 100644
index 9ae2da8..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-GCM-expected.txt
+++ /dev/null
@@ -1,292 +0,0 @@
-This is a testharness.js-based test.
-Found 288 tests; 0 PASS, 288 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-GCM.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-GCM.html
deleted file mode 100644
index eb7c6b5d..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-GCM.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() Successful Calls</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="successes.js"></script>
-
-<h1>generateKey Tests for Good Parameters</h1>
-<p>
-    <strong>Warning!</strong> RSA key generation is intrinsically
-    very slow, so the related tests can take up to
-    several minutes to complete, depending on browser!
-</p>
-
-<div id="log"></div>
-<script>
-run_test(["AES-GCM"]);
-</script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-KW-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-KW-expected.txt
deleted file mode 100644
index 71ca90f..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-KW-expected.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-This is a testharness.js-based test.
-Found 72 tests; 0 PASS, 72 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Success: generateKey({length: 128, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-KW}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-KW}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-KW}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-KW}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-kw}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-kw}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-kw}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-kw}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-kw}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-kw}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-kw}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-kw}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-kw}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-kw}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-kw}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-kw}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-kw}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-kw}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-kw}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-kw}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-kw}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-kw}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-kw}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-kw}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-kw}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-kw}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-kw}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-kw}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 128, name: Aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-kw}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-kw}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-kw}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-kw}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-kw}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-kw}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 192, name: Aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-kw}, false, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-kw}, true, [wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-kw}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-kw}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-kw}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-kw}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({length: 256, name: Aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey]) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-KW.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-KW.html
deleted file mode 100644
index 9beab20..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_AES-KW.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() Successful Calls</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="successes.js"></script>
-
-<h1>generateKey Tests for Good Parameters</h1>
-<p>
-    <strong>Warning!</strong> RSA key generation is intrinsically
-    very slow, so the related tests can take up to
-    several minutes to complete, depending on browser!
-</p>
-
-<div id="log"></div>
-<script>
-run_test(["AES-KW"]);
-</script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_ECDH-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_ECDH-expected.txt
deleted file mode 100644
index 8c287e97..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_ECDH-expected.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-This is a testharness.js-based test.
-Found 72 tests; 0 PASS, 72 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveBits, deriveKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_ECDH.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_ECDH.html
deleted file mode 100644
index 9871f57..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_ECDH.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() Successful Calls</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="successes.js"></script>
-
-<h1>generateKey Tests for Good Parameters</h1>
-<p>
-    <strong>Warning!</strong> RSA key generation is intrinsically
-    very slow, so the related tests can take up to
-    several minutes to complete, depending on browser!
-</p>
-
-<div id="log"></div>
-<script>
-run_test(["ECDH"]);
-</script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_ECDSA-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_ECDSA-expected.txt
deleted file mode 100644
index 08251f36..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_ECDSA-expected.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-This is a testharness.js-based test.
-Found 54 tests; 0 PASS, 54 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_ECDSA.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_ECDSA.html
deleted file mode 100644
index f32a556..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_ECDSA.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() Successful Calls</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="successes.js"></script>
-
-<h1>generateKey Tests for Good Parameters</h1>
-<p>
-    <strong>Warning!</strong> RSA key generation is intrinsically
-    very slow, so the related tests can take up to
-    several minutes to complete, depending on browser!
-</p>
-
-<div id="log"></div>
-<script>
-run_test(["ECDSA"]);
-</script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_HMAC-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_HMAC-expected.txt
deleted file mode 100644
index d9b24dc..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_HMAC-expected.txt
+++ /dev/null
@@ -1,100 +0,0 @@
-This is a testharness.js-based test.
-Found 96 tests; 0 PASS, 96 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: hmac}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: hmac}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: hmac}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: hmac}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: hmac}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: hmac}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: hmac}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: hmac}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: hmac}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: hmac}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: hmac}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: hmac}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: hmac}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: hmac}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: hmac}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: hmac}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: hmac}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: hmac}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: hmac}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: hmac}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: hmac}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: hmac}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: hmac}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: hmac}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: hmac}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: hmac}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: hmac}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: hmac}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: hmac}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: hmac}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: hmac}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: hmac}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, false, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, true, [verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, false, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, true, [sign, verify, sign, verify]) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_HMAC.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_HMAC.html
deleted file mode 100644
index 819b35d..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_HMAC.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() Successful Calls</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="successes.js"></script>
-
-<h1>generateKey Tests for Good Parameters</h1>
-<p>
-    <strong>Warning!</strong> RSA key generation is intrinsically
-    very slow, so the related tests can take up to
-    several minutes to complete, depending on browser!
-</p>
-
-<div id="log"></div>
-<script>
-run_test(["HMAC"]);
-</script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSA-OAEP-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSA-OAEP-expected.txt
deleted file mode 100644
index 6d494aa..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSA-OAEP-expected.txt
+++ /dev/null
@@ -1,160 +0,0 @@
-This is a testharness.js-based test.
-Found 156 tests; 0 PASS, 156 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-FAIL 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]) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html
deleted file mode 100644
index db58fd6..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() Successful Calls</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="successes.js"></script>
-
-<h1>generateKey Tests for Good Parameters</h1>
-<p>
-    <strong>Warning!</strong> RSA key generation is intrinsically
-    very slow, so the related tests can take up to
-    several minutes to complete, depending on browser!
-</p>
-
-<div id="log"></div>
-<script>
-run_test(["RSA-OAEP"]);
-</script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSA-PSS-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSA-PSS-expected.txt
deleted file mode 100644
index ac1e300..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSA-PSS-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-This is a testharness.js-based test.
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSA-PSS.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSA-PSS.html
deleted file mode 100644
index d6a3c1b0..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSA-PSS.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() Successful Calls</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="successes.js"></script>
-
-<h1>generateKey Tests for Good Parameters</h1>
-<p>
-    <strong>Warning!</strong> RSA key generation is intrinsically
-    very slow, so the related tests can take up to
-    several minutes to complete, depending on browser!
-</p>
-
-<div id="log"></div>
-<script>
-run_test(["RSA-PSS"]);
-</script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5-expected.txt
deleted file mode 100644
index 459d650..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-This is a testharness.js-based test.
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html
deleted file mode 100644
index 3567879..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: generateKey() Successful Calls</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://www.w3.org/TR/WebCryptoAPI/#dfn-SubtleCrypto-method-generateKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="/WebCryptoAPI/util/helpers.js"></script>
-<script src="successes.js"></script>
-
-<h1>generateKey Tests for Good Parameters</h1>
-<p>
-    <strong>Warning!</strong> RSA key generation is intrinsically
-    very slow, so the related tests can take up to
-    several minutes to complete, depending on browser!
-</p>
-
-<div id="log"></div>
-<script>
-run_test(["RSASSA-PKCS1-v1_5"]);
-</script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_ec_importKey-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_ec_importKey-expected.txt
deleted file mode 100644
index 8a50483..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_ec_importKey-expected.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-This is a testharness.js-based test.
-Found 72 tests; 0 PASS, 72 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Good parameters: P-256 bits (spki, buffer(91), {name: ECDSA, namedCurve: P-256}, true, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-256}, true, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (spki, buffer(91), {name: ECDSA, namedCurve: P-256}, false, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-256}, false, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (spki, buffer(120), {name: ECDSA, namedCurve: P-384}, true, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-384}, true, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (spki, buffer(120), {name: ECDSA, namedCurve: P-384}, false, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-384}, false, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, true, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, false, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, false, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (spki, buffer(91), {name: ECDH, namedCurve: P-256}, true, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-256}, true, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, true, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, true, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, true, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, true, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (spki, buffer(91), {name: ECDH, namedCurve: P-256}, false, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-256}, false, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, false, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, false, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, false, [deriveBits, deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, false, [deriveBits, deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, false, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, false, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (spki, buffer(120), {name: ECDH, namedCurve: P-384}, true, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-384}, true, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, true, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, true, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, true, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, true, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (spki, buffer(120), {name: ECDH, namedCurve: P-384}, false, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-384}, false, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, false, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, false, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, false, [deriveBits, deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, false, [deriveBits, deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, false, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, false, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (spki, buffer(158), {name: ECDH, namedCurve: P-521}, true, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-521}, true, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (spki, buffer(158), {name: ECDH, namedCurve: P-521}, false, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-521}, false, []) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveBits]) Cannot read property 'importKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_ec_importKey.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_ec_importKey.html
deleted file mode 100644
index 54eea40..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_ec_importKey.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE HTML>
-<meta charset=utf-8>
-<title>WebCryptoAPI: importKey() for EC keys</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href=https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-importKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="ec_importKey.js"></script>
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_rsa_importKey-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_rsa_importKey-expected.txt
deleted file mode 100644
index d6184c38..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_rsa_importKey-expected.txt
+++ /dev/null
@@ -1,484 +0,0 @@
-This is a testharness.js-based test.
-Found 480 tests; 0 PASS, 480 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL 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]) Cannot read property 'importKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_rsa_importKey.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_rsa_importKey.html
deleted file mode 100644
index 219ad2d..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_rsa_importKey.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE HTML>
-<meta charset=utf-8>
-<title>WebCryptoAPI: importKey() for RSA keys</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href=https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-importKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="rsa_importKey.js"></script>
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_symmetric_importKey-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_symmetric_importKey-expected.txt
deleted file mode 100644
index fe4799ba..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_symmetric_importKey-expected.txt
+++ /dev/null
@@ -1,238 +0,0 @@
-This is a testharness.js-based test.
-Found 234 tests; 0 PASS, 234 FAIL, 0 TIMEOUT, 0 NOTRUN.
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128CTR, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CTR}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128CTR, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CTR}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128CTR, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128CTR, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128CTR, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CTR}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128CTR, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CTR}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CTR}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CTR}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CTR}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CTR}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CTR}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CTR}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CTR}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CTR}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CTR}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256CTR, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CTR}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128CBC, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CBC}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128CBC, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CBC}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128CBC, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128CBC, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128CBC, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CBC}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128CBC, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-CBC}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CBC}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CBC}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CBC}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-CBC}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [decrypt, encrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [decrypt]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128KW, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-KW}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128KW, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-KW}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128KW, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128KW, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128KW, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-KW}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: A128KW, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-KW}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-KW}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-KW}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-KW}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: A192KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-KW}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-KW}, true, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-KW}, false, [wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-KW}, true, [unwrapKey, wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-KW}, false, [unwrapKey, wrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-KW}, true, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: A256KW, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-KW}, false, [unwrapKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-1, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-1, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-1, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-1, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-1, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-1, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-1, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-1, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-1, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: HS1, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-1, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-256, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-256, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-256, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-256, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-256, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-256, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-256, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-256, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-256, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: HS256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-256, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-384, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-384, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-384, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-384, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-384, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-384, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-384, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-384, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-384, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: HS384, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-384, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-512, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-512, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {hash: SHA-512, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-512, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-512, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {hash: SHA-512, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-512, name: HMAC}, false, [sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-512, name: HMAC}, false, [verify, sign]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {hash: SHA-512, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (jwk, {alg: HS512, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {hash: SHA-512, name: HMAC}, false, [verify]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [deriveKey, deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [deriveKey, deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [deriveKey, deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: HKDF}, false, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [deriveKey, deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [deriveKey, deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [deriveKey]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [deriveKey, deriveBits]) Cannot read property 'importKey' of undefined
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: PBKDF2}, false, [deriveKey]) Cannot read property 'importKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_symmetric_importKey.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_symmetric_importKey.html
deleted file mode 100644
index e82c4d78..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/import_export/test_symmetric_importKey.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE HTML>
-<meta charset=utf-8>
-<title>WebCryptoAPI: importKey() for symmetric keys</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href=https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-importKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="symmetric_importKey.js"></script>
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_ecdsa-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_ecdsa-expected.txt
deleted file mode 100644
index 314634c..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_ecdsa-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL WebCryptoAPI: sign() and verify() Using ECDSA Uncaught TypeError: Cannot read property 'importKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_ecdsa.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_ecdsa.html
deleted file mode 100644
index 5f121f1..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_ecdsa.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: sign() and verify() Using ECDSA</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#SubtleCrypto-method-sign">
-<link rel="help" href="https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#SubtleCrypto-method-verify">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="ecdsa_vectors.js"></script>
-<script src="ecdsa.js"></script>
-
-<h1>sign and verify Tests for ECDSA</h1>
-
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_hmac-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_hmac-expected.txt
deleted file mode 100644
index 43e62f6f..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_hmac-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL WebCryptoAPI: sign() and verify() Using HMAC Uncaught TypeError: Cannot read property 'importKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_hmac.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_hmac.html
deleted file mode 100644
index 6d5ff926f..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_hmac.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: sign() and verify() Using HMAC</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#SubtleCrypto-method-sign">
-<link rel="help" href="https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#SubtleCrypto-method-verify">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="hmac_vectors.js"></script>
-<script src="hmac.js"></script>
-
-<h1>sign and verify Tests for HMAC</h1>
-
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_rsa_pkcs-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_rsa_pkcs-expected.txt
deleted file mode 100644
index 18dc671..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_rsa_pkcs-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL WebCryptoAPI: sign() and verify() Using RSASSA-PKCS1-v1_5 Uncaught TypeError: Cannot read property 'importKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_rsa_pkcs.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_rsa_pkcs.html
deleted file mode 100644
index de428c0f..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_rsa_pkcs.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: sign() and verify() Using RSASSA-PKCS1-v1_5</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#SubtleCrypto-method-sign">
-<link rel="help" href="https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#SubtleCrypto-method-verify">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="rsa_pkcs_vectors.js"></script>
-<script src="rsa.js"></script>
-
-<h1>sign and verify Tests for RSASSA-PKCS1-v1_5</h1>
-
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_rsa_pss-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_rsa_pss-expected.txt
deleted file mode 100644
index e84e6414..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_rsa_pss-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL WebCryptoAPI: sign() and verify() Using RSA-PSS Uncaught TypeError: Cannot read property 'importKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_rsa_pss.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_rsa_pss.html
deleted file mode 100644
index 3a2034f..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/sign_verify/test_rsa_pss.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: sign() and verify() Using RSA-PSS</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#SubtleCrypto-method-sign">
-<link rel="help" href="https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#SubtleCrypto-method-verify">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="rsa_pss_vectors.js"></script>
-<script src="rsa.js"></script>
-
-<h1>sign and verify Tests for RSA-PSS</h1>
-
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey-expected.txt
deleted file mode 100644
index d5c8d7e..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL WebCryptoAPI: wrapKey() and unwrapKey() Uncaught TypeError: Cannot read property 'generateKey' of undefined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html b/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html
deleted file mode 100644
index 337e078..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<meta name="timeout" content="long">
-<title>WebCryptoAPI: wrapKey() and unwrapKey()</title>
-<link rel="author" title="Charles Engelke" href="mailto:w3c@engelke.com">
-<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-wrapKey">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script src="wrapKey_unwrapKey.js"></script>
-
-<h1>wrapKey and unwrapKey Tests</h1>
-
-<div id="log"></div>
-<script>
-run_test();
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/has-instance.html b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/has-instance.html
index 986d27c..caf0be4 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/has-instance.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/has-instance.html
@@ -1,8 +1,11 @@
 <!doctype html>
 <meta charset="utf-8">
-<title></title>
+<title>instanceof behavior</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+
+<iframe></iframe>
+
 <script>
 test(function() {
   var obj = Object.create(Element.prototype);
@@ -10,4 +13,14 @@
   assert_true(obj instanceof Node);
   assert_false(obj instanceof Attr);
 }, "Manually-constructed prototype chains are correctly handled by instanceof");
+
+test(() => {
+  // This tests that the historical override of [[HasInstance]] was removed:
+  // https://github.com/heycam/webidl/pull/356
+  assert_false(document.body instanceof frames[0].Element);
+}, "instanceof must return false across different globals, for platform objects");
+
+test(() => {
+  assert_false(EventTarget.hasOwnProperty(Symbol.hasInstance));
+}, "platform objects do not have Symbol.hasInstance installed");
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/legacy-callback-interface-object.html b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/legacy-callback-interface-object.html
new file mode 100644
index 0000000..01a008d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/WebIDL/ecmascript-binding/legacy-callback-interface-object.html
@@ -0,0 +1,69 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Legacy callback interface objects</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">
+<link rel="help" href="https://heycam.github.io/webidl/#legacy-callback-interface-object">
+
+<script>
+test(() => {
+  assert_true(typeof NodeFilter === "function");
+}, "Must be a function according to typeof");
+
+test(() => {
+  assert_true(Object.getPrototypeOf(NodeFilter) === Function.prototype);
+}, "Must have the correct [[Prototype]]");
+
+test(() => {
+  const propDesc = Object.getOwnPropertyDescriptor(window, "NodeFilter");
+  assert_true(propDesc.writable, "writable");
+  assert_false(propDesc.enumerable, "enumerable");
+  assert_true(propDesc.configurable, "configurable");
+}, "Must have the correct property descriptor");
+
+test(() => {
+  assert_throws(new TypeError(), () => NodeFilter(), "call");
+  assert_throws(new TypeError(), () => new NodeFilter(), "construct");
+}, "Must throw a TypeError when called or constructed")
+
+test(() => {
+  assert_false(NodeFilter.hasOwnProperty("prototype"));
+}, "Must not have a .prototype property");
+
+test(() => {
+  assert_true(NodeFilter.hasOwnProperty("name"));
+  assert_equals(NodeFilter.name, "NodeFilter");
+
+  const propDesc = Object.getOwnPropertyDescriptor(NodeFilter, "name");
+  assert_false(propDesc.writable, "writable");
+  assert_false(propDesc.enumerable, "enumerable");
+  assert_true(propDesc.configurable, "configurable");
+}, "Must have an own name property equal to the interface name and with the correct descriptors");
+
+test(() => {
+  assert_true(NodeFilter.hasOwnProperty("length"));
+  assert_equals(NodeFilter.length, 0);
+
+  const propDesc = Object.getOwnPropertyDescriptor(NodeFilter, "length");
+  assert_false(propDesc.writable, "writable");
+  assert_false(propDesc.enumerable, "enumerable");
+  assert_true(propDesc.configurable, "configurable");
+}, "Must have an own length property with value zero and the correct descriptors");
+
+test(() => {
+  // The JS spec (OrdinaryHasInstance) bails out early for non-objects
+  // Historically we overrode [[HasInstance]] to throw anyway, but this was removed:
+  // https://github.com/heycam/webidl/pull/356
+  assert_false(5 instanceof NodeFilter, "5");
+
+  // OrdinaryHasInstance throws a TypeError if the right-hand-side doesn't have a .prototype object,
+  // which is the case for callback interfaces.
+  assert_throws(new TypeError(), () => {
+    (function () { }) instanceof NodeFilter;
+  });
+  assert_throws(new TypeError(), () => {
+    ({ }) instanceof NodeFilter;
+  });
+}, "instanceof must throw but only when we don't bail out early");
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/XMLHttpRequest/formdata-foreach.html b/third_party/WebKit/LayoutTests/external/wpt/XMLHttpRequest/formdata-foreach.html
index 9b10367a..3ad184c4 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/XMLHttpRequest/formdata-foreach.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/XMLHttpRequest/formdata-foreach.html
@@ -14,8 +14,12 @@
     fd.append('n2', 'v5');
     fd.append('n3', 'v6');
     fd.delete('n2');
-    var expected_keys = ['n1', 'n3', 'n1', 'n3'];
-    var expected_values = ['v1', 'v3', 'v4', 'v6'];
+
+    var file = new File(['hello'], "hello.txt");
+    fd.append('f1', file);
+
+    var expected_keys = ['n1', 'n3', 'n1', 'n3', 'f1'];
+    var expected_values = ['v1', 'v3', 'v4', 'v6', file];
     test(function() {
         var mykeys = [], myvalues = [];
         for(var entry of fd) {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/XMLHttpRequest/send-conditional-cors-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/XMLHttpRequest/send-conditional-cors-expected.txt
deleted file mode 100644
index be427a3..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/XMLHttpRequest/send-conditional-cors-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-This is a testharness.js-based test.
-FAIL 304 without appropriate CORS header CROSSDOMAIN is not defined
-FAIL 304 with appropriate CORS header CROSSDOMAIN is not defined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer.https.html b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer.https.html
new file mode 100644
index 0000000..6421ab56
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer.https.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Accelerometer Test</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<link rel="help" href="https://www.w3.org/TR/accelerometer/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/generic-sensor/generic-sensor-tests.js"></script>
+<div id="log"></div>
+<iframe src="support-iframe.html" id="frame" style="display:none" sandbox="allow-scripts">
+</iframe>
+<script>
+
+runGenericSensorTests(Accelerometer);
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_insecure_context.html b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_insecure_context.html
new file mode 100644
index 0000000..4ff4789c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_insecure_context.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Accelerometer Test: insecure context</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<link rel="help" href="https://www.w3.org/TR/accelerometer/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/generic-sensor/generic-sensor-tests.js"></script>
+<div id="log"></div>
+<h2>Precondition</h2>
+<ol>
+  <li>
+    Run test in an insecure context, e.g. http://example.com/.
+  </li>
+</ol>
+<script>
+
+runGenericSensorInsecureContext(Accelerometer);
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_onerror-manual.https.html b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_onerror-manual.https.html
new file mode 100644
index 0000000..a3e8150
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/Accelerometer_onerror-manual.https.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Accelerometer Test: onerror</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<link rel="help" href="https://www.w3.org/TR/accelerometer/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/generic-sensor/generic-sensor-tests.js"></script>
+<div id="log"></div>
+<h2>Precondition</h2>
+<ol>
+  <li>
+    Disable the Accelerometer Sensor or run test on a device without Accelerometer Sensor.
+  </li>
+</ol>
+<script>
+
+runGenericSensorOnerror(Accelerometer);
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/accelerometer/support-iframe.html b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/support-iframe.html
new file mode 100644
index 0000000..a123f48
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/accelerometer/support-iframe.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML>
+<meta charset="utf-8">
+<script>
+try {
+  let sensor = new Accelerometer();
+  parent.postMessage("sensor.start() can be fired within iframes", '*');
+} catch (e) {
+  parent.postMessage(e.name, '*');
+}
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-charging-manual.html b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-charging-manual.html
new file mode 100644
index 0000000..8e80e30a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-charging-manual.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Battery Test: battery neither empty or full, charger plugged in</title>
+<meta name="flags" content="interact">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<h2>Description</h2>
+<p>
+  This test validates that all of the BatteryManager attributes exist and are set to their correct values when battery is charging.
+</p>
+
+<h2>Preconditions</h2>
+<ol>
+  <li>
+    The device is plugged in to the charger before this test is run.
+  </li>
+  <li>
+    The battery must neither be empty or full, nor reach empty or full capacity during the test.
+  </li>
+  <li>
+    Waiting for battery level change to fire levelchange event, maybe need a long time
+  </li>
+</ol>
+
+<script>
+
+setup({ explicit_timeout: true });
+
+async_test(function (t) {
+  navigator.getBattery().then(function (battery) {
+    t.step(function () {
+      assert_true(battery.charging, 'charging must be set to true');
+      assert_equals(battery.dischargingTime, Infinity, 'dischargingTime must be set to Infinity');
+      assert_greater_than(battery.level, 0, 'level must be greater than 0');
+      assert_less_than_equal(battery.level, 1.0, 'level must be less than or equal to 1.0');
+
+      var battery_level = battery.level;
+      battery.onlevelchange = t.step_func(function () {
+        assert_greater_than(battery.level, battery_level, 'The value of the level attribute must increase');
+        t.done();
+      });
+    });
+  }, function (error) {
+    t.step(function () {
+      assert_unreached(error.message);
+    });
+    t.done();
+  });
+}, document.title);
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-discharging-manual-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-discharging-manual-expected.txt
new file mode 100644
index 0000000..6057a79e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-discharging-manual-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Battery Test: battery neither empty or full, charger unplugged in assert_false: charging must be set to false expected false got true
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-discharging-manual.html b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-discharging-manual.html
new file mode 100644
index 0000000..c4ccbe44
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-discharging-manual.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Battery Test: battery neither empty or full, charger unplugged in</title>
+<meta name="flags" content="interact">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<h2>Description</h2>
+<p>
+  This test validates that all of the BatteryManager attributes exist and are set to their correct values when battery is discharging.
+</p>
+
+<h2>Preconditions</h2>
+<ol>
+  <li>
+    The device is unplugged from the charger before this test is run.
+  </li>
+  <li>
+    The battery must neither be empty or full, nor reach empty or full capacity during the test.
+  </li>
+  <li>
+    Waiting for battery level change to fire levelchange event, maybe need a long time
+  </li>
+</ol>
+
+<script>
+
+setup({ explicit_timeout: true });
+
+async_test(function (t) {
+  navigator.getBattery().then(function (battery) {
+    t.step(function () {
+      assert_false(battery.charging, 'charging must be set to false');
+      assert_equals(battery.chargingTime, Infinity, 'chargingTime must be set to Infinity');
+      assert_greater_than(battery.level, 0, 'level must be greater than 0');
+      assert_less_than_equal(battery.level, 1.0, 'level must be less than or equal to 1.0');
+
+      var battery_level = battery.level;
+      battery.onlevelchange = t.step_func(function () {
+        assert_less_than(battery.level, battery_level, 'The value of the level attribute must decrease');
+        t.done();
+      });
+    });
+  }, function (error) {
+    t.step(function () {
+      assert_unreached(error.message);
+    });
+    t.done();
+  });
+}, document.title);
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-full-manual.html b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-full-manual.html
new file mode 100644
index 0000000..883d71f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-full-manual.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Battery Test: battery full, charger plugged in</title>
+<meta name="flags" content="interact">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<h2>Description</h2>
+<p>
+  This test validates that all of the BatteryManager attributes exist and are set to their correct values when battery is full.
+</p>
+
+<h2>Preconditions</h2>
+<ol>
+  <li>
+    The device is plugged in to the charger before this test is run.
+  </li>
+  <li>
+    The battery is full.
+  </li>
+</ol>
+
+<script>
+
+async_test(function (t) {
+  navigator.getBattery().then(function (battery) {
+    t.step(function () {
+      assert_true(battery.charging, 'charging must be set to true');
+      assert_equals(battery.chargingTime, 0, 'chargingTime must be set to 0');
+      assert_equals(battery.dischargingTime, Infinity, 'dischargingTime must be set to Infinity');
+      assert_equals(battery.level, 1.0, 'level must be set to 1.0');
+    });
+    t.done();
+  }, function (error) {
+    t.step(function () {
+      assert_unreached(error.message);
+    });
+    t.done();
+  });
+}, document.title);
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-interface-idlharness.html b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-interface-idlharness.html
new file mode 100644
index 0000000..4e9b209d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-interface-idlharness.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Battery test: IDL</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/WebIDLParser.js"></script>
+<script src="/resources/idlharness.js"></script>
+<script type="text/plain" class="untested">
+interface Navigator { };
+
+interface EventTarget {
+  void addEventListener(DOMString type, EventListener? callback, optional boolean capture);
+  void removeEventListener(DOMString type, EventListener? callback, optional boolean capture);
+  boolean dispatchEvent(Event event);
+};
+
+[Callback]
+interface EventListener {
+  void handleEvent(Event event);
+};
+[TreatNonObjectAsNull]
+callback EventHandlerNonNull = any (Event event);
+typedef EventHandlerNonNull? EventHandler;
+</script>
+<script type="text/plain">
+partial interface Navigator {
+    Promise<BatteryManager> getBattery ();
+};
+
+interface BatteryManager : EventTarget {
+    readonly attribute boolean             charging;
+    readonly attribute unrestricted double chargingTime;
+    readonly attribute unrestricted double dischargingTime;
+    readonly attribute double              level;
+             attribute EventHandler        onchargingchange;
+             attribute EventHandler        onchargingtimechange;
+             attribute EventHandler        ondischargingtimechange;
+             attribute EventHandler        onlevelchange;
+};
+</script>
+<script>
+"use strict";
+var t = async_test();
+var idl_array = new IdlArray();
+var idls;
+var manager;
+[].forEach.call(document.querySelectorAll('script[type=text\\/plain]'), function(node) {
+  idls = node.textContent;
+  idl_array[(node.className === 'untested') ? 'add_untested_idls' : 'add_idls'](idls);
+});
+t.step(function() {
+  assert_idl_attribute(navigator, 'getBattery', 'navigator must have getBattery attribute');
+  navigator.getBattery().then(function(bm) {
+    manager = bm;
+    idl_array.add_objects({Navigator: ['navigator'], BatteryManager: ['manager']});
+    idl_array.test();
+    t.done();
+  }).catch(function(err) {
+    t.assert_unreached("navigator.getBattery failed");
+  });
+});
+</script>
+
+<h2>Description</h2>
+<p>
+  This test validates the BatteryManager interface IDL.
+</p>
+<p>
+  This test uses <a href="/resources/idlharness.js">idlharness.js</a>, and
+  is complementary to the <a href="battery-interface.html">battery-interface.html</a>
+  test.
+</p>
+
+<div id="log"></div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-plugging-in-manual.html b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-plugging-in-manual.html
new file mode 100644
index 0000000..4d16cf1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-plugging-in-manual.html
@@ -0,0 +1,125 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Battery Test: battery not full, charger plugging in</title>
+<meta name="flags" content="interact">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+  #note {
+    background-color: #fef1b5;
+    border: solid 1px #cdab2d;
+    padding: 5px;
+    margin: 15px;
+    display: block;
+  }
+</style>
+
+<h2>Description</h2>
+<p>
+  This test validates that all of the BatteryManager attributes exist and
+  are set to correct values, with corresponding events fired,
+  when the charger is plugged in.
+</p>
+
+<h2>Preconditions</h2>
+<ol>
+  <li>
+    The device is unplugged from the charger before this test is run.
+  </li>
+  <li>
+    The battery must not be full or reach full capacity before the time the test is run.
+  </li>
+</ol>
+
+<div id="note">
+  <ol>
+    <li>
+      Plug in the charger and wait for all the tests to complete.
+    </li>
+    <li>
+      The tests may take long time since the definition of how
+      often the chargingtimechange, dischargingtimechange, and levelchange
+      events are fired is left to the implementation.
+    </li>
+  </ol>
+</div>
+
+<div id="log"></div>
+
+<script>
+
+(function() {
+
+  setup({ explicit_timeout: true });
+
+  var onchargingchange_test = async_test(
+      'When the device is plugged in and its charging state is updated, ' +
+      'must set the charging attribute\'s value to true and ' +
+      'fire a chargingchange event.');
+  var onchargingtimechange_test = async_test(
+      'When the device is plugged in and its charging time is updated, ' +
+      'must set the chargingTime attribute\'s value and fire ' +
+      'a chargingtimechange event.');
+  var ondischargingtimechange_test = async_test(
+      'When the device is plugged in and its discharging time is updated, ' +
+      'must set the dischargingTime attribute\'s value to Infinity and ' +
+      'fire a dischargingtimechange event.');
+  var onlevelchange_test = async_test(
+      'When the device is plugged in and the battery level is updated, ' +
+      'must set the level attribute\'s value and fire a levelchange event.');
+
+  var batterySuccess = function (battery) {
+    battery.onchargingchange = onchargingchange_test.step_func(function () {
+      assert_true(battery.charging, 'The charging attribute must be set to true.');
+      onchargingchange_test.done();
+    });
+
+    var battery_chargingtime = battery.chargingTime;
+    battery.onchargingtimechange = onchargingtimechange_test.step_func(function () {
+      assert_less_than(battery.chargingTime, battery_chargingtime,
+          'The value of the chargingTime attribute must decrease.');
+      onchargingtimechange_test.done();
+    });
+
+    battery.ondischargingtimechange = ondischargingtimechange_test.step_func(function () {
+      if (battery.charging) {
+        assert_equals(battery.dischargingTime, Infinity,
+            'The value of the dischargingTime attribute must be set to Infinity.');
+        ondischargingtimechange_test.done();
+      }
+    });
+
+    battery.onlevelchange = onlevelchange_test.step_func(function () {
+      assert_greater_than(battery.level, 0);
+      assert_less_than_equal(battery.level, 1.0);
+      onlevelchange_test.done();
+    });
+  };
+
+  var batteryFailure = function (error) {
+    onchargingchange_test.step(function () {
+      assert_unreached(error.message);
+    });
+    onchargingchange_test.done();
+
+    onchargingtimechange_test.step(function () {
+      assert_unreached(error.message);
+    });
+    onchargingtimechange_test.done();
+
+    ondischargingtimechange_test.step(function () {
+      assert_unreached(error.message);
+    });
+    ondischargingtimechange_test.done();
+
+    onlevelchange_test.step(function () {
+      assert_unreached(error.message);
+     });
+    onlevelchange_test.done();
+  };
+
+  navigator.getBattery().then(batterySuccess, batteryFailure);
+
+})();
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-promise-iframe-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-promise-iframe-expected.txt
new file mode 100644
index 0000000..a69f52e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-promise-iframe-expected.txt
@@ -0,0 +1,6 @@
+This is a testharness.js-based test.
+PASS iframe has a different Navigator object thus getting another battery promise 
+FAIL setting src of an iframe with initial about:blank makes same Navigator object and battery promise assert_equals: navigator objects shall be same expected object "[object Navigator]" but got object "[object Navigator]"
+PASS setting src of an iframe with initial frame makes its Navigator object vary thus getting another battery promise 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-promise-iframe.html b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-promise-iframe.html
new file mode 100644
index 0000000..6add861
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-promise-iframe.html
@@ -0,0 +1,80 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Battery Test: iframe has a different Navigator object</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+  iframe {
+    display: none;
+  }
+</style>
+<div id="log"></div>
+<iframe id="blank" src="about:blank"></iframe>
+<iframe id="frame"></iframe>
+<script>
+promise_test(function(t) {
+  var iframe = document.querySelector('#blank');
+  var originalPromise = navigator.getBattery();
+
+  return originalPromise.then(function(originalManager) {
+    var promise = iframe.contentWindow.navigator.getBattery();
+
+    assert_true(originalManager instanceof BatteryManager);
+    assert_not_equals(iframe.contentWindow.navigator,
+        navigator,
+        'navigator objects shall be different');
+    assert_not_equals(promise,
+        originalPromise,
+        'battery promises in different navigators shall be different');
+    assert_equals(iframe.contentWindow.navigator.getBattery(),
+        promise,
+        'battery promises in same navigator shall be same');
+
+    return promise;
+  }).then(function(manager) {
+    assert_equals(manager.__proto__,
+        iframe.contentWindow.BatteryManager.prototype);
+    assert_true(manager instanceof iframe.contentWindow.BatteryManager);
+  });
+
+}, 'iframe has a different Navigator object thus getting another battery promise');
+
+async_test(function (t) {
+  var iframe = document.querySelector('#blank');
+  var originalNavigator = iframe.contentWindow.navigator;
+  var originalPromise = iframe.contentWindow.navigator.getBattery();
+
+  iframe.onload = t.step_func(function() {
+    assert_equals(iframe.contentWindow.navigator,
+        originalNavigator,
+        'navigator objects shall be same');
+    assert_equals(iframe.contentWindow.navigator.getBattery(),
+        originalPromise,
+        'battery status promises shall be same');
+    t.done();
+  });
+
+  iframe.src = 'support-iframe.html';
+}, 'setting src of an iframe with initial about:blank makes same Navigator object and battery promise');
+
+async_test(function (t) {
+  var iframe = document.querySelector('#frame');
+  iframe.src = 'support-iframe-initial.html';
+  iframe.onload = t.step_func(function() {
+    var originalNavigator = iframe.contentWindow.navigator;
+    var originalPromise = iframe.contentWindow.navigator.getBattery();
+
+    iframe.onload = t.step_func(function() {
+      assert_not_equals(iframe.contentWindow.navigator,
+          originalNavigator,
+          'navigator objects shall be changed');
+      assert_not_equals(iframe.contentWindow.navigator.getBattery(),
+          originalPromise,
+          'battery status promises shall be different');
+      t.done();
+    });
+
+    iframe.src = 'support-iframe.html';
+  });
+}, 'setting src of an iframe with initial frame makes its Navigator object vary thus getting another battery promise');
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-promise-window.html b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-promise-window.html
new file mode 100644
index 0000000..a7d708c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-promise-window.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Battery Test: window.open() makes a different Navigator object</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+  #note {
+    background-color: #fef1b5;
+    border: solid 1px #cdab2d;
+    padding: 5px;
+    margin: 15px;
+    display: block;
+  }
+</style>
+<div id="note">
+  Allow pop-up windows before running the tests.
+</div>
+<div id="log"></div>
+<script>
+async_test(function (t) {
+  var win = window.open('support-window-open.html');
+  window.onmessage = t.step_func(function(e) {
+    assert_array_equals(e.data, [false, false, true]);
+    win.close();
+    t.done();
+  });
+}, 'window.open() makes a different Navigator object thus getting another battery promise');
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-promise.html b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-promise.html
new file mode 100644
index 0000000..8c552eb
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-promise.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Battery Test: navigator.getBattery() always return same battery promise</title>
+<link rel="author" title="YuichiNukiyama" href="https://github.com/YuichiNukiyama">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+promise_test(function () {
+  return navigator.getBattery().then(function (result) {
+    assert_class_string(result, 'BatteryManager',
+        'getBattery should return BatteryManager Object.');
+  });
+}, 'navigator.getBattery() shall return BatteryManager as a promise');
+
+test(function () {
+  assert_equals(navigator.getBattery(), navigator.getBattery());
+}, 'navigator.getBattery() shall always return the same promise');
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-unplugging-manual.html b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-unplugging-manual.html
new file mode 100644
index 0000000..bb576da
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/battery-status/battery-unplugging-manual.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Battery Test: charger unplugging</title>
+<meta name="flags" content="interact">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+  #note {
+    background-color: #fef1b5;
+    border: solid 1px #cdab2d;
+    padding: 5px;
+    margin: 15px;
+    display: block;
+  }
+</style>
+
+<h2>Description</h2>
+<p>
+  This test validates that all of the BatteryManager attributes exist and
+  are set to correct values, with corresponding events fired,
+  when the charger is unplugged.
+</p>
+
+<h2>Preconditions</h2>
+<ol>
+  <li>
+    The device is plugged in to the charger before this test is run.
+  </li>
+</ol>
+
+<div id="note">
+  Unplug the charger and wait for all the tests to complete.
+</div>
+
+<div id="log"></div>
+
+<script>
+
+(function() {
+
+  setup({ explicit_timeout: true });
+
+  var onchargingchange_test = async_test(
+      'When the device is unplugged in and its charging state is updated, ' +
+      'must set the charging attribute\'s value to false and ' +
+      'fire a chargingchange event.');
+  var onchargingtimechange_test = async_test(
+      'When the device is unplugged in and its charging time is updated, ' +
+      'must set the chargingTime attribute\'s value to Infinity and ' +
+      'fire a chargingtimechange event.');
+  var ondischargingtimechange_test = async_test(
+      'When the device is unplugged in and its discharging time is updated, ' +
+      'must set the dischargingTime attribute\'s value and ' +
+      'fire a dischargingtimechange event.');
+  var onlevelchange_test = async_test(
+      'When the device is unplugged in and the battery level is updated, ' +
+      'must set the level attribute\'s value and fire a levelchange event.');
+
+  var batterySuccess = function (battery) {
+    battery.onchargingchange = onchargingchange_test.step_func(function () {
+      assert_false(battery.charging, 'The charging attribute must be set to false.');
+      onchargingchange_test.done();
+    });
+
+    battery.onchargingtimechange = onchargingtimechange_test.step_func(function () {
+      assert_equals(battery.chargingTime, Infinity,
+          'The value of the chargingTime attribute must be set to Infinity.');
+      onchargingtimechange_test.done();
+    });
+
+    battery.ondischargingtimechange = ondischargingtimechange_test.step_func(function () {
+      assert_less_than(battery.dischargingTime, Infinity,
+          'The value of the dischargingTime attribute must be set to the remaining discharging time.');
+      ondischargingtimechange_test.done();
+    });
+
+    battery.onlevelchange = onlevelchange_test.step_func(function () {
+      assert_greater_than(battery.level, 0);
+      assert_less_than_equal(battery.level, 1.0);
+      onlevelchange_test.done();
+    });
+  };
+
+  var batteryFailure = function (error) {
+    onchargingchange_test.step(function () {
+      assert_unreached(error.message);
+     });
+    onchargingchange_test.done();
+
+    onchargingtimechange_test.step(function () {
+      assert_unreached(error.message);
+    });
+    onchargingtimechange_test.done();
+
+    ondischargingtimechange_test.step(function () {
+      assert_unreached(error.message);
+    });
+    ondischargingtimechange_test.done();
+
+    onlevelchange_test.step(function () {
+      assert_unreached(error.message);
+    });
+    onlevelchange_test.done();
+  };
+
+  navigator.getBattery().then(batterySuccess, batteryFailure);
+
+})();
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/battery-status/support-iframe-initial.html b/third_party/WebKit/LayoutTests/external/wpt/battery-status/support-iframe-initial.html
new file mode 100644
index 0000000..d4e5b31
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/battery-status/support-iframe-initial.html
@@ -0,0 +1,5 @@
+<!DOCTYPE HTML>
+<meta charset="utf-8">
+<div>
+Hello!
+</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/battery-status/support-iframe.html b/third_party/WebKit/LayoutTests/external/wpt/battery-status/support-iframe.html
new file mode 100644
index 0000000..d4e5b31
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/battery-status/support-iframe.html
@@ -0,0 +1,5 @@
+<!DOCTYPE HTML>
+<meta charset="utf-8">
+<div>
+Hello!
+</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/battery-status/support-window-open.html b/third_party/WebKit/LayoutTests/external/wpt/battery-status/support-window-open.html
new file mode 100644
index 0000000..afffc3a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/battery-status/support-window-open.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML>
+<meta charset="utf-8">
+<script>
+var data = [
+    navigator === window.opener.navigator,
+    navigator.getBattery() === window.opener.navigator.getBattery(),
+    navigator.getBattery() === navigator.getBattery()
+];
+window.opener.postMessage(data, '*');
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/check_stability.py b/third_party/WebKit/LayoutTests/external/wpt/check_stability.py
index 6230e2b..6109a73 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/check_stability.py
+++ b/third_party/WebKit/LayoutTests/external/wpt/check_stability.py
@@ -33,6 +33,7 @@
 
 logger = None
 
+
 def do_delayed_imports():
     """Import and set up modules only needed if execution gets to this point."""
     global BaseHandler
@@ -410,10 +411,7 @@
 
 
 def install_wptrunner():
-    """Clone and install wptrunner."""
-    call("git", "clone", "--depth=1", "https://github.com/w3c/wptrunner.git", wptrunner_root)
-    git = get_git_cmd(wptrunner_root)
-    git("submodule", "update", "--init", "--recursive")
+    """Install wptrunner."""
     call("pip", "install", wptrunner_root)
 
 
@@ -489,9 +487,19 @@
 
     return changed, ignored
 
+
+def _in_repo_root(full_path):
+    rel_path = os.path.relpath(full_path, wpt_root)
+    path_components = rel_path.split(os.sep)
+    return len(path_components) < 2
+
+
 def get_affected_testfiles(files_changed, skip_tests):
     """Determine and return list of test files that reference changed files."""
     affected_testfiles = set()
+    # Exclude files that are in the repo root, because
+    # they are not part of any test.
+    files_changed = [f for f in files_changed if not _in_repo_root(f)]
     nontests_changed = set(files_changed)
     manifest_file = os.path.join(wpt_root, "MANIFEST.json")
     test_types = ["testharness", "reftest", "wdspec"]
@@ -500,6 +508,8 @@
 
     support_files = {os.path.join(wpt_root, path)
                      for _, path, _ in wpt_manifest.itertypes("support")}
+    wdspec_test_files = {os.path.join(wpt_root, path)
+                         for _, path, _ in wpt_manifest.itertypes("wdspec")}
     test_files = {os.path.join(wpt_root, path)
                   for _, path, _ in wpt_manifest.itertypes(*test_types)}
 
@@ -509,19 +519,30 @@
     for full_path in nontests_changed:
         rel_path = os.path.relpath(full_path, wpt_root)
         path_components = rel_path.split(os.sep)
-        if len(path_components) < 2:
-            # This changed file is in the repo root, so skip it
-            # (because it's not part of any test).
-            continue
         top_level_subdir = path_components[0]
         if top_level_subdir in skip_tests:
             continue
         repo_path = "/" + os.path.relpath(full_path, wpt_root).replace(os.path.sep, "/")
         nontest_changed_paths.add((full_path, repo_path))
 
+    def affected_by_wdspec(test):
+        affected = False
+        if test in wdspec_test_files:
+            for support_full_path, _ in nontest_changed_paths:
+                # parent of support file or of "support" directory
+                parent = os.path.dirname(support_full_path)
+                if os.path.basename(parent) == "support":
+                    parent = os.path.dirname(parent)
+                relpath = os.path.relpath(test, parent)
+                if not relpath.startswith(os.pardir):
+                    # testfile is in subtree of support file
+                    affected = True
+                    break
+        return affected
+
     for root, dirs, fnames in os.walk(wpt_root):
         # Walk top_level_subdir looking for test files containing either the
-        # relative filepath or absolute filepatch to the changed files.
+        # relative filepath or absolute filepath to the changed files.
         if root == wpt_root:
             for dir_name in skip_tests:
                 dirs.remove(dir_name)
@@ -530,6 +551,10 @@
             # Skip any file that's not a test file.
             if test_full_path not in test_files:
                 continue
+            if affected_by_wdspec(test_full_path):
+                affected_testfiles.add(test_full_path)
+                continue
+
             with open(test_full_path, "rb") as fh:
                 file_contents = fh.read()
                 if file_contents.startswith("\xfe\xff"):
@@ -689,6 +714,7 @@
         log("|%s|" % "|".join(" %s" % row[i].ljust(max_widths[i] - 1) for i in cols))
     log("")
 
+
 def write_inconsistent(inconsistent, iterations):
     """Output inconsistent tests to logger.error."""
     logger.error("## Unstable results ##\n")
@@ -805,7 +831,7 @@
     setup_logging()
 
     wpt_root = os.path.abspath(os.curdir)
-    wptrunner_root = os.path.normpath(os.path.join(wpt_root, "..", "wptrunner"))
+    wptrunner_root = os.path.normpath(os.path.join(wpt_root, "tools", "wptrunner"))
 
     if not os.path.exists(args.root):
         logger.critical("Root directory %s does not exist" % args.root)
diff --git a/third_party/WebKit/LayoutTests/external/wpt/common/object-association.js b/third_party/WebKit/LayoutTests/external/wpt/common/object-association.js
new file mode 100644
index 0000000..cd1453e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/common/object-association.js
@@ -0,0 +1,64 @@
+"use strict";
+
+// For now this only has per-Window tests, but we could expand it to also test per-Document
+
+window.testIsPerWindow = propertyName => {
+  test(t => {
+    const iframe = document.createElement("iframe");
+    document.body.appendChild(iframe);
+    const frame = iframe.contentWindow;
+
+    const before = frame[propertyName];
+    assert_true(before !== undefined && before !== null, `window.${propertyName} must be implemented`);
+
+    iframe.remove();
+
+    const after = frame[propertyName];
+    assert_equals(after, before);
+  }, `Discarding the browsing context must not change window.${propertyName}`);
+
+  async_test(t => {
+    const iframe = document.createElement("iframe");
+    document.body.appendChild(iframe);
+    const frame = iframe.contentWindow;
+
+    const before = frame[propertyName];
+    assert_true(before !== undefined && before !== null, `window.${propertyName} must be implemented`);
+
+    // Note: cannot use step_func_done for this because it might be called twice, per the below comment.
+    iframe.onload = t.step_func(() => {
+      if (frame.location.href === "about:blank") {
+        // Browsers are not reliable on whether about:blank fires the load event; see
+        // https://github.com/whatwg/html/issues/490
+        return;
+      }
+
+      const after = frame[propertyName];
+      assert_equals(after, before);
+      t.done();
+    });
+
+    iframe.src = "/common/blank.html";
+  }, `Navigating from the initial about:blank must not replace window.${propertyName}`);
+
+  // Note: document.open()'s spec doesn't match most browsers; see https://github.com/whatwg/html/issues/1698.
+  // However, as explained in https://github.com/whatwg/html/issues/1698#issuecomment-298748641, even an updated spec
+  // will probably still reset Window-associated properties.
+  async_test(t => {
+    const iframe = document.createElement("iframe");
+
+    iframe.onload = t.step_func_done(() => {
+      const frame = iframe.contentWindow;
+      const before = frame[propertyName];
+      assert_true(before !== undefined && before !== null, `window.${propertyName} must be implemented`);
+
+      frame.document.open();
+
+      const after = frame[propertyName];
+      assert_not_equals(after, before);
+    });
+
+    iframe.src = "/common/blank.html";
+    document.body.appendChild(iframe);
+  }, `document.open() must replace window.${propertyName}`);
+};
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/304.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/304.htm
new file mode 100644
index 0000000..f93cd2d7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/304.htm
@@ -0,0 +1,97 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CORS - 304 Responses</title>
+<meta name=author title="Mark Nottingham" href="mailto:mnot@mnot.net">
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js?pipe=sub></script>
+
+<h1>CORS - 304 Responses</h1>
+<div id=log></div>
+<script>
+
+
+/*
+ * 304 Responses
+ */
+
+// A header used to correlate requests and responses
+var state_header = "content-language"
+
+/* Make a request; call ready(client) when done */
+function req(url, id, t, ready) {
+  var client = new XMLHttpRequest()
+  client.open('GET', url, true)
+  client.setRequestHeader(state_header, id)
+  client.send()
+  client.onreadystatechange = function() {
+    if (client.readyState == client.DONE) {
+      t.step(function() {
+        assert_true(client.status != 299, "req " + id + " server says: " + client.responseText)
+      })
+      ready(client)
+    }
+  }
+  return client
+}
+
+/*
+ * Make two requests to test cache behaviour.
+ * The second is made after the first is done and a delay, to make sure it gets into cache.
+ */
+function two_reqs(id1, id2, should_have_same_body, t, done) {
+  var rand = Date.now()
+  var url = CROSSDOMAIN + 'resources/304.py?id=' + id1 + '&r=%s' + rand
+
+  var client1 = req(url, id1, t, function(client1) {
+    t.step(function() {
+      assert_equals(client1.response, "Success", "didn't get successful 1st response;")
+      assert_equals(client1.getResponseHeader(state_header), id1, "1st response didn't come from server;")
+    })
+
+    t.step_timeout(function() {
+      req(url, id2, t, function(client2) {
+        t.step(function() {
+          if (should_have_same_body) {
+            assert_equals(client1.response, client2.response, "response bodies were different;")
+//            var res_id2 = client2.getResponseHeader(state_header)
+//            assert_not_equals(res_id2, id1, "2nd response doesn't appear to have updated cached headers;")
+//            assert_not_equals(res_id2, null, "2nd response didn't expose request identifier;")
+//            assert_equals(res_id2, id2, "2nd response is associated with a different request (!);")
+          }
+          done(client1, client2)
+        })
+        t.done()
+      })
+    }, 5000)
+  })
+}
+
+async_test(function(t) {
+  two_reqs('1', '2', true, t, function(client1, client2) {
+    assert_equals(client1.getResponseHeader("A"), null, "'A' header exposed without permission;")
+  })
+}, "A 304 response with no CORS headers inherits from the stored response")
+
+async_test(function(t) {
+  two_reqs('3', '4', true, t, function(client1, client2) {
+    assert_equals(client2.getResponseHeader("A"), "4", "304 didn't expose 'A' header, even though allowed;")
+    assert_equals(client2.getResponseHeader("B"), "4", "304 didn't expose 'B' header even though allowed;")
+  })
+}, "A 304 can expand Access-Control-Expose-Headers")
+
+async_test(function(t) {
+  two_reqs('5', '6', true, t, function(client1, client2) {
+    assert_equals(client2.getResponseHeader("B"), null, "2nd 304 exposed 'B' header;")
+  })
+}, "A 304 can contract Access-Control-Expose-Headers")
+
+async_test(function(t) {
+  two_reqs('7', '8', false, t, function(client1, client2) {
+    assert_not_equals(client1.response, client2.response, "Access granted even though 304 updated it to disallow;")
+  })
+}, "A 304 can change Access-Control-Allow-Origin")
+
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/README.md b/third_party/WebKit/LayoutTests/external/wpt/cors/README.md
new file mode 100644
index 0000000..b239462
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/README.md
@@ -0,0 +1,8 @@
+Tests for the [Fetch Standard](https://fetch.spec.whatwg.org/).
+
+These tests are located here as originally the CORS protocol was defined on its own.
+
+More CORS tests can be found in
+
+* /fetch
+* /XMLHttpRequest
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/allow-headers-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/cors/allow-headers-expected.txt
new file mode 100644
index 0000000..3d92c67
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/allow-headers-expected.txt
@@ -0,0 +1,47 @@
+This is a testharness.js-based test.
+PASS Allow origin: * 
+PASS Allow origin: _*__ 
+PASS Allow origin: [tab]* 
+PASS Allow origin: http://web-platform.test:8001 
+PASS Allow origin: _http://web-platform.test:8001 
+PASS Allow origin: _http://web-platform.test:8001___[tab]_ 
+PASS Allow origin: [tab]http://web-platform.test:8001 
+PASS Disallow origin: http://www1.web-platform.test:8001 
+PASS Disallow origin: //web-platform.test:8001 
+PASS Disallow origin: ://web-platform.test:8001 
+PASS Disallow origin: ftp://web-platform.test:8001 
+PASS Disallow origin: http:://web-platform.test:8001 
+PASS Disallow origin: http:/web-platform.test:8001 
+PASS Disallow origin: http:web-platform.test:8001 
+PASS Disallow origin: web-platform.test:8001 
+PASS Disallow origin: http://web-platform.test:8001? 
+PASS Disallow origin: http://web-platform.test:8001/ 
+PASS Disallow origin: http://web-platform.test:8001 / 
+PASS Disallow origin: http://web-platform.test:8001# 
+PASS Disallow origin: http://web-platform.test:8001%23 
+PASS Disallow origin: http://web-platform.test:8001:80 
+PASS Disallow origin: http://web-platform.test:8001, * 
+FAIL Disallow origin: http://web-platform.test:8001\0 assert_throws: send function "function () { client.send() }" did not throw
+PASS Disallow origin: HTTP://WEB-PLATFORM.TEST:8001 
+PASS Disallow origin: HTTP://web-platform.test:8001 
+PASS Disallow origin: - 
+PASS Disallow origin: ** 
+FAIL Disallow origin: \0* assert_throws: send function "function () { client.send() }" did not throw
+FAIL Disallow origin: *\0 assert_throws: send function "function () { client.send() }" did not throw
+PASS Disallow origin: '*' 
+PASS Disallow origin: "*" 
+PASS Disallow origin: * * 
+PASS Disallow origin: *http://* 
+PASS Disallow origin: *http://web-platform.test:8001 
+PASS Disallow origin: * http://web-platform.test:8001 
+PASS Disallow origin: *, http://web-platform.test:8001 
+FAIL Disallow origin: \0http://web-platform.test:8001 assert_throws: send function "function () { client.send() }" did not throw
+PASS Disallow origin: null http://web-platform.test:8001 
+PASS Disallow origin: http://example.net 
+PASS Disallow origin: null 
+PASS Disallow origin:  
+PASS Disallow origin: http://web-platform.test:8001/cors/allow-headers.htm 
+PASS Disallow origin: http://web-platform.test:8001/cors/ 
+PASS Disallow origin: http://www1.web-platform.test:8001/cors/ 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/allow-headers.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/allow-headers.htm
new file mode 100644
index 0000000..8f25f3e4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/allow-headers.htm
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Access-Control-Allow-Headers handling</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js?pipe=sub></script>
+
+<h1>Access-Control-Allow-Headers handling</h1>
+
+<div id=log></div>
+
+<script>
+
+/*
+ * Origin header
+ */
+function shouldPass(origin) {
+    test(function () {
+        var client = new XMLHttpRequest()
+        client.open('GET', CROSSDOMAIN
+                            + '/resources/cors-makeheader.py?origin='
+                            + encodeURIComponent(origin),
+                    false)
+        client.send()
+        r = JSON.parse(client.response)
+        var host = location.protocol + "//" + location.host
+        assert_equals(r['origin'], host, 'Request Origin: should be ' + host)
+    }, 'Allow origin: ' + origin.replace(/\t/g, "[tab]").replace(/ /g, '_'));
+}
+
+shouldPass('*');
+shouldPass(' *  ');
+shouldPass('	*');
+shouldPass(location.protocol + "//" + location.host);
+shouldPass(" "+location.protocol + "//" + location.host);
+shouldPass(" "+location.protocol + "//" + location.host + "   	 ");
+shouldPass("	"+location.protocol + "//" + location.host);
+
+
+function shouldFail(origin) {
+    test(function () {
+        var client = new XMLHttpRequest()
+        client.open('GET', CROSSDOMAIN
+                            + '/resources/cors-makeheader.py?origin='
+                            + encodeURIComponent(origin),
+                    false)
+        assert_throws("NetworkError", function() { client.send() }, 'send')
+    }, 'Disallow origin: ' + origin.replace('\0', '\\0'));
+}
+
+shouldFail(location.protocol + "//" + SUBDOMAIN + "." + location.host)
+shouldFail("//" + location.host)
+shouldFail("://" + location.host)
+shouldFail("ftp://" + location.host)
+shouldFail("http:://" + location.host)
+shouldFail("http:/" + location.host)
+shouldFail("http:" + location.host)
+shouldFail(location.host)
+shouldFail(location.protocol + "//" + location.host + "?")
+shouldFail(location.protocol + "//" + location.host + "/")
+shouldFail(location.protocol + "//" + location.host + " /")
+shouldFail(location.protocol + "//" + location.host + "#")
+shouldFail(location.protocol + "//" + location.host + "%23")
+shouldFail(location.protocol + "//" + location.host + ":80")
+shouldFail(location.protocol + "//" + location.host + ", *")
+shouldFail(location.protocol + "//" + location.host + "\0")
+shouldFail((location.protocol + "//" + location.host).toUpperCase())
+shouldFail(location.protocol.toUpperCase() + "//" + location.host)
+shouldFail("-")
+shouldFail("**")
+shouldFail("\0*")
+shouldFail("*\0")
+shouldFail("'*'")
+shouldFail('"*"')
+shouldFail("* *")
+shouldFail("*" + location.protocol + "//" + "*")
+shouldFail("*" + location.protocol + "//" + location.host)
+shouldFail("* " + location.protocol + "//" + location.host)
+shouldFail("*, " + location.protocol + "//" + location.host)
+shouldFail("\0" + location.protocol + "//" + location.host)
+shouldFail("null " + location.protocol + "//" + location.host)
+shouldFail('http://example.net')
+shouldFail('null')
+shouldFail('')
+shouldFail(location.href)
+shouldFail(dirname(location.href))
+shouldFail(CROSSDOMAIN)
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/basic.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/basic.htm
new file mode 100644
index 0000000..96cc4b98
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/basic.htm
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Basic CORS</title>
+<link rel=help href=https://fetch.spec.whatwg.org/>
+<meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com">
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js?pipe=sub></script>
+<div id=log></div>
+
+<script>
+
+var counter = 0;
+
+function cors(desc, scheme, subdomain, port) {
+    if (!scheme) {
+        var url = "";
+    } else {
+        if (!port) {
+            port = location.port;
+        }
+        var url = scheme + "://" + (subdomain ? subdomain + "." : "") + location.hostname + ":" + port + dirname(location.pathname)
+    }
+    async_test(desc).step(function() {
+        var client = new XMLHttpRequest();
+        this.count = counter++;
+
+        client.open("GET", url + "resources/cors-makeheader.py?get_value=hest_er_best&origin=none&" + this.count);
+
+        client.onreadystatechange = this.step_func(function(e) {
+            // First request, test that it fails with no origin
+            if (client.readyState < 4) return;
+            if (!url)
+                assert_true(client.response.indexOf("hest_er_best") != -1, "Got response");
+            else
+                assert_false(!!client.response, "Got CORS-disallowed response");
+
+            client = new XMLHttpRequest();
+            client.open("GET", url + "resources/cors-makeheader.py?get_value=hest_er_best&" + this.count);
+            client.onreadystatechange = this.step_func(function(e) {
+                // Second request, test that it passes with the allowed-origin
+                if (client.readyState < 4) return;
+                assert_true(client.response.indexOf("hest_er_best") != -1, "Got CORS-allowed response");
+                this.done();
+            });
+            client.send();
+        });
+        client.send();
+    });
+}
+
+cors("Same domain basic usage");
+cors("Cross domain basic usage", "http", "www1");
+cors("Same domain different port", "http", undefined, PORT);
+
+cors("Cross domain different port", "http", "www1", PORT);
+
+cors("Cross domain different protocol", "https", "www1", PORTS);
+
+cors("Same domain different protocol different port", "https", undefined, PORTS);
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/credentials-flag.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/credentials-flag.htm
new file mode 100644
index 0000000..bacd43c4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/credentials-flag.htm
@@ -0,0 +1,129 @@
+<!DOCTYPE html>
+<title>CORS - Access-Control-Allow-Credentials</title>
+<meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com">
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js?pipe=sub></script>
+
+<h1>CORS - Access-Control-Allow-Credentials</h1>
+<div id=log></div>
+<script>
+
+var url = CROSSDOMAIN + 'resources/cors-cookie.py?ident='
+
+
+/*
+ * widthCredentials
+ */
+// XXX Do some https tests here as well
+
+test(function () {
+    var client = new XMLHttpRequest()
+    client.open('GET', CROSSDOMAIN, false)
+    client.withCredentials = true;
+}, 'Setting withCredentials on a sync XHR object should not throw')
+
+async_test(function () {
+    var id = new Date().getTime() + '_1',
+        client = new XMLHttpRequest()
+    client.open("GET", url + id, true)
+    client.onload = this.step_func(function() {
+        assert_equals(client.response, "NO_COOKIE")
+        client.open("GET", url + id, true)
+        client.onload = this.step_func(function() {
+            assert_equals(client.response, "NO_COOKIE")
+            this.done()
+        })
+        client.send(null)
+    })
+    client.send(null)
+
+}, "Don't send cookie by default");
+
+async_test(function () {
+    var id = new Date().getTime() + '_2',
+        client = new XMLHttpRequest()
+
+    client.open("GET", url + id, true)
+    client.withCredentials = true
+    client.onload = this.step_func(function() {
+        assert_equals(client.response, "NO_COOKIE", "No cookie in initial request");
+
+        /* We have cookie, but the browser shouldn't send */
+        client.open("GET", url + id, true)
+        client.withCredentials = false
+        client.onload = this.step_func(function() {
+            assert_equals(client.response, "NO_COOKIE", "No cookie after withCredentials=false sync request")
+
+            /* Reads and deletes the cookie */
+            client.open("GET", url + id, true)
+            client.withCredentials = true
+            client.onload = this.step_func(function() {
+                assert_equals(client.response, "COOKIE", "Cookie sent in withCredentials=true sync request")
+                this.done()
+            })
+            client.send(null)
+        })
+        client.send(null)
+    })
+    client.send(null)
+}, "Don't send cookie part 2");
+
+async_test(function () {
+    var id = new Date().getTime() + '_3',
+        client = new XMLHttpRequest()
+
+    /* Shouldn't set the response cookie */
+    client.open("GET", url + id, true)
+    client.withCredentials = false
+    client.onload = this.step_func(function() {
+        assert_equals(client.response, "NO_COOKIE", "first");
+
+        /* Sets the cookie */
+        client.open("GET", url + id, true)
+        client.withCredentials = true
+        client.onload = this.step_func(function() {
+            assert_equals(client.response, "NO_COOKIE", "second")
+
+            /* Reads and deletes the cookie */
+            client.open("GET", url + id, true)
+            client.withCredentials = true
+            client.onload = this.step_func(function() {
+                assert_equals(client.response, "COOKIE", "third")
+                this.done()
+            })
+            client.send(null)
+        })
+        client.send(null)
+    })
+    client.send(null)
+}, "Don't obey Set-Cookie when withCredentials=false");
+
+function test_response_header(allow) {
+    var resp_test = async_test('Access-Control-Allow-Credentials: ' + allow + ' should be disallowed (async)')
+    resp_test.step(function() {
+        var client = new XMLHttpRequest()
+        client.open('GET',
+            CROSSDOMAIN + 'resources/cors-makeheader.py?credentials=' + allow,
+            true)
+        client.withCredentials = true;
+        client.onload = resp_test.step_func(function() {
+            assert_unreached("onload")
+        })
+        client.onerror = resp_test.step_func(function () {
+            assert_equals(client.readyState, client.DONE, 'readyState')
+            resp_test.done()
+        })
+        client.send()
+    })
+}
+
+test_response_header('TRUE')
+test_response_header('True')
+test_response_header('"true"')
+test_response_header('false')
+test_response_header('1')
+test_response_header('0')
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/late-upload-events.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/late-upload-events.htm
new file mode 100644
index 0000000..02cd2732
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/late-upload-events.htm
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Adding upload event listeners after send()</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js?pipe=sub></script>
+
+<h1>Adding upload event listeners after send()</h1>
+
+<div id=log></div>
+
+<script>
+function doTest(desc, headers) {
+    async_test("Late listeners: " + desc).step(function() {
+        var client = new XMLHttpRequest();
+        var eventCounter = 0;
+        client.open("POST", CROSSDOMAIN + "resources/status.py?headers=custom-header");
+
+        for (var name in headers) {
+            client.setRequestHeader(name, headers[name]);
+        }
+
+        client.onreadystatechange = this.step_func(function(e) {
+            // Irrelevant if request is not finished
+            if (client.readyState < 4) return;
+            assert_equals(client.status, 200);
+            assert_equals(eventCounter, 0, 'Events fired, but should not have');
+            this.done();
+        });
+        client.send((new Array(3000)).join('xo'));
+        client.upload.onprogress = client.upload.onloadend = client.upload.onloadstart = client.upload.onload = this.step_func(function(e) {
+            eventCounter++;
+            assert_unreached("Upload events should not fire, but did: " + e.type);
+        });
+    });
+}
+
+doTest("No preflight", {});
+doTest("Preflight", {"custom-header":"test"});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/origin-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/cors/origin-expected.txt
new file mode 100644
index 0000000..57fcbc6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/origin-expected.txt
@@ -0,0 +1,62 @@
+This is a testharness.js-based test.
+Found 58 tests; 54 PASS, 4 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Allow origin: * 
+PASS Allow origin: _*__ 
+PASS Allow origin: [tab]* 
+PASS Allow origin: http://web-platform.test:8001 
+PASS Allow origin: _http://web-platform.test:8001 
+PASS Allow origin: _http://web-platform.test:8001___[tab]_ 
+PASS Allow origin: [tab]http://web-platform.test:8001 
+PASS Disallow origin: http://www1.web-platform.test:8001 
+PASS Disallow origin: //web-platform.test:8001 
+PASS Disallow origin: ://web-platform.test:8001 
+PASS Disallow origin: ftp://web-platform.test:8001 
+PASS Disallow origin: http:://web-platform.test:8001 
+PASS Disallow origin: http:/web-platform.test:8001 
+PASS Disallow origin: http:web-platform.test:8001 
+PASS Disallow origin: web-platform.test:8001 
+PASS Disallow origin: http://web-platform.test:8001? 
+PASS Disallow origin: http://web-platform.test:8001/ 
+PASS Disallow origin: http://web-platform.test:8001 / 
+PASS Disallow origin: http://web-platform.test:8001# 
+PASS Disallow origin: http://web-platform.test:8001%23 
+PASS Disallow origin: http://web-platform.test:8001:80 
+PASS Disallow origin: http://web-platform.test:8001, * 
+FAIL Disallow origin: http://web-platform.test:8001\0 assert_throws: send function "function () { client.send() }" did not throw
+PASS Disallow origin: HTTP://WEB-PLATFORM.TEST:8001 
+PASS Disallow origin: HTTP://web-platform.test:8001 
+PASS Disallow origin: - 
+PASS Disallow origin: ** 
+FAIL Disallow origin: \0* assert_throws: send function "function () { client.send() }" did not throw
+FAIL Disallow origin: *\0 assert_throws: send function "function () { client.send() }" did not throw
+PASS Disallow origin: '*' 
+PASS Disallow origin: "*" 
+PASS Disallow origin: * * 
+PASS Disallow origin: * null 
+PASS Disallow origin: *http://* 
+PASS Disallow origin: *http://web-platform.test:8001 
+PASS Disallow origin: * http://web-platform.test:8001 
+PASS Disallow origin: *, http://web-platform.test:8001 
+FAIL Disallow origin: \0http://web-platform.test:8001 assert_throws: send function "function () { client.send() }" did not throw
+PASS Disallow origin: null http://web-platform.test:8001 
+PASS Disallow origin: http://example.net 
+PASS Disallow origin: null 
+PASS Disallow origin: null * 
+PASS Disallow origin:  
+PASS Disallow origin: http://web-platform.test:8001/cors/origin.htm 
+PASS Disallow origin: http://web-platform.test:8001/cors/ 
+PASS Disallow origin: http://www1.web-platform.test:8001/cors/ 
+PASS Disallow origin: test:8001 
+PASS Disallow origin: .test:8001 
+PASS Disallow origin: *.test:8001 
+PASS Disallow origin: http://test:8001 
+PASS Disallow origin: http://.test:8001 
+PASS Disallow origin: http://*.test:8001 
+PASS Disallow multiple headers (, *) 
+PASS Disallow multiple headers (*, ) 
+PASS Disallow multiple headers (*, *) 
+PASS Disallow multiple headers (, http://web-platform.test:8001) 
+PASS Disallow multiple headers (*, http://web-platform.test:8001) 
+PASS Disallow multiple headers (http://web-platform.test:8001, http://web-platform.test:8001) 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/origin.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/origin.htm
new file mode 100644
index 0000000..a04a29e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/origin.htm
@@ -0,0 +1,119 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Access-Control-Allow-Origin handling</title>
+<link rel=help href=https://fetch.spec.whatwg.org/>
+<meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com">
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js?pipe=sub></script>
+
+<h1>Access-Control-Allow-Origin handling</h1>
+
+<div id=log></div>
+
+<script>
+
+/*
+ * Origin header
+ */
+function shouldPass(origin) {
+    test(function () {
+        var client = new XMLHttpRequest()
+        client.open('GET', CROSSDOMAIN
+                            + '/resources/cors-makeheader.py?origin='
+                            + encodeURIComponent(origin),
+                    false)
+        client.send()
+        r = JSON.parse(client.response)
+        var host = location.protocol + "//" + location.host
+        assert_equals(r['origin'], host, 'Request Origin: should be ' + host)
+    }, 'Allow origin: ' + origin.replace(/\t/g, "[tab]").replace(/ /g, '_'));
+}
+
+shouldPass('*');
+shouldPass(' *  ');
+shouldPass('	*');
+shouldPass(location.protocol + "//" + location.host);
+shouldPass(" "+location.protocol + "//" + location.host);
+shouldPass(" "+location.protocol + "//" + location.host + "   	 ");
+shouldPass("	"+location.protocol + "//" + location.host);
+
+
+function shouldFail(origin) {
+    test(function () {
+        var client = new XMLHttpRequest()
+        client.open('GET', CROSSDOMAIN
+                            + '/resources/cors-makeheader.py?origin='
+                            + encodeURIComponent(origin),
+                    false)
+        assert_throws("NetworkError", function() { client.send() }, 'send')
+    }, 'Disallow origin: ' + origin.replace(/\0/g, "\\0"));
+}
+
+shouldFail(location.protocol + "//" + SUBDOMAIN + "." + location.host)
+shouldFail("//" + location.host)
+shouldFail("://" + location.host)
+shouldFail("ftp://" + location.host)
+shouldFail("http:://" + location.host)
+shouldFail("http:/" + location.host)
+shouldFail("http:" + location.host)
+shouldFail(location.host)
+shouldFail(location.protocol + "//" + location.host + "?")
+shouldFail(location.protocol + "//" + location.host + "/")
+shouldFail(location.protocol + "//" + location.host + " /")
+shouldFail(location.protocol + "//" + location.host + "#")
+shouldFail(location.protocol + "//" + location.host + "%23")
+shouldFail(location.protocol + "//" + location.host + ":80")
+shouldFail(location.protocol + "//" + location.host + ", *")
+shouldFail(location.protocol + "//" + location.host + "\0")
+shouldFail((location.protocol + "//" + location.host).toUpperCase())
+shouldFail(location.protocol.toUpperCase() + "//" + location.host)
+shouldFail("-")
+shouldFail("**")
+shouldFail("\0*")
+shouldFail("*\0")
+shouldFail("'*'")
+shouldFail('"*"')
+shouldFail("* *")
+shouldFail("* null")
+shouldFail("*" + location.protocol + "//" + "*")
+shouldFail("*" + location.protocol + "//" + location.host)
+shouldFail("* " + location.protocol + "//" + location.host)
+shouldFail("*, " + location.protocol + "//" + location.host)
+shouldFail("\0" + location.protocol + "//" + location.host)
+shouldFail("null " + location.protocol + "//" + location.host)
+shouldFail('http://example.net')
+shouldFail('null')
+shouldFail('null *')
+shouldFail('')
+shouldFail(location.href)
+shouldFail(dirname(location.href))
+shouldFail(CROSSDOMAIN)
+shouldFail(location.host.replace(/^[^\.]+\./, ""))
+shouldFail("." + location.host.replace(/^[^\.]+\./, ""))
+shouldFail("*." + location.host.replace(/^[^\.]+\./, ""))
+shouldFail("http://" + location.host.replace(/^[^\.]+\./, ""))
+shouldFail("http://." + location.host.replace(/^[^\.]+\./, ""))
+shouldFail("http://*." + location.host.replace(/^[^\.]+\./, ""))
+
+function doubleOrigin(origin, origin2) {
+    test(function () {
+        var client = new XMLHttpRequest()
+        client.open('GET', CROSSDOMAIN
+                            + '/resources/cors-makeheader.py?origin='
+                            + encodeURIComponent(origin)
+                            + '&origin2=' + encodeURIComponent(origin2),
+                    false)
+        assert_throws("NetworkError", function() { client.send() }, 'send')
+    }, 'Disallow multiple headers (' + origin + ', ' + origin2 + ')');
+}
+
+doubleOrigin('', '*');
+doubleOrigin('*', '');
+doubleOrigin('*', '*');
+doubleOrigin('', location.protocol + "//" + location.host);
+doubleOrigin('*', location.protocol + "//" + location.host);
+doubleOrigin(location.protocol + "//" + location.host, location.protocol + "//" + location.host);
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/preflight-cache-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/cors/preflight-cache-expected.txt
new file mode 100644
index 0000000..4e848661
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/preflight-cache-expected.txt
@@ -0,0 +1,8 @@
+This is a testharness.js-based test.
+PASS Test preflight 
+PASS preflight for x-print should be cached 
+PASS age = 0, should not be cached 
+FAIL age = -1, should not be cached assert_equals: did preflight expected "1" but got "0"
+PASS preflight first request, second from cache, wait, third should preflight again 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/preflight-cache.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/preflight-cache.htm
new file mode 100644
index 0000000..72e0fed
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/preflight-cache.htm
@@ -0,0 +1,140 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CORS - preflight cache</title>
+<meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com">
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=support.js?pipe=sub></script>
+
+<h1>Preflight cache</h1>
+
+<div id=log></div>
+<script>
+
+/*
+ * Cache
+ */
+
+function did_preflight(expect, client, settings) {
+    var uuid_token = (settings && settings.token) || token();
+    if(!settings)
+        settings = {}
+
+    set = {
+        method: 'method' in settings ? settings.method : 'GET',
+        extra: 'extra' in settings ? '&' + settings.extra : ''
+    }
+
+    client.open(set.method,
+            CROSSDOMAIN + 'resources/preflight.py?token=' + uuid_token + set.extra,
+            false)
+    client.setRequestHeader('x-print', uuid_token)
+    client.send()
+
+    client.open('GET', 'resources/preflight.py?check&token=' + uuid_token, false)
+    client.send()
+    assert_equals(client.response, expect === true ? '1' : '0', "did preflight")
+    return uuid_token;
+}
+
+/*
+ * Should run preflight
+ */
+
+test(function() {
+    var time = new Date().getTime()
+    var client = new XMLHttpRequest()
+    did_preflight(true, client);
+},
+'Test preflight')
+
+test(function() {
+    var time = new Date().getTime()
+    var client = new XMLHttpRequest()
+
+    var id = did_preflight(true,  client)
+    did_preflight(false, client, {token: id})
+},
+'preflight for x-print should be cached')
+
+test(function() {
+    var time = new Date().getTime()
+    var client = new XMLHttpRequest()
+
+    var id = did_preflight(true, client, {extra:'max_age=0'})
+    did_preflight(true, client, {extra:'max_age=0', token: id})
+},
+'age = 0, should not be cached')
+
+test(function() {
+    var time = new Date().getTime()
+    var client = new XMLHttpRequest()
+
+    var id = did_preflight(true, client, {extra:'max_age=-1'})
+    did_preflight(true, client, {extra:'max_age=-1', token: id})
+},
+'age = -1, should not be cached');
+
+(function() {
+    var test = async_test("preflight first request, second from cache, wait, third should preflight again", { timeout: 6000 }),
+        time = new Date().getTime(),
+        dothing = function (url, msg, set_request, func) {
+            client = new XMLHttpRequest(),
+            client.open('GET', url, true)
+            if (set_request)
+                client.setRequestHeader('x-print', msg)
+            client.onload = test.step_func(function() {
+                assert_equals(client.response, msg, "response " + url)
+                if (func)
+                    test.step(func)
+            })
+            client.onerror = test.step_func(function(e) {
+                assert_unreached("Got unexpected error event on the XHR object")
+            })
+            client.send()
+        }
+
+    var token1 = token();
+    test.step(function() {
+        /* First cycle, gets x-print into the cache, with timeout 1 */
+        var request_url = CROSSDOMAIN + 'resources/preflight.py?max_age=1&token=' + token1;
+        dothing(request_url,
+        'first', true, function() {
+            test = test;
+
+            /* Check if we did a preflight like we expected */
+            dothing('resources/preflight.py?check&1&token=' + token1,
+            '1', false, function() {
+                test = test;
+                dothing(request_url,
+                'second', true, function() {
+                    test = test;
+
+                    /* Check that we didn't do a preflight (hasn't gone 1 second yet) */
+                    dothing('resources/preflight.py?check&2&token=' + token1,
+                    '0', false, function() {
+                        test = test;
+
+                        /* Wait until the preflight cache age is old (and thus cleared) */
+                        test.step_timeout(() => {
+                            dothing(request_url,
+                            'third', true, function() {
+                                test = test;
+
+                                /* Expect that we did indeed do a preflight */
+                                dothing('resources/preflight.py?check&3&token=' + token1,
+                                '1', false, function() {
+                                    test.done()
+                                })
+                            })
+                        }, 1500)
+                    })
+                })
+            })
+        })
+    })
+})();
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/preflight-failure.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/preflight-failure.htm
new file mode 100644
index 0000000..25fe7dd3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/preflight-failure.htm
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CORS - Preflight responds with non-2XX status code</title>
+<meta name=author title="Fernando Jiménez Moreno" href="mailto:ferjmoreno@gmail.com">
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/get-host-info.sub.js></script>
+
+<h1>Preflight responds with non-2XX status code</h1>
+
+<div id=log></div>
+<script>
+
+// Request count for cache busting and easy identifying of request in traffic
+// analyzer.
+var req_c = 0;
+
+var CROSSDOMAIN_URL = get_host_info().HTTP_REMOTE_ORIGIN + '/cors/resources/cors-makeheader.py?';
+
+/*
+ * Redirection with preflights.
+ */
+function preflight_failure(code) {
+  var desc = 'Should throw error if preflight respond with ' + code;
+  async_test(desc).step(function() {
+    var client = new XMLHttpRequest();
+    var redirect =
+      encodeURIComponent(CROSSDOMAIN_URL + 'headers=x-test&' + req_c++);
+
+    var isCodeOK = code >= 200 && code <= 299;
+
+    client.open('GET',
+        CROSSDOMAIN_URL + 'headers=x-test&location=' + redirect
+        + '&code=' + code + '&preflight=' + code
+        + '&' + req_c++,
+        true /* async */);
+    client.setRequestHeader('x-test', 'test');
+    client.onerror = this.step_func(function() {
+      assert_false(isCodeOK);
+      this.done();
+    });
+    client.onreadystatechange = this.step_func(function() {
+      if (!isCodeOK)
+        assert_equals(client.status, 0);
+    });
+    client.onload = this.step_func(function() {
+      assert_true(isCodeOK);
+      this.done();
+    });
+    client.send(null);
+  });
+}
+[100, 101,
+ 200,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
+ 500, 501, 502, 503, 504, 505
+].forEach(preflight_failure);
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/redirect-origin.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/redirect-origin.htm
new file mode 100644
index 0000000..5463292
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/redirect-origin.htm
@@ -0,0 +1,195 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CORS - redirect</title>
+<meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com">
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js?pipe=sub></script>
+
+<h1>CORS redirect handling</h1>
+
+<div id=log></div>
+
+<script>
+
+    // Test count for cache busting and easy identifying of request in traffic analyzer
+    var num_test = 0,
+
+        origin         = location.protocol + "//" + location.host,
+        remote_origin  = origin.replace('://', '://' + SUBDOMAIN + '.'),
+
+        local   = dirname(location.href) + 'resources/cors-makeheader.py',
+        remote  = local.replace('://', '://' + SUBDOMAIN + '.'),
+        remote2 = local.replace('://', '://' + SUBDOMAIN2 + '.');
+
+
+    /*           First page           Redirect to          Expect what  */
+
+    // local -> remote
+
+    redir_test([ 'local',  '*'    ], [ 'remote', '*'    ], origin    );
+    redir_test([ 'local',  '*'    ], [ 'remote', origin ], origin    );
+    redir_test([ 'local',  '*'    ], [ 'remote', 'null' ], 'disallow');
+    redir_test([ 'local',  '*'    ], [ 'remote', 'none' ], 'disallow');
+
+    redir_test([ 'local',  origin ], [ 'remote', '*'    ], origin    );
+    redir_test([ 'local',  origin ], [ 'remote', origin ], origin    );
+    redir_test([ 'local',  origin ], [ 'remote', 'null' ], 'disallow');
+    redir_test([ 'local',  origin ], [ 'remote', 'none' ], 'disallow');
+
+    redir_test([ 'local',  'null' ], [ 'remote', '*'    ], origin    );
+    redir_test([ 'local',  'none' ], [ 'remote', '*'    ], origin    );
+
+
+    // remote -> local
+
+    redir_test([ 'remote',  '*'    ], [ 'local', '*'    ], 'null'    );
+    redir_test([ 'remote',  '*'    ], [ 'local', origin ], 'disallow');
+    redir_test([ 'remote',  '*'    ], [ 'local', 'null' ], 'null'    );
+    redir_test([ 'remote',  '*'    ], [ 'local', 'none' ], 'disallow');
+
+    redir_test([ 'remote',  origin ], [ 'local', '*'    ], 'null'    );
+    redir_test([ 'remote',  origin ], [ 'local', origin ], 'disallow');
+    redir_test([ 'remote',  origin ], [ 'local', 'null' ], 'null'    );
+    redir_test([ 'remote',  origin ], [ 'local', 'none' ], 'disallow');
+
+    redir_test([ 'remote',  'null' ], [ 'local', '*'    ], 'disallow');
+    redir_test([ 'remote',  'none' ], [ 'local', '*'    ], 'disallow');
+
+
+    // remote -> remote
+
+    redir_test([ 'remote',  '*'    ], [ 'remote', '*'    ], origin    );
+    redir_test([ 'remote',  '*'    ], [ 'remote', origin ], origin    );
+    redir_test([ 'remote',  '*'    ], [ 'remote', 'null' ], 'disallow');
+    redir_test([ 'remote',  '*'    ], [ 'remote', 'none' ], 'disallow');
+
+    redir_test([ 'remote',  origin ], [ 'remote', '*'    ], origin    );
+    redir_test([ 'remote',  origin ], [ 'remote', origin ], origin    );
+    redir_test([ 'remote',  origin ], [ 'remote', 'null' ], 'disallow');
+    redir_test([ 'remote',  origin ], [ 'remote', 'none' ], 'disallow');
+
+    redir_test([ 'remote',  'null' ], [ 'remote', '*'    ], 'disallow');
+    redir_test([ 'remote',  'none' ], [ 'remote', '*'    ], 'disallow');
+
+
+    // remote -> remote2
+
+    redir_test([ 'remote',  '*'    ], [ 'remote2', '*'    ], 'null'    );
+    redir_test([ 'remote',  '*'    ], [ 'remote2', origin ], 'disallow');
+    redir_test([ 'remote',  '*'    ], [ 'remote2', 'null' ], 'null'    );
+    redir_test([ 'remote',  '*'    ], [ 'remote2', 'none' ], 'disallow');
+
+    redir_test([ 'remote',  origin ], [ 'remote2', '*'    ], 'null'    );
+    redir_test([ 'remote',  origin ], [ 'remote2', origin ], 'disallow');
+    redir_test([ 'remote',  origin ], [ 'remote2', 'null' ], 'null');
+    redir_test([ 'remote',  origin ], [ 'remote2', 'none' ], 'disallow');
+
+    redir_test([ 'remote',  'null' ], [ 'remote2', '*'    ], 'disallow');
+    redir_test([ 'remote',  'none' ], [ 'remote2', '*'    ], 'disallow');
+
+
+    // Bonus weird edge checks
+
+    redir_test([ 'remote', '*'           ], [ 'remote',  remote_origin ], 'disallow');
+    redir_test([ 'remote', '*'           ], [ 'remote2', remote_origin ], 'disallow');
+    redir_test([ 'remote', remote_origin ], [ 'remote',  "*"           ], 'disallow');
+
+
+
+    /*
+     * The helpers
+     */
+
+    function redir_test(first, second, expect_origin) {
+        var first_url, second_url,
+            urls = { "remote": remote, "local": local, "remote2": remote2 };
+
+        first_url = urls[first[0]] + "?origin=" + first[1];
+        second_url = urls[second[0]] + "?origin=" + second[1];
+
+        if (expect_origin=="disallow") {
+            shouldFail(first[0]+" ("+first[1]+") to "
+                + second[0]+" ("+second[1]+"), expect to fail", [ first_url, second_url ]);
+        }
+        else {
+            shouldPass(first[0]+" ("+first[1]+") to "
+                + second[0]+" ("+second[1]+"), expect origin="+expect_origin, expect_origin, [ first_url, second_url ]);
+        }
+
+    }
+
+    function shouldPass(desc, expected_origin, urls) {
+        var test_id = num_test,
+            t = async_test(desc);
+
+        num_test++;
+
+        t.step(function() {
+            var final_url,
+                client = new XMLHttpRequest();
+
+            client.open('GET', buildURL(urls, test_id));
+
+            client.onreadystatechange = t.step_func(function() {
+                if (client.readyState != client.DONE)
+                    return;
+                assert_true(!!client.response, "Got response");
+                r = JSON.parse(client.response)
+                assert_equals(r['origin'], expected_origin, 'Origin Header')
+                assert_equals(r['get_value'], 'last', 'get_value')
+                t.done();
+            });
+            client.send(null)
+        });
+    }
+
+    function shouldFail(desc, urls) {
+        var test_id = num_test,
+            t = async_test(desc);
+
+        num_test++;
+
+        t.step(function() {
+            var client = new XMLHttpRequest();
+
+            client.open('GET', buildURL(urls, test_id));
+
+            client.onreadystatechange = t.step_func(function() {
+                if (client.readyState != client.DONE)
+                    return;
+                assert_false(!!client.response, "Got response");
+            });
+            client.onerror = t.step_func(function(e) {
+                t.done();
+            });
+
+            client.send(null)
+        });
+    }
+
+
+    function buildURL(urls, id) {
+        var tmp_url;
+
+        if (typeof(urls) == "string") {
+            return urls + "&" + id + "_0";
+        }
+
+        for (var i = urls.length; i--; ) {
+            if (!tmp_url)
+            {
+                tmp_url = urls[i] + "&get_value=last&" + id + "_" + i;
+                continue;
+            }
+            tmp_url = urls[i]
+                        + "&location="
+                        + encodeURIComponent(tmp_url)
+                        + "&" + id + "_" + i;
+        }
+
+        return tmp_url;
+    }
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/redirect-preflight-2.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/redirect-preflight-2.htm
new file mode 100644
index 0000000..fe58d90a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/redirect-preflight-2.htm
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CORS - preflight after a redirect</title>
+<meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com">
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js?pipe=sub></script>
+<script src=/common/utils.js></script>
+
+<h1>Preflight after redirect</h1>
+
+<div id=log></div>
+<script>
+
+async_test(function() {
+    var test_id = "fail_" +  new Date().getTime()
+    var client = new XMLHttpRequest()
+    var last_url = CROSSDOMAIN + 'resources/cors-makeheader.py?origin=*&ident=' + test_id
+
+    client.open('GET', 'resources/cors-makeheader.py?origin=*&location=' + encodeURIComponent(last_url))
+    client.setRequestHeader('custom-header', 'admin')
+    client.onerror = this.step_func(function() {
+        this.done()
+    })
+    client.onload = this.step_func(function(e) { assert_unreached("Request should not succeed!") })
+    client.send()
+}, "Same-origin custom-header request, redirect to cross-origin fails after doing a non-successful preflight")
+
+
+async_test(function() {
+    var client = new XMLHttpRequest()
+    var uuid_token = token();
+    var last_url = CROSSDOMAIN + 'resources/cors-makeheader.py?headers=custom-header&origin=*&token=' + uuid_token;
+
+    client.open('GET', 'resources/cors-makeheader.py?origin=*&location=' + encodeURIComponent(last_url))
+    client.setRequestHeader('custom-header', 'admin')
+    client.onload = this.step_func(function() {
+        // Test that I got custom-header
+
+        /* To check whether we did a preflight */
+        client.open('GET', 'resources/cors-makeheader.py?check&token=' + uuid_token)
+        client.onload = this.step_func(function() {
+            assert_equals(client.response, "1", "did preflight")
+            this.done()
+        })
+        client.onerror = this.step_func(function(e) { assert_unreached("Error on getting preflight data") })
+        client.send()
+    })
+    client.onerror = this.step_func(function(e) { assert_unreached("Error during request", e) })
+    client.send()
+}, "Same-origin custom-header request, redirect to cross-origin succeeds after doing a preflight")
+
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/redirect-preflight.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/redirect-preflight.htm
new file mode 100644
index 0000000..ff64284
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/redirect-preflight.htm
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CORS - redirect with preflight</title>
+<meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com">
+<meta name=author title="Fernando Jiménez Moreno" href="mailto:ferjmoreno@gmail.com">
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js?pipe=sub></script>
+
+<h1>Redirect with preflight</h1>
+
+<div id=log></div>
+<script>
+
+// Request count for cache busting and easy identifying of request in traffic
+// analyzer.
+var req_c = 0;
+
+var CROSSDOMAIN_URL = CROSSDOMAIN + 'resources/cors-makeheader.py?';
+
+/*
+ * Redirection after successfull (200) preflight.
+ */
+function redir_after_successfull_preflight(code) {
+  var desc = 'Should allow redirect ' + code + ' after succesful (200) preflight';
+  async_test(desc).step(function() {
+    var client = new XMLHttpRequest();
+    var redirect = encodeURIComponent(
+      CROSSDOMAIN + 'resources/cors-makeheader.py?headers=x-test&' + req_c++
+    );
+
+    client.open('GET', CROSSDOMAIN + 'resources/cors-makeheader.py?'
+        + 'preflight=200&headers=x-test&location='
+        + redirect + '&code=' + code + '&' + req_c++,
+        true /* async */);
+    client.setRequestHeader('x-test', 'test');
+    client.onreadystatechange = this.step_func(function() {
+      assert_equals(client.status, 200, 'Successfull redirect');
+      this.done();
+    });
+    client.send(null);
+  });
+}
+[301, 302, 303, 307, 308].forEach(redir_after_successfull_preflight);
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/redirect-userinfo.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/redirect-userinfo.htm
new file mode 100644
index 0000000..fd3864d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/redirect-userinfo.htm
@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CORS - redirect with userinfo</title>
+<meta name=author title="Odin Hørthe Omdal" href="mailto:odinho@opera.com">
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js?pipe=sub></script>
+
+<h1>CORS userinfo redirect handling</h1>
+
+<div id=log></div>
+
+<script>
+
+    // Test count for cache busting and easy identifying of request in traffic analyzer
+    var num_test = 0
+
+    shouldFail("Disallow redirect with userinfo (user:pass@)", [
+                    CROSSDOMAIN + "resources/cors-makeheader.py?",
+                    CROSSDOMAIN.replace("http://", "http://test:test@") + "resources/cors-makeheader.py?"]);
+
+    shouldFail("Disallow redirect with userinfo (user:@)", [
+                    CROSSDOMAIN + "resources/cors-makeheader.py?",
+                    CROSSDOMAIN.replace("http://", "http://user:@") + "resources/cors-makeheader.py?"]);
+
+    shouldFail("Disallow redirect with userinfo (user@)", [
+                    CROSSDOMAIN + "resources/cors-makeheader.py?",
+                    CROSSDOMAIN.replace("http://", "http://user:@") + "resources/cors-makeheader.py?"]);
+
+    shouldPass("Allow redirect without userinfo (:@ is trimmed during URL parsing)", [
+                    CROSSDOMAIN + "resources/cors-makeheader.py?",
+                    CROSSDOMAIN.replace("http://", "http://:@") + "resources/cors-makeheader.py?"]);
+
+    shouldFail("Disallow redirect with userinfo (:pass@)", [
+                    CROSSDOMAIN + "resources/cors-makeheader.py?",
+                    CROSSDOMAIN.replace("http://", "http://:pass@") + "resources/cors-makeheader.py?"]);
+
+    shouldPass("Allow redirect without userinfo (@ is trimmed during URL parsing)", [
+                    CROSSDOMAIN + "resources/cors-makeheader.py?",
+                    CROSSDOMAIN.replace("http://", "http://@") + "resources/cors-makeheader.py?"]);
+
+    function shouldFail(desc, urls) {
+        var test_id = num_test,
+            t = async_test(desc);
+
+        num_test++;
+
+        t.step(function() {
+            var client = new XMLHttpRequest();
+
+            client.open('GET', buildURL(urls, test_id));
+
+            client.onload = t.unreached_func();
+            client.onerror = t.step_func_done();
+
+            client.send(null)
+        });
+    }
+
+    function shouldPass(desc, urls) {
+        var test_id = num_test,
+            t = async_test(desc);
+
+        num_test++;
+
+        t.step(function() {
+            var client = new XMLHttpRequest();
+
+            client.open('GET', buildURL(urls, test_id));
+
+            client.onload = t.step_func_done(function() {
+                r = JSON.parse(client.response)
+                assert_equals(r['get_value'], 'last', 'get_value')
+            });
+            client.onerror = t.unreached_func()
+            client.send(null)
+        });
+    }
+
+    function buildURL(urls, id) {
+        var tmp_url;
+
+        for (var i = urls.length; i--; ) {
+            if (!tmp_url)
+            {
+                tmp_url = urls[i] + "&get_value=last&" + id + "_" + i;
+                continue;
+            }
+            tmp_url = urls[i]
+                        + "&location="
+                        + encodeURIComponent(tmp_url)
+                        + "&" + id + "_" + i;
+        }
+
+        return tmp_url;
+    }
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/remote-origin-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/cors/remote-origin-expected.txt
new file mode 100644
index 0000000..fd8596b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/remote-origin-expected.txt
@@ -0,0 +1,48 @@
+This is a testharness.js-based test.
+PASS Allow origin: * 
+PASS Allow origin: _*__ 
+PASS Allow origin: [tab]* 
+PASS Allow origin: http://www1.web-platform.test:8001 
+PASS Allow origin: _http://www1.web-platform.test:8001 
+PASS Allow origin: _http://www1.web-platform.test:8001___[tab]_ 
+PASS Allow origin: [tab]http://www1.web-platform.test:8001 
+PASS Disallow origin: http://web-platform.test:8001 
+PASS Disallow origin: //www1.web-platform.test:8001 
+PASS Disallow origin: ://www1.web-platform.test:8001 
+PASS Disallow origin: ftp://www1.web-platform.test:8001 
+PASS Disallow origin: http:://www1.web-platform.test:8001 
+PASS Disallow origin: http:/www1.web-platform.test:8001 
+PASS Disallow origin: http:www1.web-platform.test:8001 
+PASS Disallow origin: www1.web-platform.test:8001 
+PASS Disallow origin: http://www1.web-platform.test:8001? 
+PASS Disallow origin: http://www1.web-platform.test:8001/ 
+PASS Disallow origin: http://www1.web-platform.test:8001_/ 
+PASS Disallow origin: http://www1.web-platform.test:8001# 
+PASS Disallow origin: http://www1.web-platform.test:8001%23 
+PASS Disallow origin: http://www1.web-platform.test:8001:80 
+PASS Disallow origin: http://www1.web-platform.test:8001,_* 
+FAIL Disallow origin: http://www1.web-platform.test:8001\0 assert_equals: expected "error" but got "load"
+PASS Disallow origin: HTTP://WWW1.WEB-PLATFORM.TEST:8001 
+PASS Disallow origin: HTTP://www1.web-platform.test:8001 
+PASS Disallow origin: http://WWW1.WEB-PLATFORM.TEST:8001 
+PASS Disallow origin: - 
+PASS Disallow origin: ** 
+FAIL Disallow origin: \0* assert_equals: expected "error" but got "load"
+FAIL Disallow origin: *\0 assert_equals: expected "error" but got "load"
+PASS Disallow origin: '*' 
+PASS Disallow origin: "*" 
+PASS Disallow origin: *_* 
+PASS Disallow origin: *http://* 
+PASS Disallow origin: *http://www1.web-platform.test:8001 
+PASS Disallow origin: *_http://www1.web-platform.test:8001 
+PASS Disallow origin: *,_http://www1.web-platform.test:8001 
+FAIL Disallow origin: \0http://www1.web-platform.test:8001 assert_equals: expected "error" but got "load"
+PASS Disallow origin: null_http://www1.web-platform.test:8001 
+PASS Disallow origin: http://example.net 
+PASS Disallow origin: null 
+PASS Disallow origin:  
+PASS Disallow origin: http://web-platform.test:8001/cors/remote-origin.htm 
+PASS Disallow origin: http://web-platform.test:8001/cors/ 
+PASS Disallow origin: http://www1.web-platform.test:8001/cors/ 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/remote-origin.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/remote-origin.htm
new file mode 100644
index 0000000..0726775
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/remote-origin.htm
@@ -0,0 +1,121 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Access-Control-Allow-Origin handling</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js?pipe=sub></script>
+
+<h1>Access-Control-Allow-Origin handling</h1>
+
+<div id=log></div>
+
+<script>
+
+var remote_tests = [];
+var iframe = document.createElement("iframe")
+iframe.src = CROSSDOMAIN + 'resources/remote-xhrer.html';
+document.body.appendChild(iframe);
+
+function reverseOrigin(expect_pass, origin)
+{
+    var real_origin = origin.replace("<host>", REMOTE_HOST)
+                        .replace("<remote_origin>", location.protocol + "//" + location.host)
+                        .replace("<origin>", REMOTE_ORIGIN)
+                        .replace("<protocol>", REMOTE_PROTOCOL)
+                        .replace("<HOST>", REMOTE_HOST.toUpperCase())
+                        .replace("<ORIGIN>", REMOTE_ORIGIN.toUpperCase())
+                        .replace("<PROTOCOL>", REMOTE_PROTOCOL.toUpperCase());
+
+    var t = async_test((expect_pass ? 'Allow origin: ' : 'Disallow origin: ') + real_origin
+                            .replace(/\0/g, "\\0")
+                            .replace(/\t/g, "[tab]")
+                            .replace(/ /g, '_'));
+    t.step(function() {
+        this.test_url = dirname(location.href)
+                            + 'resources/cors-makeheader.py?origin='
+                            + encodeURIComponent(real_origin);
+        iframe.contentWindow.postMessage({ url: this.test_url, origin: origin }, "*");
+    });
+
+    if (expect_pass)
+    {
+        t.callback = t.step_func(function(e) {
+            assert_equals(e.state, "load");
+            r = JSON.parse(e.response)
+            assert_equals(r['origin'], REMOTE_ORIGIN, 'Request Origin: should be ' + REMOTE_ORIGIN)
+            this.done();
+        });
+    }
+    else
+    {
+        t.callback = t.step_func(function(e) {
+            assert_equals(e.state, "error");
+            assert_equals(e.response, "");
+            this.done();
+        });
+    }
+
+    remote_tests[origin] = t;
+}
+
+function shouldPass(origin) { reverseOrigin(true, origin); }
+function shouldFail(origin) { reverseOrigin(false, origin); }
+
+
+iframe.onload = function() {
+    shouldPass('*');
+    shouldPass(' *  ');
+    shouldPass('	*');
+    shouldPass("<origin>");
+    shouldPass(" <origin>");
+    shouldPass(" <origin>   	 ");
+    shouldPass("	<origin>");
+
+    shouldFail("<remote_origin>")
+    shouldFail("//" + "<host>")
+    shouldFail("://" + "<host>")
+    shouldFail("ftp://" + "<host>")
+    shouldFail("http:://" + "<host>")
+    shouldFail("http:/" + "<host>")
+    shouldFail("http:" + "<host>")
+    shouldFail("<host>")
+    shouldFail("<origin>" + "?")
+    shouldFail("<origin>" + "/")
+    shouldFail("<origin>" + " /")
+    shouldFail("<origin>" + "#")
+    shouldFail("<origin>" + "%23")
+    shouldFail("<origin>" + ":80")
+    shouldFail("<origin>" + ", *")
+    shouldFail("<origin>" + "\0")
+    shouldFail(("<ORIGIN>"))
+    shouldFail("<PROTOCOL>//<host>")
+    shouldFail("<protocol>//<HOST>")
+    shouldFail("-")
+    shouldFail("**")
+    shouldFail("\0*")
+    shouldFail("*\0")
+    shouldFail("'*'")
+    shouldFail('"*"')
+    shouldFail("* *")
+    shouldFail("*" + "<protocol>" + "//" + "*")
+    shouldFail("*" + "<origin>")
+    shouldFail("* " + "<origin>")
+    shouldFail("*, " + "<origin>")
+    shouldFail("\0" + "<origin>")
+    shouldFail("null " + "<origin>")
+    shouldFail('http://example.net')
+    shouldFail('null')
+    shouldFail('')
+    shouldFail(location.href)
+    shouldFail(dirname(location.href))
+    shouldFail(CROSSDOMAIN)
+}
+
+window.addEventListener("message", function(e) {
+    remote_tests[e.data.origin].callback(e.data);
+});
+
+add_completion_callback(function() {
+    iframe.parentElement.removeChild(iframe);
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/request-headers.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/request-headers.htm
new file mode 100644
index 0000000..289f402
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/request-headers.htm
@@ -0,0 +1,80 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CORS - request headers - Access-Control-Allow-Headers</title>
+<meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com">
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js?pipe=sub></script>
+
+<h1>Request headers</h1>
+<div id=log></div>
+<script>
+
+/*
+ * Request Headers
+ */
+
+test(function() {
+    var client = new XMLHttpRequest()
+    client.open('GET', CROSSDOMAIN + 'resources/cors-makeheader.py?headers=x-print', false)
+    client.setRequestHeader('x-print', 'unicorn')
+    client.send(null)
+
+    res = JSON.parse(client.response)
+    assert_equals(res['x-print'], 'unicorn')
+}, 'basic request header')
+
+test(function() {
+    var client = new XMLHttpRequest()
+    client.open('GET', CROSSDOMAIN + 'resources/cors-makeheader.py?headers=x-print,', false)
+    client.setRequestHeader('x-print', 'unicorn')
+    client.setRequestHeader('content-type', 'text/plain')
+    client.setRequestHeader('accept', 'test')
+    client.setRequestHeader('accept-language', 'nn')
+    client.setRequestHeader('content-language', 'nn')
+    client.send(null)
+
+    res = JSON.parse(client.response)
+    assert_equals(res['x-print'], 'unicorn')
+    assert_equals(res['content-type'], 'text/plain')
+    assert_equals(res['accept'], 'test')
+    assert_equals(res['accept-language'], 'nn')
+    assert_equals(res['content-language'], 'nn')
+}, 'Simple request headers need not be in allow-headers')
+
+test(function() {
+    var client = new XMLHttpRequest()
+    client.open('GET', CROSSDOMAIN + 'resources/cors-makeheader.py?headers=x-print', false)
+    client.setRequestHeader('x-print', 'unicorn')
+    client.setRequestHeader('y-print', 'unicorn')
+    assert_throws("NetworkError", function() { client.send(null) })
+}, 'Unspecified request headers are disallowed')
+
+test(function() {
+    var client = new XMLHttpRequest()
+    client.open('GET', CROSSDOMAIN + 'resources/cors-makeheader.py?headers=,y-lol,x-PriNT,%20,,,Y-PRINT', false)
+    client.setRequestHeader('x-print', 'unicorn')
+    client.setRequestHeader('y-print', 'narwhal')
+    client.send(null)
+
+    res = JSON.parse(client.response)
+    assert_equals(res['x-print'], 'unicorn')
+    assert_equals(res['y-print'], 'narwhal')
+}, 'Strange allowheaders (case insensitive)')
+
+test(function() {
+    var client = new XMLHttpRequest()
+    assert_throws('INVALID_STATE_ERR', function() { client.setRequestHeader('x-print', 'unicorn') })
+},
+'INVALID_STATE_ERR on setRequestHeader before open()')
+
+test(function() {
+    var client = new XMLHttpRequest()
+    client.open('GET', CROSSDOMAIN + 'resources/cors-makeheader.py?headers=,y-lol,x-PriNT,%20,,,Y-PRINT', false)
+    client.send()
+    assert_throws('INVALID_STATE_ERR', function() { client.setRequestHeader('x-print', 'unicorn') })
+},
+'INVALID_STATE_ERR on setRequestHeader after send()')
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/resources/.gitignore b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/.gitignore
new file mode 100644
index 0000000..7b987d0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/.gitignore
@@ -0,0 +1 @@
+logs.txt
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/resources/304.py b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/304.py
new file mode 100755
index 0000000..2fc83b9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/304.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+
+# A header used to correlate requests and responses
+state_header = "content-language"
+
+# Static ETag to use (and expect)
+etag = "abcdef"
+
+def error(msg):
+    return (299, "Client Error"), [
+        ('content-type', 'text/plain'),
+        ('access-control-allow-origin', "*"),
+        ('access-control-expose-headers', state_header),
+        ('cache-control', 'no-store')
+    ], msg
+
+def main(request, response):
+    headers = []
+
+    inm = request.headers.get('if-none-match', None)
+    raw_req_num = request.headers.get(state_header, None)
+    if raw_req_num == None:
+        return error("no req_num header in request")
+    else:
+        req_num = int(raw_req_num)
+        if req_num > 8:
+            return error("req_num %s out of range" % req_num)
+
+    headers.append(("Access-Control-Expose-Headers", state_header))
+    headers.append((state_header, req_num))
+    headers.append(("A", req_num))
+    headers.append(("B", req_num))
+
+    if req_num % 2:  # odd requests are the first in a test pair
+        if inm:
+            # what are you doing here? This should be a fresh request.
+            return error("If-None-Match on first request")
+        else:
+            status = 200, "OK"
+            headers.append(("Access-Control-Allow-Origin", "*"))
+            headers.append(("Content-Type", "text/plain"))
+            headers.append(("Cache-Control", "private, max-age=3, must-revalidate"))
+            headers.append(("ETag", etag))
+            return status, headers, "Success"
+    else:  # even requests are the second in a pair, and should have a good INM.
+        if inm != etag:
+            # Bad browser.
+            if inm == None:
+                return error("If-None-Match missing")
+            else:
+                return error("If-None-Match '%s' mismatches")
+        else:
+            if req_num == 2:
+                pass  # basic, vanilla check
+            elif req_num == 4:
+                headers.append(("Access-Control-Expose-Headers", "a, b"))
+            elif req_num == 6:
+                headers.append(("Access-Control-Expose-Headers", "a"))
+            elif req_num == 8:
+                headers.append(("Access-Control-Allow-Origin", "other.origin.example:80"))
+            status = 304, "Not Modified"
+            return status, headers, ""
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/resources/checkandremove.py b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/checkandremove.py
new file mode 100644
index 0000000..f713d99
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/checkandremove.py
@@ -0,0 +1,6 @@
+def main(request, response):
+    token = request.GET.first("token")
+    if request.server.stash.remove(token) is not None:
+        return "1"
+    else:
+        return "0"
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/resources/cors-cookie.py b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/cors-cookie.py
new file mode 100644
index 0000000..76fa6c1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/cors-cookie.py
@@ -0,0 +1,21 @@
+
+def main(request, response):
+    origin = request.GET.first("origin", request.headers["origin"])
+    credentials = request.GET.first("credentials", "true")
+
+    headers = [("Content-Type", "text/plain")]
+    if origin != 'none':
+        headers.append(("Access-Control-Allow-Origin", origin))
+    if credentials != 'none':
+        headers.append(("Access-Control-Allow-Credentials", credentials))
+
+    ident = request.GET.first('ident', 'test')
+
+    if ident in request.cookies:
+        body = request.cookies[ident].value
+        response.delete_cookie(ident)
+    else:
+        response.set_cookie(ident, "COOKIE");
+        body = "NO_COOKIE"
+
+    return headers, body
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/resources/cors-headers.asis b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/cors-headers.asis
new file mode 100644
index 0000000..ce21245f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/cors-headers.asis
@@ -0,0 +1,24 @@
+HTTP/1.1 200 OK

+Access-Control-Allow-Origin: *

+Access-Control-Expose-Headers: X-Custom-Header, X-Custom-Header-Empty, X-Custom-Header-Comma, X-Custom-Header-Bytes

+Access-Control-Expose-Headers: X-Second-Expose

+Access-Control-Expose-Headers: Date

+Content-Type: text/plain

+X-Custom-Header: test

+X-Custom-Header: test

+Set-Cookie: test1=t1;max-age=2

+Set-Cookie2: test2=t2;Max-Age=2

+X-Custom-Header-Empty: 

+X-Custom-Header-Comma: 1

+X-Custom-Header-Comma: 2

+X-Custom-Header-Bytes: …

+X-Nonexposed: unicorn

+X-Second-Expose: flyingpig

+Cache-Control: no-cache

+Content-Language: nn

+Expires: Thu, 01 Dec 1994 16:00:00 GMT

+Last-Modified: Thu, 01 Dec 1994 10:00:00 GMT

+Pragma: no-cache

+Date: Wed, 22 Oct 2013 10:00:00 GMT

+

+TEST
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/resources/cors-makeheader.py b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/cors-makeheader.py
new file mode 100644
index 0000000..eab35ee
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/cors-makeheader.py
@@ -0,0 +1,67 @@
+import json
+
+def main(request, response):
+    origin = request.GET.first("origin", request.headers.get('origin'))
+
+    if "check" in request.GET:
+        token = request.GET.first("token")
+        value = request.server.stash.take(token)
+        if value is not None:
+            if request.GET.first("check", None) == "keep":
+                request.server.stash.put(token, value)
+            body = "1"
+        else:
+            body = "0"
+        return [("Content-Type", "text/plain")], body
+
+
+    if origin != 'none':
+        response.headers.set("Access-Control-Allow-Origin", origin)
+    if 'origin2' in request.GET:
+        response.headers.append("Access-Control-Allow-Origin", request.GET.first('origin2'))
+
+    #Preflight
+    if 'headers' in request.GET:
+        response.headers.set("Access-Control-Allow-Headers", request.GET.first('headers'))
+    if 'credentials' in request.GET:
+        response.headers.set("Access-Control-Allow-Credentials", request.GET.first('credentials'))
+    if 'methods' in request.GET:
+        response.headers.set("Access-Control-Allow-Methods", request.GET.first('methods'))
+
+    code_raw = request.GET.first('code', None)
+    if code_raw:
+        code = int(code_raw)
+    else:
+        code = None
+    if request.method == 'OPTIONS':
+        #Override the response code if we're in a preflight and it's asked
+        if 'preflight' in request.GET:
+            code = int(request.GET.first('preflight'))
+
+        #Log that the preflight actually happened if we have an ident
+        if 'token' in request.GET:
+            request.server.stash.put(request.GET['token'], True)
+
+    if 'location' in request.GET:
+        if code is None:
+            code = 302
+
+        if code >= 300 and code < 400:
+            response.headers.set("Location", request.GET.first('location'))
+
+    headers = {}
+    for name, values in request.headers.iteritems():
+        if len(values) == 1:
+            headers[name] = values[0]
+        else:
+            #I have no idea, really
+            headers[name] = values
+
+    headers['get_value'] = request.GET.first('get_value', '')
+
+    body = json.dumps(headers)
+
+    if code:
+        return (code, "StatusText"), [], body
+    else:
+        return body
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/resources/preflight.py b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/preflight.py
new file mode 100644
index 0000000..978e97c5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/preflight.py
@@ -0,0 +1,35 @@
+def main(request, response):
+    headers = [("Content-Type", "text/plain")]
+
+    if "check" in request.GET:
+        token = request.GET.first("token")
+        value = request.server.stash.take(token)
+        if value == None:
+            body = "0"
+        else:
+            if request.GET.first("check", None) == "keep":
+                request.server.stash.put(token, value)
+            body = "1"
+
+        return headers, body
+
+    if request.method == "OPTIONS":
+        if not "Access-Control-Request-Method" in request.headers:
+            response.set_error(400, "No Access-Control-Request-Method header")
+            return "ERROR: No access-control-request-method in preflight!"
+
+        headers.append(("Access-Control-Allow-Methods",
+                        request.headers['Access-Control-Request-Method']))
+
+        if "max_age" in request.GET:
+            headers.append(("Access-Control-Max-Age", request.GET['max_age']))
+
+        if "token" in request.GET:
+            request.server.stash.put(request.GET.first("token"), 1)
+
+    headers.append(("Access-Control-Allow-Origin", "*"))
+    headers.append(("Access-Control-Allow-Headers", "x-print"))
+
+    body = request.headers.get("x-print", "NO")
+
+    return headers, body
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/resources/remote-xhrer.html b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/remote-xhrer.html
new file mode 100644
index 0000000..73a7cb4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/remote-xhrer.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<title>Child helper</title>
+
+<script>
+window.addEventListener("message", function(e) {
+//    e.source.postMessage(e.data, e.origin);
+
+    var client = new XMLHttpRequest();
+    var localurl = e.data.url
+                    .replace("<host>", location.host)
+                    .replace("<protocol>", location.protocol);
+
+    client.open('GET', localurl, true);
+    client.onload = function() {
+        e.data.state = "load";
+        e.data.response = client.response;
+        e.source.postMessage(e.data, e.origin);
+    }
+    client.onerror = function() {
+        e.data.state = "error";
+        e.data.response = client.response;
+        e.source.postMessage(e.data, e.origin);
+    }
+    client.send();
+});
+</script>
+
+The remote window
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/resources/status.py b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/status.py
new file mode 100644
index 0000000..8d441f0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/resources/status.py
@@ -0,0 +1,37 @@
+def main(request, response):
+    response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin") )
+    response.headers.set("Access-Control-Expose-Headers", "X-Request-Method")
+
+    if request.method == 'OPTIONS':
+        response.headers.set("Access-Control-Allow-Methods",  "GET, CHICKEN, HEAD, POST, PUT")
+
+    if 'headers' in request.GET:
+        response.headers.set("Access-Control-Allow-Headers",  request.GET.first('headers'))
+
+    response.headers.set("X-Request-Method", request.method)
+
+    response.headers.set("X-A-C-Request-Method", request.headers.get("Access-Control-Request-Method", ""));
+
+
+    #This should reasonably work for most response codes.
+    try:
+        code = int(request.GET.first("code", 200))
+    except ValueError:
+        code = 200
+
+    text = request.GET.first("text", "OMG")
+
+    if request.method == "OPTIONS" and "preflight" in request.GET:
+        try:
+            code = int(request.GET.first('preflight'))
+        except KeyError, ValueError:
+            pass
+
+    status = code, text
+
+    if "type" in request.GET:
+        response.headers.set("Content-Type", request.GET.first('type'))
+
+    body = request.GET.first('content', "")
+
+    return status, [], body
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/response-headers.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/response-headers.htm
new file mode 100644
index 0000000..d4d7cf23
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/response-headers.htm
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CORS - Response headers</title>
+<meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com">
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js?pipe=sub></script>
+
+<h1>Response headers</h1>
+<div id=log></div>
+<script>
+
+/*
+ * Response Headers
+ */
+
+function check_response_header(head, value, desc) {
+    test(function() {
+        var client = new XMLHttpRequest()
+        client.open('GET', CROSSDOMAIN + 'resources/cors-headers.asis', false)
+        client.send(null)
+
+        if (typeof value === 'function')
+            value(client, head)
+        else
+            assert_equals(client.getResponseHeader(head), value, head)
+    },
+    desc)
+}
+check_response_header('X-Custom-Header-Comma', '1, 2', 'getResponseHeader: Expose Access-Control-Expose-Headers (x-custom-header-comma)')
+check_response_header('X-Second-Expose', 'flyingpig', 'getResponseHeader: Expose second Access-Control-Expose-Headers (x-second-expose)')
+check_response_header(' x-custom-header', null, 'getResponseHeader: Don\'t trim whitespace')
+check_response_header('x-custom-header-bytes', "\xE2\x80\xA6", 'getResponseHeader: x-custom-header bytes')
+check_response_header('Date',
+    function(client, head) { assert_true(client.getResponseHeader(head).length > 2) },
+    'getResponseHeader: Exposed server field readable (Date)')
+
+function default_readable(head, value) {
+    check_response_header(head, value, 'getResponseHeader: '+head+': readable by default')
+}
+default_readable("Cache-Control", "no-cache");
+default_readable("Content-Language", "nn");
+default_readable("Expires", "Thu, 01 Dec 1994 16:00:00 GMT");
+default_readable("Last-Modified", "Thu, 01 Dec 1994 10:00:00 GMT");
+default_readable("Pragma", "no-cache");
+
+
+function default_unreadable(head) {
+    check_response_header(head, null, 'getResponseHeader: '+head+': unreadable by default')
+}
+default_unreadable("Server")
+default_unreadable("X-Powered-By")
+
+
+async_test("getResponseHeader: Combined testing of cors response headers")
+.step(function()
+{
+    var client = new XMLHttpRequest();
+    client.open("GET", CROSSDOMAIN + 'resources/cors-headers.asis')
+    window.c=client;
+    client.onreadystatechange = this.step_func(function()
+    {
+        if (client.readyState == 1)
+        {
+            assert_equals(client.getResponseHeader("x-custom-header"), null, 'x-custom-header')
+        }
+        if (client.readyState > 1)
+        {
+            assert_equals(client.getResponseHeader("x-custom-header"), "test, test", 'x-custom-header')
+            assert_equals(client.getResponseHeader("x-custom-header-empty"), "", 'x-custom-header-empty')
+            assert_equals(client.getResponseHeader("set-cookie"), null)
+            assert_equals(client.getResponseHeader("set-cookie2"), null)
+            assert_equals(client.getResponseHeader("x-non-existent-header"), null)
+            assert_equals(client.getResponseHeader("x-nonexposed"), null)
+        }
+        if (client.readyState == 4)
+        {
+            this.done()
+        }
+    })
+    client.send()
+})
+
+test(function() {
+    var client = new XMLHttpRequest()
+    client.open('GET', CROSSDOMAIN + 'resources/cors-headers.asis', false)
+    client.send(null)
+    assert_equals(client.getResponseHeader("x-custom-header"), "test, test", 'x-custom-header')
+    assert_equals(client.getResponseHeader("x-nonexposed"), null, 'x-nonexposed')
+}, "getResponse: don't expose x-nonexposed")
+
+test(function() {
+    var client = new XMLHttpRequest()
+    client.open('GET', CROSSDOMAIN + 'resources/cors-headers.asis', false)
+    client.send(null)
+
+    h = client.getAllResponseHeaders().toLowerCase()
+    assert_true( h.indexOf('x-custom-header') >= 0, 'x-custom-header present')
+    assert_true( h.indexOf('x-nonexposed') === -1, 'x-nonexposed not present')
+}, "getAllResponseHeaders: don't expose x-nonexposed")
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/simple-requests.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/simple-requests.htm
new file mode 100644
index 0000000..441a8c1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/simple-requests.htm
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CORS - simple requests</title>
+<meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com">
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js?pipe=sub></script>
+<script src=/common/utils.js></script>
+
+<h1>Simple requests</h1>
+<p>Simple requests shouldn't trigger preflight</p>
+
+<div id=log></div>
+<script>
+
+var test_c = 0;
+
+function check_simple(method, headers)
+{
+    test(function() {
+        var client = new XMLHttpRequest()
+        var uuid_token = token();
+        client.open(method, CROSSDOMAIN + 'resources/preflight.py?token='
+                            + uuid_token, false)
+        for (head in headers)
+            client.setRequestHeader(head, headers[head])
+        client.send("data")
+        assert_equals(client.getResponseHeader('content-type'), "text/plain")
+        if (method == 'HEAD')
+            assert_equals(client.response, '', 'response')
+        else
+            assert_equals(client.response, 'NO', 'response')
+
+        client.open('GET', 'resources/preflight.py?check&token='
+                          + uuid_token, false)
+        client.send("data")
+        assert_equals(client.response, "0", "Found preflight log")
+    },
+    'No preflight ' + method + ' and ' + JSON.stringify(headers))
+}
+
+function check_simple_headers(headers) {
+    check_simple('GET', headers)
+    check_simple('HEAD', headers)
+    check_simple('POST', headers)
+}
+
+check_simple_headers({'Accept': 'test'})
+check_simple_headers({'accept-language': 'test'})
+check_simple_headers({'CONTENT-language': 'test'})
+
+check_simple_headers({'Content-Type': 'application/x-www-form-urlencoded'})
+check_simple_headers({'content-type': 'multipart/form-data'})
+check_simple_headers({'content-type': 'text/plain'})
+
+check_simple_headers({
+                        'accept': 'test',
+                        'accept-language': 'test',
+                        'content-language': 'test',
+                        'content-type': 'text/plain; parameter=whatever'
+                     })
+
+check_simple('Get', {'content-type': 'text/plain; parameter=extra_bonus'})
+check_simple('post', {'content-type': 'text/plain'})
+
+
+/* Extra async test */
+
+var simple_async = async_test("Check simple headers (async)")
+simple_async.step(function (){
+    var time = new Date().getTime(),
+        client = new XMLHttpRequest()
+    var uuid_token = token();
+    client.open('POST', CROSSDOMAIN + 'resources/preflight.py?token='
+                        + uuid_token, true)
+
+    client.setRequestHeader('Accept', 'jewelry')
+    client.setRequestHeader('accept-language', 'nn_NO,nn,en')
+    client.setRequestHeader('content-type', 'text/plain; parameter=extra')
+    client.setRequestHeader('content-Language', 'nn_NO')
+
+    client.onload = simple_async.step_func(function() {
+        assert_equals(client.getResponseHeader('content-type'), "text/plain", 'content-type response header')
+        assert_equals(client.response, 'NO', 'response')
+        simple_async.done()
+    })
+    client.onerror = simple_async.step_func(function () { assert_unreached('onerror') })
+    client.send()
+})
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/status-async.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/status-async.htm
new file mode 100644
index 0000000..3573ee8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/status-async.htm
@@ -0,0 +1,114 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CORS - status</title>
+<meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com">
+<meta name=timeout content=long>
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js?pipe=sub></script>
+
+<h1>Status returned</h1>
+
+<div id=log></div>
+<script>
+
+function statusRequest(method, code, text, content, type) {
+    async_test("Status on " + method + " " + code, { timeout: 15000 })
+    .step(function() {
+        var client = new XMLHttpRequest()
+        client.open(method, CROSSDOMAIN + "resources/status.py?code="
+            + code + "&text=" + text + "&content=" + content + "&type=" + type, true)
+        client.onreadystatechange = this.step_func(function() {
+            if (client.readyState != client.DONE)
+                return
+
+            assert_equals(client.status, code, 'response status')
+            assert_equals(client.statusText, text, 'response status text')
+            assert_equals(client.getResponseHeader("X-Request-Method"), method, 'method')
+            if(method != "HEAD") {
+                if(type == "text/xml") {
+                    assert_equals(client.responseXML.documentElement.localName,
+                                "x", 'responseXML')
+                }
+                assert_equals(client.response, content, 'response content')
+            }
+            this.done()
+        })
+
+        client.send(null)
+    })
+}
+
+  /*            method     code text  content        type */
+  statusRequest("GET",     200, 'OK', 'Not today.',  '')
+  statusRequest("GET",     201, 'OK/Created', 'Not today 01.',  '')
+  statusRequest("GET",     202, 'OK/Accepted', 'Not today 02.',  '')
+  statusRequest("GET",     203, 'OK/Non-Authoritative Information', 'Not today 03.',  '')
+  statusRequest("GET",     204, 'OK/No Content', '',  '') // specifically no-content
+  statusRequest("GET",     205, 'OK/Reset Content', '',  '') // specifically no-content
+  statusRequest("GET",     206, 'OK/Partial Content', 'Not today 06.',  '')
+  statusRequest("GET",     209, 'OK', 'Not today 09.',  '')
+  statusRequest("GET",     299, 'OK', 'Not today 99.',  '')
+  statusRequest("POST",    200, 'OK', '<x>402<\/x>', 'text/xml')
+  statusRequest("HEAD",    200, 'OK', 'Nice!',       'text/doesnotmatter')
+  statusRequest("PUT",     200, 'OK', '400',         'text/plain')
+  statusRequest("CHICKEN", 200, 'OK', 'bah',         '')
+
+
+function statusRequestFail(method, code, expect_code, nonsimple) {
+    if (expect_code === undefined)
+        expect_code = code
+
+    async_test("Status on " + method + " " + code + (nonsimple?' (nonsimple)':''), { timeout: 15000 })
+    .step(function() {
+        var client = new XMLHttpRequest()
+
+        client.open(method, CROSSDOMAIN + "resources/status.py?code="
+          + code + '&headers=x-nonsimple&text=OHAI', true)
+
+        if (nonsimple)
+            client.setRequestHeader('x-nonsimple', true)
+
+        client.onreadystatechange = this.step_func(function() {
+            if (client.readyState < client.HEADERS_RECEIVED)
+                return
+            assert_equals(client.response, "", "response data")
+            assert_equals(client.status, expect_code, "response status")
+            /* Response code 200 forces webserver to send OK(?) */
+            if(expect_code == 200)
+                assert_equals(client.statusText, "OK", "response statusText")
+            else
+                assert_equals(client.statusText, (expect_code == 0 ? "" : "OHAI"), "response statusText")
+            if (client.readyState == client.DONE)
+                this.done()
+        })
+
+        client.onerror = this.step_func(function(e) {
+            assert_unreached("Got error event.")
+        })
+
+        client.send()
+    })
+}
+
+  /*                                 expect
+                    method     code  status */
+  statusRequestFail("GET",     400)
+  statusRequestFail("HEAD",    401)
+  statusRequestFail("POST",    404)
+  statusRequestFail("POST",    500)
+
+  /* Preflight response status is not 200, so the algorithm set status to 0. */
+  statusRequestFail("PUT",     699,  0)
+  statusRequestFail("CHICKEN", 501,  0)
+
+  /*                                    "forced"
+                                        preflight */
+  statusRequestFail("GET",     400,  0, true)
+  statusRequestFail("HEAD",    401,  0, true)
+  statusRequestFail("POST",    404,  0, true)
+  statusRequestFail("PUT",     699,  0, true)
+  statusRequestFail("CHICKEN", 501,  0, true)
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/status-preflight.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/status-preflight.htm
new file mode 100644
index 0000000..a72c2fd
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/status-preflight.htm
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CORS - status after preflight</title>
+<meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com">
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js?pipe=sub></script>
+
+<h1>Status after preflight</h1>
+
+<div id=log></div>
+<script>
+var counter = 0
+
+function statusAfterPreflight(method, code) {
+    counter++
+
+    async_test(document.title + " on " + method + " " + code).step(function() {
+        var client = new XMLHttpRequest()
+        client.open(method, CROSSDOMAIN + "resources/status.py?" + counter
+            +"&code=" + code + '&headers=x-nonsimple&preflight=200', true)
+
+        client.setRequestHeader('x-nonsimple', true)
+        client.onreadystatechange = this.step_func(function() {
+            if (client.readyState < client.HEADERS_RECEIVED)
+                return
+            assert_equals(client.response, "", "response data")
+            assert_equals(client.status, code, "response status")
+            if (client.readyState == client.DONE) {
+                /* Wait for spurious error events */
+                this.step_timeout(() => { this.done() }, 10)
+            }
+        })
+
+        client.onerror = this.step_func(function() {
+            assert_unreached("Shouldn't throw no error event!")
+        })
+
+        client.send()
+    })
+}
+
+/*                   method     code */
+statusAfterPreflight("GET",     200)
+statusAfterPreflight("GET",     204)
+statusAfterPreflight("GET",     400)
+statusAfterPreflight("GET",     401)
+
+statusAfterPreflight("HEAD",    200)
+statusAfterPreflight("HEAD",    204)
+statusAfterPreflight("HEAD",    400)
+statusAfterPreflight("HEAD",    401)
+statusAfterPreflight("HEAD",    501)
+statusAfterPreflight("HEAD",    699)
+
+statusAfterPreflight("POST",    204)
+statusAfterPreflight("POST",    400)
+statusAfterPreflight("POST",    401)
+statusAfterPreflight("POST",    404)
+
+statusAfterPreflight("PUT",     699)
+statusAfterPreflight("CHICKEN", 501)
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/status.htm b/third_party/WebKit/LayoutTests/external/wpt/cors/status.htm
new file mode 100644
index 0000000..7324428
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/status.htm
@@ -0,0 +1,80 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CORS status</title>
+<link rel=help href=https://fetch.spec.whatwg.org/>
+<meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support.js?pipe=sub"></script>
+
+<h1>The returned status code in different scenarios</h1>
+
+<script>
+
+    var counter = 0
+
+    function testit(allow, preflight, response, status) {
+        async_test(
+            (++counter) + '. ' +
+            (allow ? 'CORS allowed' : 'CORS disallowed') +
+            (preflight ? ', preflight status '+preflight : '') +
+            (response ? ', response status '+response : '') +
+            '.'
+        ).step(function() {
+            var client = new XMLHttpRequest()
+            client.open('GET', CROSSDOMAIN + 'resources/cors-makeheader.py?' + counter +
+                (allow ? '&headers=x-custom': '&origin=none') +
+                (response ? '&code='+response : '') +
+                (preflight ? '&preflight='+preflight : '')
+            )
+
+            if (preflight)
+                client.setRequestHeader('X-Custom', 'preflight')
+
+            client.onload = this.step_func(function() {
+                if (!status)
+                    assert_unreached("load event")
+
+                /* Allow spurious error events to fire */
+                this.step_timeout(() => {
+                    assert_equals(client.status, status, "status")
+                    this.done()
+                }, 10)
+            })
+
+            client.onerror = this.step_func(function() {
+                if (status)
+                    assert_unreached("error event")
+
+                assert_equals(client.readyState, client.DONE, 'readyState')
+                assert_equals(client.status, 0, 'status')
+                this.done()
+            })
+
+            client.send()
+
+        })
+    }
+
+    /*     allow  pref  resp  status */
+    testit(false, null, 400,  0)
+    testit(false, 200,  null, 0)
+    testit(true,  null, 400,  400)
+    testit(true,  200,  400,  400)
+    testit(true,  400,  null, 0)
+
+</script>
+
+<pre>
+   allowed  preflight  response  | status |
+   -------  ---------  --------  | ------ |
+ 1      no          x       400  |      0 |
+ 2      no        200         x  |      0 |
+ 3     yes          x       400  |    400 |
+ 4     yes        200       400  |    400 |
+ 5     yes        400         x  |      0 |
+</pre>
+
+<div id=log></div>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cors/support.js b/third_party/WebKit/LayoutTests/external/wpt/cors/support.js
new file mode 100644
index 0000000..551eb70d0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cors/support.js
@@ -0,0 +1,30 @@
+// For ignoring exception names (just for testing)
+/*
+_real_assert_throws = assert_throws;
+function assert_throws(d, func, desc) {
+    try {
+        func();
+    } catch(e) {
+        return true;
+    }
+    assert_unreached("Didn't throw!");
+}
+*/
+
+function dirname(path) {
+    return path.replace(/\/[^\/]*$/, '/')
+}
+
+/* This subdomain should point to this same location */
+var SUBDOMAIN = 'www1'
+var SUBDOMAIN2 = 'www2'
+var PORT = {{ports[http][1]}}
+//XXX HTTPS
+var PORTS = {{ports[https][0]}}
+
+/* Changes http://example.com/abc/def/cool.htm to http://www1.example.com/abc/def/ */
+var CROSSDOMAIN     = dirname(location.href)
+                        .replace('://', '://' + SUBDOMAIN + '.')
+var REMOTE_HOST     = SUBDOMAIN + '.' + location.host
+var REMOTE_PROTOCOL = location.protocol
+var REMOTE_ORIGIN   = REMOTE_PROTOCOL + '//' + REMOTE_HOST
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-006-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-006-ref.html
new file mode 100644
index 0000000..b93c156
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-006-ref.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html lang=en class="reftest-wait">
+<meta charset="utf-8">
+<title>Selectors Level 4: focus-within Reference File</title>
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<style>
+:focus {
+  outline: none;
+
+  /* Make the caret invisible
+     since it matches the color of the text, which is transparent,
+     while keeping the text readable thanks to its shadow.
+     Not using the caret-color property as it is too new to be relied on. */
+  color: transparent; text-shadow: black 0px 0px 0px;
+}
+
+div {
+  border: solid 15px green;
+}
+</style>
+<p>Test passes if, when the element below is focused,
+it is surrounded by a thick green border.
+There must be no red or blue once it is focused.</p>
+<div>
+  <input id="focusme" value="Focus this element">
+</div>
+<script>
+var focusme = document.getElementById('focusme');
+focusme.focus();
+document.documentElement.classList.remove('reftest-wait');
+</script>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-006.html b/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-006.html
index 4a515d7..ff63cce 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-006.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-006.html
@@ -5,12 +5,10 @@
 <link rel="author" title="Keyong Li" href="mailto:kli79@bloomberg.net">
 <link rel="author" title="Florian Rivoal" href="mailto:florian@rivoal.net">
 <link rel="help" href="https://drafts.csswg.org/selectors-4/#focus-within-pseudo">
-<link rel="match" href="focus-within-001-ref.html">
+<link rel="match" href="focus-within-006-ref.html">
 <meta name="assert" content="Test that :focus-within works on form controls, using an input element.">
 <style>
-/* Suppress things that cannot be reproduced in the reference file */
 :focus {
-  all: initial;
   outline: none;
 
   /* Make the caret invisible
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-010.html
new file mode 100644
index 0000000..2476e03
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-010.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html lang=en class="reftest-wait">
+<meta charset="utf-8">
+<title>Selectors Level 4: focus-within</title>
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/selectors-4/#focus-within-pseudo">
+<link rel="match" href="focus-within-shadow-001-ref.html">
+<meta name="assert" content="Checks that :focus-within is still applied when focus moves from an element to one of its descendants.">
+<style>
+/* Suppress things that cannot be reproduced in the reference file */
+:focus {
+  outline: none;
+}
+
+#target {
+  display: none;
+}
+
+#wrapper:focus-within > #target {
+  display: block;
+}
+
+#target:focus {
+  border: solid 15px green;
+}
+</style>
+<p>Test passes if there is a green rectangle below.</p>
+<div id="wrapper" tabindex="1">
+  <div id="target" tabindex="2"></div>
+</div>
+<script>
+var wrapper = document.getElementById('wrapper');
+wrapper.focus();
+var target = document.getElementById('target');
+target.focus();
+document.documentElement.classList.remove('reftest-wait');
+</script>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-001.html
index df94e36..012a774 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-001.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-001.html
@@ -31,11 +31,9 @@
 var template = document.getElementById('shadow-template');
 var instance = document.importNode(template.content, true);
 shadow.appendChild(instance);
-window.setTimeout(function() {
-  var focusme = shadow.getElementById('focusme');
-  focusme.focus();
-  document.documentElement.classList.remove('reftest-wait');
-}, 0);
+var focusme = shadow.getElementById('focusme');
+focusme.focus();
+document.documentElement.classList.remove('reftest-wait');
 </script>
 </body>
 </html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-002.html
index fcea010..50b30df 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-002.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-002.html
@@ -32,11 +32,9 @@
 var template = document.getElementById('shadow-template');
 var instance = document.importNode(template.content, true);
 shadow.appendChild(instance);
-window.setTimeout(function() {
-  var focusme = shadow.getElementById('focusme');
-  focusme.focus();
-  document.documentElement.classList.remove('reftest-wait');
-}, 0);
+var focusme = shadow.getElementById('focusme');
+focusme.focus();
+document.documentElement.classList.remove('reftest-wait');
 </script>
 </body>
 </html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-003.html
index 330d1a1..48901b2 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-003.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-003.html
@@ -34,11 +34,9 @@
 var template = document.getElementById('shadow-template');
 var instance = document.importNode(template.content, true);
 shadow.appendChild(instance);
-window.setTimeout(function() {
-  var focusme = shadow.getElementById('focusme');
-  focusme.focus();
-  document.documentElement.classList.remove('reftest-wait');
-}, 0);
+var focusme = shadow.getElementById('focusme');
+focusme.focus();
+document.documentElement.classList.remove('reftest-wait');
 </script>
 </body>
 </html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-004.html
index 49cf1483..6beed1f 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-004.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-004.html
@@ -40,11 +40,9 @@
 var template = document.getElementById('shadow-template');
 var instance = document.importNode(template.content, true);
 shadow.appendChild(instance);
-window.setTimeout(function() {
-  var focusme = shadow.getElementById('focusme');
-  focusme.focus();
-  document.documentElement.classList.remove('reftest-wait');
-}, 0);
+var focusme = shadow.getElementById('focusme');
+focusme.focus();
+document.documentElement.classList.remove('reftest-wait');
 </script>
 </body>
 </html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-005.html
index 500cdd3..c645d62 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-005.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/selectors4/focus-within-shadow-005.html
@@ -44,18 +44,14 @@
 var instance = document.importNode(template.content, true);
 shadow.appendChild(instance);
 
-window.setTimeout(function() {
 shadow = shadow.getElementById('nested-shadow-host').attachShadow({mode: 'open'});
 template = document.getElementById('nested-shadow-template');
 instance = document.importNode(template.content, true);
 shadow.appendChild(instance);
-}, 0);
 
-window.setTimeout(function() {
-  var focusme = shadow.getElementById('focusme');
-  focusme.focus();
-  document.documentElement.classList.remove('reftest-wait');
-}, 0);
+var focusme = shadow.getElementById('focusme');
+focusme.focus();
+document.documentElement.classList.remove('reftest-wait');
 </script>
 </body>
 </html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cssom/getComputedStyle-pseudo.html b/third_party/WebKit/LayoutTests/external/wpt/cssom/getComputedStyle-pseudo.html
new file mode 100644
index 0000000..8efd484
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cssom/getComputedStyle-pseudo.html
@@ -0,0 +1,43 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSSOM: Correct resolution of resolved value for display-affected pseudo-elements</title>
+<link rel="help" href="https://drafts.csswg.org/cssom/#dom-window-getcomputedstyle">
+<link rel="help" href="https://drafts.csswg.org/cssom/#resolved-values">
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<style>
+#test { width: 100px; }
+
+#contents {
+  display: contents;
+  border: 10px solid red;
+}
+
+#test::before,
+#test::after,
+#contents::before,
+#contents::after {
+  content: " ";
+  width: 50%;
+  height: 10px;
+  display: block;
+}
+</style>
+<div id="test">
+  <div id="contents"></div>
+</div>
+<script>
+test(function() {
+  var div = document.getElementById('test');
+  [":before", ":after"].forEach(function(pseudo) {
+    assert_equals(getComputedStyle(div, pseudo).width, "50px");
+  });
+}, "Resolution of width is correct for ::before and ::after pseudo-elements");
+test(function() {
+  var contents = document.getElementById('contents');
+  [":before", ":after"].forEach(function(pseudo) {
+    assert_equals(getComputedStyle(contents, pseudo).width, "50px");
+  });
+}, "Resolution of width is correct for ::before and ::after pseudo-elements of display: contents elements");
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cssom/variable-names-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/cssom/variable-names-expected.txt
new file mode 100644
index 0000000..2d4e87fb
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cssom/variable-names-expected.txt
@@ -0,0 +1,9 @@
+This is a testharness.js-based test.
+PASS custom property '--a' 
+FAIL custom property '--a;b' assert_equals: appears on specified style (after serialization/re-parsing) expected 1 but got 0
+PASS custom property '---' 
+FAIL custom property '--\' assert_equals: appears on specified style (after serialization/re-parsing) expected 1 but got 0
+PASS custom property '--ab' 
+PASS custom property '--0' 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cssom/variable-names.html b/third_party/WebKit/LayoutTests/external/wpt/cssom/variable-names.html
new file mode 100644
index 0000000..b951b7d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/cssom/variable-names.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Tests for handling of CSS Custom Property names</title>
+<meta name="author" title="Cameron McCormack" href="mailto:cam@mcc.id.au">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+
+// Valid custom property names, before and after CSS escaping.
+var valid_names = [
+  ["--a", "--a"],
+  ["--a;b", "--a\\;b"],
+  ["---", "---"],
+  ["--\\", "--\\\\"],
+  ["--ab", "--\\61 b"],
+  ["--0", "--\\30 "],
+];
+
+valid_names.forEach(function(t) {
+  var name = t[0];
+  var escaped_name = t[1];
+
+  test(function() {
+    var e = document.createElement("span");
+    e.style = escaped_name + ":value";
+
+    for (var after_refeeding = 0; after_refeeding <= 1; ++after_refeeding) {
+      var desc_suffix = (after_refeeding ? " (after " : " (before ") +
+                        "serialization/re-parsing)";
+
+      assert_equals(e.style.length, 1,
+                    "appears on specified style" + desc_suffix);
+
+      assert_equals(e.style[0], name,
+                    "name returned correctly from specified " +
+                    "style indexed getter" + desc_suffix);
+
+      assert_equals(e.style.getPropertyValue(name), "value",
+                    "property value returned correctly from " +
+                    "specified style getPropertyValue" + desc_suffix);
+
+      e.style = e.style.cssText;
+    }
+  }, "custom property '" + name + "'");
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/custom-elements/custom-element-registry/per-global-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/custom-elements/custom-element-registry/per-global-expected.txt
new file mode 100644
index 0000000..325068f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/custom-elements/custom-element-registry/per-global-expected.txt
@@ -0,0 +1,6 @@
+This is a testharness.js-based test.
+PASS Discarding the browsing context must not change window.customElements 
+FAIL Navigating from the initial about:blank must not replace window.customElements assert_equals: expected object "[object CustomElementRegistry]" but got object "[object CustomElementRegistry]"
+FAIL document.open() must replace window.customElements assert_not_equals: got disallowed value object "[object CustomElementRegistry]"
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/custom-elements/custom-element-registry/per-global.html b/third_party/WebKit/LayoutTests/external/wpt/custom-elements/custom-element-registry/per-global.html
new file mode 100644
index 0000000..3570dcf8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/custom-elements/custom-element-registry/per-global.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Custom Elements: CustomElementRegistry is per global</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/#custom-elements-api">
+<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">
+<script src="/common/object-association.js"></script>
+
+<body>
+<script>
+"use strict";
+testIsPerWindow("customElements");
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/dom/nodes/Element-classlist-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/dom/nodes/Element-classlist-expected.txt
index 3ab73d8..9c987bff 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/dom/nodes/Element-classlist-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/dom/nodes/Element-classlist-expected.txt
@@ -1,82 +1,1539 @@
 This is a testharness.js-based test.
-Found 78 tests; 56 PASS, 22 FAIL, 0 TIMEOUT, 0 NOTRUN.
-PASS Element.classList must exist as an object 
-PASS Element.classList must exist as an object even if the element has no class attribute 
-PASS DOMTokenList should be exposed for prototyping 
-PASS prototyping DOMTokenList should work 
-PASS Element.classList must implement DOMTokenList 
-PASS CSS .foo selectors must not match elements without any class 
-FAIL classList must be correct for an element that has classes assert_equals: duplicates in initial string should be removed per https://dom.spec.whatwg.org/#concept-class expected 1 but got 2
-PASS classList.length must be 0 for an element that has no classes 
-PASS classList must not contain an undefined class 
-PASS classList.item() must return null for out-of-range index 
-PASS classList.item() must return null for negative index 
-PASS classList[index] must be undefined for out-of-range index 
-PASS classList[index] must be undefined for negative index 
-PASS className should contain initial markup whitespace 
-PASS classList should contain initial markup whitespace 
-FAIL .contains(empty_string) must return false Failed to execute 'contains' on 'DOMTokenList': The token provided must not be empty.
-PASS .add(empty_string) must throw a SYNTAX_ERR 
-PASS .remove(empty_string) must throw a SYNTAX_ERR 
-PASS .toggle(empty_string) must throw a SYNTAX_ERR 
-FAIL .replace with empty_string must throw a SYNTAX_ERR assert_throws: function "function () { elem.classList.replace('', 'foo'); }" threw object "TypeError: elem.classList.replace is not a function" that is not a DOMException SYNTAX_ERR: property "code" is equal to undefined, expected 12
-FAIL .contains(string_with_spaces) must return false Failed to execute 'contains' on 'DOMTokenList': The token provided ('a b') contains HTML space characters, which are not valid in tokens.
-PASS .add(string_with_spaces) must throw an INVALID_CHARACTER_ERR 
-PASS .remove(string_with_spaces) must throw an INVALID_CHARACTER_ERR 
-PASS .toggle(string_with_spaces) must throw an INVALID_CHARACTER_ERR 
-FAIL .replace with string_with_spaces must throw a INVALID_CHARACTER_ERR assert_throws: function "function () { elem.classList.replace('z', 'a b'); }" threw object "TypeError: elem.classList.replace is not a function" that is not a DOMException INVALID_CHARACTER_ERR: property "code" is equal to undefined, expected 5
-FAIL .replace with an already existing token foo.classList.replace is not a function
-PASS computed style must update when setting .className 
-PASS classList.contains must update when .className is changed 
-PASS classList.contains must be case sensitive 
-PASS classList.contains must not match when punctuation characters are added 
-PASS classList.add must not cause the CSS selector to stop matching 
-PASS classList.add must not remove existing classes 
-PASS classList.contains case sensitivity must match a case-specific string 
-PASS classList.length must correctly reflect the number of tokens 
-PASS classList.item(0) must return the first token 
-PASS classList.item must return case-sensitive strings and preserve token order 
-PASS classList[0] must return the first token 
-PASS classList[index] must return case-sensitive strings and preserve token order 
-PASS classList[index] must still be undefined for out-of-range index when earlier indexes exist 
-PASS className must update correctly when items have been added through classList 
-PASS classList must stringify correctly when items have been added 
-PASS classList.add should not add a token if it already exists 
-PASS classList.remove removes arguments passed, if they are present. 
-PASS classList.remove must remove existing tokens 
-PASS classList.remove must not break case-sensitive CSS selector matching 
-PASS classList.remove must remove duplicated tokens 
-PASS classList.remove must collapse whitespace around removed tokens 
-PASS classList.remove must collapse whitespaces around each token 
-FAIL classList.remove must collapse whitespaces around each token and remove duplicates assert_equals: implicit expected "token1" but got "token1 token1"
-PASS classList.remove must collapse whitespace when removing duplicate tokens 
-FAIL classList.add must collapse whitespaces and remove duplicates when adding a token that already exists assert_equals: implicit expected "token1" but got "  token1  token1  "
-PASS classList.toggle must toggle tokens case-sensitively when adding 
-PASS classList.toggle must not break case-sensitive CSS selector matching 
-PASS classList.toggle must be able to remove tokens 
-PASS classList.toggle must be case-sensitive when removing tokens 
-FAIL classList.replace replaces arguments passed, if they are present. secondelem.classList.replace is not a function
-FAIL classList.replace must replace existing tokens secondelem.classList.replace is not a function
-FAIL classList.replace must not break case-sensitive CSS selector matching assert_not_equals: got disallowed value "italic"
-FAIL classList.replace must replace duplicated tokens secondelem.classList.replace is not a function
-FAIL classList.replace must collapse whitespace around replaced tokens secondelem.classList.replace is not a function
-FAIL classList.replace must collapse whitespaces around each token secondelem.classList.replace is not a function
-FAIL classList.replace must collapse whitespaces around each token and remove duplicates secondelem.classList.replace is not a function
-FAIL classList.replace must collapse whitespace when replacing duplicate tokens secondelem.classList.replace is not a function
-PASS CSS class selectors must stop matching when all classes have been removed 
-PASS className must be empty when all classes have been removed 
-PASS classList must stringify to an empty string when all classes have been removed 
-PASS classList.item(0) must return null when all classes have been removed 
-PASS classList[0] must be undefined when all classes have been removed 
-FAIL Invoking add or remove should set the class attribute assert_true: expected true got false
-PASS classList.add should treat " " as a space 
-FAIL classList.add should treat \t as a space assert_equals: expected "a b" but got "a\tb"
-FAIL classList.add should treat \r as a space assert_equals: expected "a b" but got "a\rb"
-FAIL classList.add should treat \n as a space assert_equals: expected "a b" but got "a\nb"
-FAIL classList.add should treat \f as a space assert_equals: expected "a b" but got "a\fb"
-PASS classList.length must be read-only 
-PASS classList must have [PutForwards=value] 
-FAIL classList.replace should work foo.classList.replace is not a function
-PASS classList.supports should throw 
+Found 1135 tests; 685 PASS, 450 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Assigning to classList (HTML node) 
+PASS .supports() must throw TypeError (HTML node) 
+PASS classList.length when removed (HTML node) 
+PASS classList.length when set to "" (HTML node) 
+PASS classList.length when set to "   \t  \f" (HTML node) 
+PASS classList.length when set to "a" (HTML node) 
+PASS classList.length when set to "a A" (HTML node) 
+PASS classList.length when set to "\r\na\t\f" (HTML node) 
+FAIL classList.length when set to "a a" (HTML node) assert_equals: expected 1 but got 2
+FAIL classList.length when set to "a a a a a a" (HTML node) assert_equals: expected 1 but got 6
+FAIL classList.length when set to "a a b b" (HTML node) assert_equals: expected 2 but got 4
+PASS classList.length when set to "a A B b" (HTML node) 
+FAIL classList.length when set to "a b c c b a a b c c" (HTML node) assert_equals: expected 3 but got 10
+FAIL classList.length when set to "   a  a b" (HTML node) assert_equals: expected 2 but got 3
+PASS classList.length when set to "a\tb\nc\fd\re f" (HTML node) 
+PASS classList.toString() when removed (HTML node) 
+PASS classList.toString() when set to "foo" (HTML node) 
+PASS classList.toString() when set to "   a  a b" (HTML node) 
+PASS classList.item() when set to null (HTML node) 
+PASS classList.item() when set to "a" (HTML node) 
+FAIL classList.item() when set to "aa AA aa" (HTML node) assert_equals: classList.item(2) expected (object) null but got (string) "aa"
+PASS classList.item() when set to "a b" (HTML node) 
+FAIL classList.item() when set to "   a  a b" (HTML node) assert_equals: classList.item(1) expected "b" but got "a"
+PASS classList.item() when set to "\t\n\f\r a\t\n\f\r b\t\n\f\r " (HTML node) 
+PASS classList.contains("a") when set to null (HTML node) 
+FAIL classList.contains("") when set to null (HTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided must not be empty.
+FAIL classList.contains("  ") when set to null (HTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('  ') contains HTML space characters, which are not valid in tokens.
+PASS classList.contains("a") when set to "" (HTML node) 
+PASS classList.contains("a") when set to "a" (HTML node) 
+PASS classList.contains("aa") when set to "a" (HTML node) 
+PASS classList.contains("b") when set to "a" (HTML node) 
+PASS classList.contains("A") when set to "a" (HTML node) 
+PASS classList.contains("a.") when set to "a" (HTML node) 
+PASS classList.contains("a)") when set to "a" (HTML node) 
+PASS classList.contains(undefined) when set to "a" (HTML node) 
+PASS classList.contains("a'") when set to "a" (HTML node) 
+PASS classList.contains("a\"") when set to "a" (HTML node) 
+PASS classList.contains("a$") when set to "a" (HTML node) 
+PASS classList.contains("a~") when set to "a" (HTML node) 
+PASS classList.contains("a?") when set to "a" (HTML node) 
+PASS classList.contains("a\\") when set to "a" (HTML node) 
+FAIL classList.contains("a\t") when set to "a" (HTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a	') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\ta") when set to "a" (HTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('	a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a\n") when set to "a" (HTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a
+') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\na") when set to "a" (HTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('
+a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a\f") when set to "a" (HTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\fa") when set to "a" (HTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a\r") when set to "a" (HTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a\r') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\ra") when set to "a" (HTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('\ra') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a ") when set to "a" (HTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a ') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains(" a") when set to "a" (HTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided (' a') contains HTML space characters, which are not valid in tokens.
+PASS classList.contains("aa") when set to "aa AA" (HTML node) 
+PASS classList.contains("AA") when set to "aa AA" (HTML node) 
+PASS classList.contains("aA") when set to "aa AA" (HTML node) 
+PASS classList.contains("a") when set to "a a a" (HTML node) 
+PASS classList.contains("aa") when set to "a a a" (HTML node) 
+PASS classList.contains("b") when set to "a a a" (HTML node) 
+PASS classList.contains("a") when set to "a b c" (HTML node) 
+PASS classList.contains("b") when set to "a b c" (HTML node) 
+PASS classList.contains(null) when set to "null undefined" (HTML node) 
+PASS classList.contains(undefined) when set to "null undefined" (HTML node) 
+PASS classList.contains("a") when set to "\t\n\f\r a\t\n\f\r b\t\n\f\r " (HTML node) 
+PASS classList.contains("b") when set to "\t\n\f\r a\t\n\f\r b\t\n\f\r " (HTML node) 
+PASS classList.add("") with attribute value null (HTML node) 
+PASS classList.add("a", "") with attribute value null (HTML node) 
+PASS classList.add(" ") with attribute value null (HTML node) 
+PASS classList.add("\ta") with attribute value null (HTML node) 
+PASS classList.add("a\t") with attribute value null (HTML node) 
+PASS classList.add("\na") with attribute value null (HTML node) 
+PASS classList.add("a\n") with attribute value null (HTML node) 
+PASS classList.add("\fa") with attribute value null (HTML node) 
+PASS classList.add("a\f") with attribute value null (HTML node) 
+PASS classList.add("\ra") with attribute value null (HTML node) 
+PASS classList.add("a\r") with attribute value null (HTML node) 
+PASS classList.add(" a") with attribute value null (HTML node) 
+PASS classList.add("a ") with attribute value null (HTML node) 
+PASS classList.add("a", " ") with attribute value null (HTML node) 
+PASS classList.add("a", "aa ") with attribute value null (HTML node) 
+PASS classList.add("a") with attribute value "a" (HTML node) 
+PASS classList.add("AA") with attribute value "aa" (HTML node) 
+PASS classList.add("a") with attribute value "a b c" (HTML node) 
+FAIL classList.add("a") with attribute value "a a a  b" (HTML node) assert_equals: wrong class after modification expected "a b" but got "a a a  b"
+PASS classList.add("a") with attribute value null (HTML node) 
+PASS classList.add("a") with attribute value "" (HTML node) 
+FAIL classList.add("a") with attribute value " " (HTML node) assert_equals: wrong class after modification expected "a" but got " a"
+FAIL classList.add("a") with attribute value "   \f" (HTML node) assert_equals: wrong class after modification expected "a" but got "   \fa"
+PASS classList.add("b") with attribute value "a" (HTML node) 
+PASS classList.add("d") with attribute value "a b c" (HTML node) 
+PASS classList.add("d") with attribute value "a b c " (HTML node) 
+FAIL classList.add("c") with attribute value "   a  a b" (HTML node) assert_equals: wrong class after modification expected "a b c" but got "   a  a b c"
+FAIL classList.add("a") with attribute value "   a  a b" (HTML node) assert_equals: wrong class after modification expected "a b" but got "   a  a b"
+FAIL classList.add("c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (HTML node) assert_equals: wrong class after modification expected "a b c" but got "\t\n\f\r a\t\n\f\r b\t\n\f\r c"
+PASS classList.add("d", "e") with attribute value "a b c " (HTML node) 
+FAIL classList.add("a", "a") with attribute value "a b c " (HTML node) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+PASS classList.add("d", "d") with attribute value "a b c " (HTML node) 
+FAIL classList.add() with attribute value "a b c a " (HTML node) assert_equals: wrong class after modification expected "a b c" but got "a b c a "
+PASS classList.add("a", "b") with attribute value null (HTML node) 
+PASS classList.add("a", "b") with attribute value "" (HTML node) 
+PASS classList.add(null) with attribute value null (HTML node) 
+PASS classList.add(undefined) with attribute value null (HTML node) 
+PASS classList.remove("") with attribute value null (HTML node) 
+PASS classList.remove(" ") with attribute value null (HTML node) 
+PASS classList.remove("\ta") with attribute value "\ta" (HTML node) 
+PASS classList.remove("a\t") with attribute value "a\t" (HTML node) 
+PASS classList.remove("\na") with attribute value "\na" (HTML node) 
+PASS classList.remove("a\n") with attribute value "a\n" (HTML node) 
+PASS classList.remove("\fa") with attribute value "\fa" (HTML node) 
+PASS classList.remove("a\f") with attribute value "a\f" (HTML node) 
+PASS classList.remove("\ra") with attribute value "\ra" (HTML node) 
+PASS classList.remove("a\r") with attribute value "a\r" (HTML node) 
+PASS classList.remove(" a") with attribute value " a" (HTML node) 
+PASS classList.remove("a ") with attribute value "a " (HTML node) 
+PASS classList.remove("aa ") with attribute value "aa " (HTML node) 
+PASS classList.remove("a") with attribute value null (HTML node) 
+PASS classList.remove("a") with attribute value "" (HTML node) 
+FAIL classList.remove("d") with attribute value "a b  c" (HTML node) assert_equals: wrong class after modification expected "a b c" but got "a b  c"
+FAIL classList.remove("A") with attribute value "a b  c" (HTML node) assert_equals: wrong class after modification expected "a b c" but got "a b  c"
+PASS classList.remove("a") with attribute value " a a a " (HTML node) 
+PASS classList.remove("a") with attribute value "a  b" (HTML node) 
+PASS classList.remove("a") with attribute value "a  b  " (HTML node) 
+PASS classList.remove("a") with attribute value "a a b" (HTML node) 
+PASS classList.remove("aa") with attribute value "aa aa bb" (HTML node) 
+PASS classList.remove("a") with attribute value "a a b a a c a a" (HTML node) 
+PASS classList.remove("b") with attribute value "a  b  c" (HTML node) 
+PASS classList.remove("bbb") with attribute value "aaa  bbb  ccc" (HTML node) 
+PASS classList.remove("b") with attribute value " a  b  c " (HTML node) 
+PASS classList.remove("b") with attribute value "a b b b c" (HTML node) 
+PASS classList.remove("c") with attribute value "a  b  c" (HTML node) 
+PASS classList.remove("c") with attribute value " a  b  c " (HTML node) 
+PASS classList.remove("c") with attribute value "a b c c c" (HTML node) 
+PASS classList.remove("a") with attribute value "a b a c a d a" (HTML node) 
+FAIL classList.remove("AA") with attribute value "AA BB aa CC AA dd aa" (HTML node) assert_equals: wrong class after modification expected "BB aa CC dd" but got "BB aa CC dd aa"
+PASS classList.remove("a") with attribute value "\ra\na\ta\f" (HTML node) 
+PASS classList.remove("a") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (HTML node) 
+FAIL classList.remove("d", "e") with attribute value "a b c " (HTML node) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+PASS classList.remove("a", "b") with attribute value "a b c " (HTML node) 
+PASS classList.remove("a", "c") with attribute value "a b c " (HTML node) 
+PASS classList.remove("a", "a") with attribute value "a b c " (HTML node) 
+FAIL classList.remove("d", "d") with attribute value "a b c " (HTML node) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+FAIL classList.remove() with attribute value "a b c " (HTML node) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+PASS classList.remove("a", "b") with attribute value null (HTML node) 
+PASS classList.remove("a", "b") with attribute value "" (HTML node) 
+FAIL classList.remove() with attribute value "a a" (HTML node) assert_equals: wrong class after modification expected "a" but got "a a"
+PASS classList.remove(null) with attribute value "null" (HTML node) 
+PASS classList.remove(undefined) with attribute value "undefined" (HTML node) 
+PASS classList.toggle("") with attribute value null (HTML node) 
+PASS classList.toggle("aa ") with attribute value null (HTML node) 
+PASS classList.toggle("a") with attribute value null (HTML node) 
+PASS classList.toggle("a") with attribute value "" (HTML node) 
+FAIL classList.toggle("a") with attribute value " " (HTML node) assert_equals: wrong class after modification expected "a" but got " a"
+FAIL classList.toggle("a") with attribute value "   \f" (HTML node) assert_equals: wrong class after modification expected "a" but got "   \fa"
+PASS classList.toggle("b") with attribute value "a" (HTML node) 
+PASS classList.toggle("A") with attribute value "a" (HTML node) 
+PASS classList.toggle("d") with attribute value "a b c" (HTML node) 
+FAIL classList.toggle("d") with attribute value "   a  a b" (HTML node) assert_equals: wrong class after modification expected "a b d" but got "   a  a b d"
+PASS classList.toggle("a") with attribute value "a" (HTML node) 
+PASS classList.toggle("a") with attribute value " a a a " (HTML node) 
+FAIL classList.toggle("a") with attribute value " A A A " (HTML node) assert_equals: wrong class after modification expected "A a" but got " A A A a"
+PASS classList.toggle("b") with attribute value " a b c " (HTML node) 
+PASS classList.toggle("b") with attribute value " a b c b b" (HTML node) 
+PASS classList.toggle("c") with attribute value " a b  c  " (HTML node) 
+PASS classList.toggle("a") with attribute value " a b c " (HTML node) 
+FAIL classList.toggle("b") with attribute value "   a  a b" (HTML node) assert_equals: wrong class after modification expected "a" but got "a a"
+PASS classList.toggle("a") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (HTML node) 
+FAIL classList.toggle("c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (HTML node) assert_equals: wrong class after modification expected "a b c" but got "\t\n\f\r a\t\n\f\r b\t\n\f\r c"
+PASS classList.toggle(null) with attribute value "null" (HTML node) 
+PASS classList.toggle(null) with attribute value "" (HTML node) 
+PASS classList.toggle(undefined) with attribute value "undefined" (HTML node) 
+PASS classList.toggle(undefined) with attribute value "" (HTML node) 
+PASS classList.toggle("a", true) with attribute value "" (HTML node) 
+PASS classList.toggle("a", true) with attribute value "a" (HTML node) 
+PASS classList.toggle("b", true) with attribute value "a" (HTML node) 
+PASS classList.toggle("b", true) with attribute value "a b" (HTML node) 
+PASS classList.toggle("a", false) with attribute value "" (HTML node) 
+PASS classList.toggle("a", false) with attribute value "a" (HTML node) 
+PASS classList.toggle("b", false) with attribute value "a" (HTML node) 
+PASS classList.toggle("b", false) with attribute value "a b" (HTML node) 
+FAIL classList.replace("", "a") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace("", " ") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace(" ", "a") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\ta", "b") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\t", "b") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\na", "b") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\n", "b") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\fa", "b") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\f", "b") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\ra", "b") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\r", "b") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace(" a", "b") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a ", "b") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a", "") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace(" ", "") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace("a", " ") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\ta") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\t") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\na") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\n") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\fa") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\f") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\ra") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\r") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", " a") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a ") with attribute value null (HTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a", "a") with attribute value "a" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value "a" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("A", "b") with attribute value "a" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "A") with attribute value "a b" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("d", "e") with attribute value "a b c" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "a") with attribute value "a a a  b" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("c", "d") with attribute value "a a a  b" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value null (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value "" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value " " (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value " a  \f" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "d") with attribute value "a b c" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("c", "a") with attribute value "a b c" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("c", "a") with attribute value "c b a" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "c") with attribute value "a b a" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "c") with attribute value "a b a" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "c") with attribute value "   a  a b" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "c") with attribute value "   a  a b" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace(null, "b") with attribute value "a null" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", null) with attribute value "a b" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace(undefined, "b") with attribute value "a undefined" (HTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", undefined) with attribute value "a b" (HTML node) Cannot read property 'apply' of undefined
+PASS Assigning to classList (XHTML node) 
+PASS .supports() must throw TypeError (XHTML node) 
+PASS classList.length when removed (XHTML node) 
+PASS classList.length when set to "" (XHTML node) 
+PASS classList.length when set to "   \t  \f" (XHTML node) 
+PASS classList.length when set to "a" (XHTML node) 
+PASS classList.length when set to "a A" (XHTML node) 
+PASS classList.length when set to "\r\na\t\f" (XHTML node) 
+FAIL classList.length when set to "a a" (XHTML node) assert_equals: expected 1 but got 2
+FAIL classList.length when set to "a a a a a a" (XHTML node) assert_equals: expected 1 but got 6
+FAIL classList.length when set to "a a b b" (XHTML node) assert_equals: expected 2 but got 4
+PASS classList.length when set to "a A B b" (XHTML node) 
+FAIL classList.length when set to "a b c c b a a b c c" (XHTML node) assert_equals: expected 3 but got 10
+FAIL classList.length when set to "   a  a b" (XHTML node) assert_equals: expected 2 but got 3
+PASS classList.length when set to "a\tb\nc\fd\re f" (XHTML node) 
+PASS classList.toString() when removed (XHTML node) 
+PASS classList.toString() when set to "foo" (XHTML node) 
+PASS classList.toString() when set to "   a  a b" (XHTML node) 
+PASS classList.item() when set to null (XHTML node) 
+PASS classList.item() when set to "a" (XHTML node) 
+FAIL classList.item() when set to "aa AA aa" (XHTML node) assert_equals: classList.item(2) expected (object) null but got (string) "aa"
+PASS classList.item() when set to "a b" (XHTML node) 
+FAIL classList.item() when set to "   a  a b" (XHTML node) assert_equals: classList.item(1) expected "b" but got "a"
+PASS classList.item() when set to "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XHTML node) 
+PASS classList.contains("a") when set to null (XHTML node) 
+FAIL classList.contains("") when set to null (XHTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided must not be empty.
+FAIL classList.contains("  ") when set to null (XHTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('  ') contains HTML space characters, which are not valid in tokens.
+PASS classList.contains("a") when set to "" (XHTML node) 
+PASS classList.contains("a") when set to "a" (XHTML node) 
+PASS classList.contains("aa") when set to "a" (XHTML node) 
+PASS classList.contains("b") when set to "a" (XHTML node) 
+PASS classList.contains("A") when set to "a" (XHTML node) 
+PASS classList.contains("a.") when set to "a" (XHTML node) 
+PASS classList.contains("a)") when set to "a" (XHTML node) 
+PASS classList.contains(undefined) when set to "a" (XHTML node) 
+PASS classList.contains("a'") when set to "a" (XHTML node) 
+PASS classList.contains("a\"") when set to "a" (XHTML node) 
+PASS classList.contains("a$") when set to "a" (XHTML node) 
+PASS classList.contains("a~") when set to "a" (XHTML node) 
+PASS classList.contains("a?") when set to "a" (XHTML node) 
+PASS classList.contains("a\\") when set to "a" (XHTML node) 
+FAIL classList.contains("a\t") when set to "a" (XHTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a	') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\ta") when set to "a" (XHTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('	a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a\n") when set to "a" (XHTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a
+') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\na") when set to "a" (XHTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('
+a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a\f") when set to "a" (XHTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\fa") when set to "a" (XHTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a\r") when set to "a" (XHTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a\r') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\ra") when set to "a" (XHTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('\ra') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a ") when set to "a" (XHTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a ') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains(" a") when set to "a" (XHTML node) Failed to execute 'contains' on 'DOMTokenList': The token provided (' a') contains HTML space characters, which are not valid in tokens.
+PASS classList.contains("aa") when set to "aa AA" (XHTML node) 
+PASS classList.contains("AA") when set to "aa AA" (XHTML node) 
+PASS classList.contains("aA") when set to "aa AA" (XHTML node) 
+PASS classList.contains("a") when set to "a a a" (XHTML node) 
+PASS classList.contains("aa") when set to "a a a" (XHTML node) 
+PASS classList.contains("b") when set to "a a a" (XHTML node) 
+PASS classList.contains("a") when set to "a b c" (XHTML node) 
+PASS classList.contains("b") when set to "a b c" (XHTML node) 
+PASS classList.contains(null) when set to "null undefined" (XHTML node) 
+PASS classList.contains(undefined) when set to "null undefined" (XHTML node) 
+PASS classList.contains("a") when set to "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XHTML node) 
+PASS classList.contains("b") when set to "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XHTML node) 
+PASS classList.add("") with attribute value null (XHTML node) 
+PASS classList.add("a", "") with attribute value null (XHTML node) 
+PASS classList.add(" ") with attribute value null (XHTML node) 
+PASS classList.add("\ta") with attribute value null (XHTML node) 
+PASS classList.add("a\t") with attribute value null (XHTML node) 
+PASS classList.add("\na") with attribute value null (XHTML node) 
+PASS classList.add("a\n") with attribute value null (XHTML node) 
+PASS classList.add("\fa") with attribute value null (XHTML node) 
+PASS classList.add("a\f") with attribute value null (XHTML node) 
+PASS classList.add("\ra") with attribute value null (XHTML node) 
+PASS classList.add("a\r") with attribute value null (XHTML node) 
+PASS classList.add(" a") with attribute value null (XHTML node) 
+PASS classList.add("a ") with attribute value null (XHTML node) 
+PASS classList.add("a", " ") with attribute value null (XHTML node) 
+PASS classList.add("a", "aa ") with attribute value null (XHTML node) 
+PASS classList.add("a") with attribute value "a" (XHTML node) 
+PASS classList.add("AA") with attribute value "aa" (XHTML node) 
+PASS classList.add("a") with attribute value "a b c" (XHTML node) 
+FAIL classList.add("a") with attribute value "a a a  b" (XHTML node) assert_equals: wrong class after modification expected "a b" but got "a a a  b"
+PASS classList.add("a") with attribute value null (XHTML node) 
+PASS classList.add("a") with attribute value "" (XHTML node) 
+FAIL classList.add("a") with attribute value " " (XHTML node) assert_equals: wrong class after modification expected "a" but got " a"
+FAIL classList.add("a") with attribute value "   \f" (XHTML node) assert_equals: wrong class after modification expected "a" but got "   \fa"
+PASS classList.add("b") with attribute value "a" (XHTML node) 
+PASS classList.add("d") with attribute value "a b c" (XHTML node) 
+PASS classList.add("d") with attribute value "a b c " (XHTML node) 
+FAIL classList.add("c") with attribute value "   a  a b" (XHTML node) assert_equals: wrong class after modification expected "a b c" but got "   a  a b c"
+FAIL classList.add("a") with attribute value "   a  a b" (XHTML node) assert_equals: wrong class after modification expected "a b" but got "   a  a b"
+FAIL classList.add("c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XHTML node) assert_equals: wrong class after modification expected "a b c" but got "\t\n\f\r a\t\n\f\r b\t\n\f\r c"
+PASS classList.add("d", "e") with attribute value "a b c " (XHTML node) 
+FAIL classList.add("a", "a") with attribute value "a b c " (XHTML node) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+PASS classList.add("d", "d") with attribute value "a b c " (XHTML node) 
+FAIL classList.add() with attribute value "a b c a " (XHTML node) assert_equals: wrong class after modification expected "a b c" but got "a b c a "
+PASS classList.add("a", "b") with attribute value null (XHTML node) 
+PASS classList.add("a", "b") with attribute value "" (XHTML node) 
+PASS classList.add(null) with attribute value null (XHTML node) 
+PASS classList.add(undefined) with attribute value null (XHTML node) 
+PASS classList.remove("") with attribute value null (XHTML node) 
+PASS classList.remove(" ") with attribute value null (XHTML node) 
+PASS classList.remove("\ta") with attribute value "\ta" (XHTML node) 
+PASS classList.remove("a\t") with attribute value "a\t" (XHTML node) 
+PASS classList.remove("\na") with attribute value "\na" (XHTML node) 
+PASS classList.remove("a\n") with attribute value "a\n" (XHTML node) 
+PASS classList.remove("\fa") with attribute value "\fa" (XHTML node) 
+PASS classList.remove("a\f") with attribute value "a\f" (XHTML node) 
+PASS classList.remove("\ra") with attribute value "\ra" (XHTML node) 
+PASS classList.remove("a\r") with attribute value "a\r" (XHTML node) 
+PASS classList.remove(" a") with attribute value " a" (XHTML node) 
+PASS classList.remove("a ") with attribute value "a " (XHTML node) 
+PASS classList.remove("aa ") with attribute value "aa " (XHTML node) 
+PASS classList.remove("a") with attribute value null (XHTML node) 
+PASS classList.remove("a") with attribute value "" (XHTML node) 
+FAIL classList.remove("d") with attribute value "a b  c" (XHTML node) assert_equals: wrong class after modification expected "a b c" but got "a b  c"
+FAIL classList.remove("A") with attribute value "a b  c" (XHTML node) assert_equals: wrong class after modification expected "a b c" but got "a b  c"
+PASS classList.remove("a") with attribute value " a a a " (XHTML node) 
+PASS classList.remove("a") with attribute value "a  b" (XHTML node) 
+PASS classList.remove("a") with attribute value "a  b  " (XHTML node) 
+PASS classList.remove("a") with attribute value "a a b" (XHTML node) 
+PASS classList.remove("aa") with attribute value "aa aa bb" (XHTML node) 
+PASS classList.remove("a") with attribute value "a a b a a c a a" (XHTML node) 
+PASS classList.remove("b") with attribute value "a  b  c" (XHTML node) 
+PASS classList.remove("bbb") with attribute value "aaa  bbb  ccc" (XHTML node) 
+PASS classList.remove("b") with attribute value " a  b  c " (XHTML node) 
+PASS classList.remove("b") with attribute value "a b b b c" (XHTML node) 
+PASS classList.remove("c") with attribute value "a  b  c" (XHTML node) 
+PASS classList.remove("c") with attribute value " a  b  c " (XHTML node) 
+PASS classList.remove("c") with attribute value "a b c c c" (XHTML node) 
+PASS classList.remove("a") with attribute value "a b a c a d a" (XHTML node) 
+FAIL classList.remove("AA") with attribute value "AA BB aa CC AA dd aa" (XHTML node) assert_equals: wrong class after modification expected "BB aa CC dd" but got "BB aa CC dd aa"
+PASS classList.remove("a") with attribute value "\ra\na\ta\f" (XHTML node) 
+PASS classList.remove("a") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XHTML node) 
+FAIL classList.remove("d", "e") with attribute value "a b c " (XHTML node) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+PASS classList.remove("a", "b") with attribute value "a b c " (XHTML node) 
+PASS classList.remove("a", "c") with attribute value "a b c " (XHTML node) 
+PASS classList.remove("a", "a") with attribute value "a b c " (XHTML node) 
+FAIL classList.remove("d", "d") with attribute value "a b c " (XHTML node) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+FAIL classList.remove() with attribute value "a b c " (XHTML node) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+PASS classList.remove("a", "b") with attribute value null (XHTML node) 
+PASS classList.remove("a", "b") with attribute value "" (XHTML node) 
+FAIL classList.remove() with attribute value "a a" (XHTML node) assert_equals: wrong class after modification expected "a" but got "a a"
+PASS classList.remove(null) with attribute value "null" (XHTML node) 
+PASS classList.remove(undefined) with attribute value "undefined" (XHTML node) 
+PASS classList.toggle("") with attribute value null (XHTML node) 
+PASS classList.toggle("aa ") with attribute value null (XHTML node) 
+PASS classList.toggle("a") with attribute value null (XHTML node) 
+PASS classList.toggle("a") with attribute value "" (XHTML node) 
+FAIL classList.toggle("a") with attribute value " " (XHTML node) assert_equals: wrong class after modification expected "a" but got " a"
+FAIL classList.toggle("a") with attribute value "   \f" (XHTML node) assert_equals: wrong class after modification expected "a" but got "   \fa"
+PASS classList.toggle("b") with attribute value "a" (XHTML node) 
+PASS classList.toggle("A") with attribute value "a" (XHTML node) 
+PASS classList.toggle("d") with attribute value "a b c" (XHTML node) 
+FAIL classList.toggle("d") with attribute value "   a  a b" (XHTML node) assert_equals: wrong class after modification expected "a b d" but got "   a  a b d"
+PASS classList.toggle("a") with attribute value "a" (XHTML node) 
+PASS classList.toggle("a") with attribute value " a a a " (XHTML node) 
+FAIL classList.toggle("a") with attribute value " A A A " (XHTML node) assert_equals: wrong class after modification expected "A a" but got " A A A a"
+PASS classList.toggle("b") with attribute value " a b c " (XHTML node) 
+PASS classList.toggle("b") with attribute value " a b c b b" (XHTML node) 
+PASS classList.toggle("c") with attribute value " a b  c  " (XHTML node) 
+PASS classList.toggle("a") with attribute value " a b c " (XHTML node) 
+FAIL classList.toggle("b") with attribute value "   a  a b" (XHTML node) assert_equals: wrong class after modification expected "a" but got "a a"
+PASS classList.toggle("a") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XHTML node) 
+FAIL classList.toggle("c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XHTML node) assert_equals: wrong class after modification expected "a b c" but got "\t\n\f\r a\t\n\f\r b\t\n\f\r c"
+PASS classList.toggle(null) with attribute value "null" (XHTML node) 
+PASS classList.toggle(null) with attribute value "" (XHTML node) 
+PASS classList.toggle(undefined) with attribute value "undefined" (XHTML node) 
+PASS classList.toggle(undefined) with attribute value "" (XHTML node) 
+PASS classList.toggle("a", true) with attribute value "" (XHTML node) 
+PASS classList.toggle("a", true) with attribute value "a" (XHTML node) 
+PASS classList.toggle("b", true) with attribute value "a" (XHTML node) 
+PASS classList.toggle("b", true) with attribute value "a b" (XHTML node) 
+PASS classList.toggle("a", false) with attribute value "" (XHTML node) 
+PASS classList.toggle("a", false) with attribute value "a" (XHTML node) 
+PASS classList.toggle("b", false) with attribute value "a" (XHTML node) 
+PASS classList.toggle("b", false) with attribute value "a b" (XHTML node) 
+FAIL classList.replace("", "a") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace("", " ") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace(" ", "a") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\ta", "b") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\t", "b") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\na", "b") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\n", "b") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\fa", "b") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\f", "b") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\ra", "b") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\r", "b") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace(" a", "b") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a ", "b") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a", "") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace(" ", "") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace("a", " ") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\ta") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\t") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\na") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\n") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\fa") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\f") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\ra") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\r") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", " a") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a ") with attribute value null (XHTML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a", "a") with attribute value "a" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value "a" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("A", "b") with attribute value "a" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "A") with attribute value "a b" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("d", "e") with attribute value "a b c" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "a") with attribute value "a a a  b" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("c", "d") with attribute value "a a a  b" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value null (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value "" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value " " (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value " a  \f" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "d") with attribute value "a b c" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("c", "a") with attribute value "a b c" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("c", "a") with attribute value "c b a" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "c") with attribute value "a b a" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "c") with attribute value "a b a" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "c") with attribute value "   a  a b" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "c") with attribute value "   a  a b" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace(null, "b") with attribute value "a null" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", null) with attribute value "a b" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace(undefined, "b") with attribute value "a undefined" (XHTML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", undefined) with attribute value "a b" (XHTML node) Cannot read property 'apply' of undefined
+PASS Assigning to classList (MathML node) 
+PASS .supports() must throw TypeError (MathML node) 
+PASS classList.length when removed (MathML node) 
+PASS classList.length when set to "" (MathML node) 
+PASS classList.length when set to "   \t  \f" (MathML node) 
+PASS classList.length when set to "a" (MathML node) 
+PASS classList.length when set to "a A" (MathML node) 
+PASS classList.length when set to "\r\na\t\f" (MathML node) 
+FAIL classList.length when set to "a a" (MathML node) assert_equals: expected 1 but got 2
+FAIL classList.length when set to "a a a a a a" (MathML node) assert_equals: expected 1 but got 6
+FAIL classList.length when set to "a a b b" (MathML node) assert_equals: expected 2 but got 4
+PASS classList.length when set to "a A B b" (MathML node) 
+FAIL classList.length when set to "a b c c b a a b c c" (MathML node) assert_equals: expected 3 but got 10
+FAIL classList.length when set to "   a  a b" (MathML node) assert_equals: expected 2 but got 3
+PASS classList.length when set to "a\tb\nc\fd\re f" (MathML node) 
+PASS classList.toString() when removed (MathML node) 
+PASS classList.toString() when set to "foo" (MathML node) 
+PASS classList.toString() when set to "   a  a b" (MathML node) 
+PASS classList.item() when set to null (MathML node) 
+PASS classList.item() when set to "a" (MathML node) 
+FAIL classList.item() when set to "aa AA aa" (MathML node) assert_equals: classList.item(2) expected (object) null but got (string) "aa"
+PASS classList.item() when set to "a b" (MathML node) 
+FAIL classList.item() when set to "   a  a b" (MathML node) assert_equals: classList.item(1) expected "b" but got "a"
+PASS classList.item() when set to "\t\n\f\r a\t\n\f\r b\t\n\f\r " (MathML node) 
+PASS classList.contains("a") when set to null (MathML node) 
+FAIL classList.contains("") when set to null (MathML node) Failed to execute 'contains' on 'DOMTokenList': The token provided must not be empty.
+FAIL classList.contains("  ") when set to null (MathML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('  ') contains HTML space characters, which are not valid in tokens.
+PASS classList.contains("a") when set to "" (MathML node) 
+PASS classList.contains("a") when set to "a" (MathML node) 
+PASS classList.contains("aa") when set to "a" (MathML node) 
+PASS classList.contains("b") when set to "a" (MathML node) 
+PASS classList.contains("A") when set to "a" (MathML node) 
+PASS classList.contains("a.") when set to "a" (MathML node) 
+PASS classList.contains("a)") when set to "a" (MathML node) 
+PASS classList.contains(undefined) when set to "a" (MathML node) 
+PASS classList.contains("a'") when set to "a" (MathML node) 
+PASS classList.contains("a\"") when set to "a" (MathML node) 
+PASS classList.contains("a$") when set to "a" (MathML node) 
+PASS classList.contains("a~") when set to "a" (MathML node) 
+PASS classList.contains("a?") when set to "a" (MathML node) 
+PASS classList.contains("a\\") when set to "a" (MathML node) 
+FAIL classList.contains("a\t") when set to "a" (MathML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a	') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\ta") when set to "a" (MathML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('	a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a\n") when set to "a" (MathML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a
+') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\na") when set to "a" (MathML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('
+a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a\f") when set to "a" (MathML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\fa") when set to "a" (MathML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a\r") when set to "a" (MathML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a\r') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\ra") when set to "a" (MathML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('\ra') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a ") when set to "a" (MathML node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a ') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains(" a") when set to "a" (MathML node) Failed to execute 'contains' on 'DOMTokenList': The token provided (' a') contains HTML space characters, which are not valid in tokens.
+PASS classList.contains("aa") when set to "aa AA" (MathML node) 
+PASS classList.contains("AA") when set to "aa AA" (MathML node) 
+PASS classList.contains("aA") when set to "aa AA" (MathML node) 
+PASS classList.contains("a") when set to "a a a" (MathML node) 
+PASS classList.contains("aa") when set to "a a a" (MathML node) 
+PASS classList.contains("b") when set to "a a a" (MathML node) 
+PASS classList.contains("a") when set to "a b c" (MathML node) 
+PASS classList.contains("b") when set to "a b c" (MathML node) 
+PASS classList.contains(null) when set to "null undefined" (MathML node) 
+PASS classList.contains(undefined) when set to "null undefined" (MathML node) 
+PASS classList.contains("a") when set to "\t\n\f\r a\t\n\f\r b\t\n\f\r " (MathML node) 
+PASS classList.contains("b") when set to "\t\n\f\r a\t\n\f\r b\t\n\f\r " (MathML node) 
+PASS classList.add("") with attribute value null (MathML node) 
+PASS classList.add("a", "") with attribute value null (MathML node) 
+PASS classList.add(" ") with attribute value null (MathML node) 
+PASS classList.add("\ta") with attribute value null (MathML node) 
+PASS classList.add("a\t") with attribute value null (MathML node) 
+PASS classList.add("\na") with attribute value null (MathML node) 
+PASS classList.add("a\n") with attribute value null (MathML node) 
+PASS classList.add("\fa") with attribute value null (MathML node) 
+PASS classList.add("a\f") with attribute value null (MathML node) 
+PASS classList.add("\ra") with attribute value null (MathML node) 
+PASS classList.add("a\r") with attribute value null (MathML node) 
+PASS classList.add(" a") with attribute value null (MathML node) 
+PASS classList.add("a ") with attribute value null (MathML node) 
+PASS classList.add("a", " ") with attribute value null (MathML node) 
+PASS classList.add("a", "aa ") with attribute value null (MathML node) 
+PASS classList.add("a") with attribute value "a" (MathML node) 
+PASS classList.add("AA") with attribute value "aa" (MathML node) 
+PASS classList.add("a") with attribute value "a b c" (MathML node) 
+FAIL classList.add("a") with attribute value "a a a  b" (MathML node) assert_equals: wrong class after modification expected "a b" but got "a a a  b"
+PASS classList.add("a") with attribute value null (MathML node) 
+PASS classList.add("a") with attribute value "" (MathML node) 
+FAIL classList.add("a") with attribute value " " (MathML node) assert_equals: wrong class after modification expected "a" but got " a"
+FAIL classList.add("a") with attribute value "   \f" (MathML node) assert_equals: wrong class after modification expected "a" but got "   \fa"
+PASS classList.add("b") with attribute value "a" (MathML node) 
+PASS classList.add("d") with attribute value "a b c" (MathML node) 
+PASS classList.add("d") with attribute value "a b c " (MathML node) 
+FAIL classList.add("c") with attribute value "   a  a b" (MathML node) assert_equals: wrong class after modification expected "a b c" but got "   a  a b c"
+FAIL classList.add("a") with attribute value "   a  a b" (MathML node) assert_equals: wrong class after modification expected "a b" but got "   a  a b"
+FAIL classList.add("c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (MathML node) assert_equals: wrong class after modification expected "a b c" but got "\t\n\f\r a\t\n\f\r b\t\n\f\r c"
+PASS classList.add("d", "e") with attribute value "a b c " (MathML node) 
+FAIL classList.add("a", "a") with attribute value "a b c " (MathML node) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+PASS classList.add("d", "d") with attribute value "a b c " (MathML node) 
+FAIL classList.add() with attribute value "a b c a " (MathML node) assert_equals: wrong class after modification expected "a b c" but got "a b c a "
+PASS classList.add("a", "b") with attribute value null (MathML node) 
+PASS classList.add("a", "b") with attribute value "" (MathML node) 
+PASS classList.add(null) with attribute value null (MathML node) 
+PASS classList.add(undefined) with attribute value null (MathML node) 
+PASS classList.remove("") with attribute value null (MathML node) 
+PASS classList.remove(" ") with attribute value null (MathML node) 
+PASS classList.remove("\ta") with attribute value "\ta" (MathML node) 
+PASS classList.remove("a\t") with attribute value "a\t" (MathML node) 
+PASS classList.remove("\na") with attribute value "\na" (MathML node) 
+PASS classList.remove("a\n") with attribute value "a\n" (MathML node) 
+PASS classList.remove("\fa") with attribute value "\fa" (MathML node) 
+PASS classList.remove("a\f") with attribute value "a\f" (MathML node) 
+PASS classList.remove("\ra") with attribute value "\ra" (MathML node) 
+PASS classList.remove("a\r") with attribute value "a\r" (MathML node) 
+PASS classList.remove(" a") with attribute value " a" (MathML node) 
+PASS classList.remove("a ") with attribute value "a " (MathML node) 
+PASS classList.remove("aa ") with attribute value "aa " (MathML node) 
+PASS classList.remove("a") with attribute value null (MathML node) 
+PASS classList.remove("a") with attribute value "" (MathML node) 
+FAIL classList.remove("d") with attribute value "a b  c" (MathML node) assert_equals: wrong class after modification expected "a b c" but got "a b  c"
+FAIL classList.remove("A") with attribute value "a b  c" (MathML node) assert_equals: wrong class after modification expected "a b c" but got "a b  c"
+PASS classList.remove("a") with attribute value " a a a " (MathML node) 
+PASS classList.remove("a") with attribute value "a  b" (MathML node) 
+PASS classList.remove("a") with attribute value "a  b  " (MathML node) 
+PASS classList.remove("a") with attribute value "a a b" (MathML node) 
+PASS classList.remove("aa") with attribute value "aa aa bb" (MathML node) 
+PASS classList.remove("a") with attribute value "a a b a a c a a" (MathML node) 
+PASS classList.remove("b") with attribute value "a  b  c" (MathML node) 
+PASS classList.remove("bbb") with attribute value "aaa  bbb  ccc" (MathML node) 
+PASS classList.remove("b") with attribute value " a  b  c " (MathML node) 
+PASS classList.remove("b") with attribute value "a b b b c" (MathML node) 
+PASS classList.remove("c") with attribute value "a  b  c" (MathML node) 
+PASS classList.remove("c") with attribute value " a  b  c " (MathML node) 
+PASS classList.remove("c") with attribute value "a b c c c" (MathML node) 
+PASS classList.remove("a") with attribute value "a b a c a d a" (MathML node) 
+FAIL classList.remove("AA") with attribute value "AA BB aa CC AA dd aa" (MathML node) assert_equals: wrong class after modification expected "BB aa CC dd" but got "BB aa CC dd aa"
+PASS classList.remove("a") with attribute value "\ra\na\ta\f" (MathML node) 
+PASS classList.remove("a") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (MathML node) 
+FAIL classList.remove("d", "e") with attribute value "a b c " (MathML node) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+PASS classList.remove("a", "b") with attribute value "a b c " (MathML node) 
+PASS classList.remove("a", "c") with attribute value "a b c " (MathML node) 
+PASS classList.remove("a", "a") with attribute value "a b c " (MathML node) 
+FAIL classList.remove("d", "d") with attribute value "a b c " (MathML node) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+FAIL classList.remove() with attribute value "a b c " (MathML node) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+PASS classList.remove("a", "b") with attribute value null (MathML node) 
+PASS classList.remove("a", "b") with attribute value "" (MathML node) 
+FAIL classList.remove() with attribute value "a a" (MathML node) assert_equals: wrong class after modification expected "a" but got "a a"
+PASS classList.remove(null) with attribute value "null" (MathML node) 
+PASS classList.remove(undefined) with attribute value "undefined" (MathML node) 
+PASS classList.toggle("") with attribute value null (MathML node) 
+PASS classList.toggle("aa ") with attribute value null (MathML node) 
+PASS classList.toggle("a") with attribute value null (MathML node) 
+PASS classList.toggle("a") with attribute value "" (MathML node) 
+FAIL classList.toggle("a") with attribute value " " (MathML node) assert_equals: wrong class after modification expected "a" but got " a"
+FAIL classList.toggle("a") with attribute value "   \f" (MathML node) assert_equals: wrong class after modification expected "a" but got "   \fa"
+PASS classList.toggle("b") with attribute value "a" (MathML node) 
+PASS classList.toggle("A") with attribute value "a" (MathML node) 
+PASS classList.toggle("d") with attribute value "a b c" (MathML node) 
+FAIL classList.toggle("d") with attribute value "   a  a b" (MathML node) assert_equals: wrong class after modification expected "a b d" but got "   a  a b d"
+PASS classList.toggle("a") with attribute value "a" (MathML node) 
+PASS classList.toggle("a") with attribute value " a a a " (MathML node) 
+FAIL classList.toggle("a") with attribute value " A A A " (MathML node) assert_equals: wrong class after modification expected "A a" but got " A A A a"
+PASS classList.toggle("b") with attribute value " a b c " (MathML node) 
+PASS classList.toggle("b") with attribute value " a b c b b" (MathML node) 
+PASS classList.toggle("c") with attribute value " a b  c  " (MathML node) 
+PASS classList.toggle("a") with attribute value " a b c " (MathML node) 
+FAIL classList.toggle("b") with attribute value "   a  a b" (MathML node) assert_equals: wrong class after modification expected "a" but got "a a"
+PASS classList.toggle("a") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (MathML node) 
+FAIL classList.toggle("c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (MathML node) assert_equals: wrong class after modification expected "a b c" but got "\t\n\f\r a\t\n\f\r b\t\n\f\r c"
+PASS classList.toggle(null) with attribute value "null" (MathML node) 
+PASS classList.toggle(null) with attribute value "" (MathML node) 
+PASS classList.toggle(undefined) with attribute value "undefined" (MathML node) 
+PASS classList.toggle(undefined) with attribute value "" (MathML node) 
+PASS classList.toggle("a", true) with attribute value "" (MathML node) 
+PASS classList.toggle("a", true) with attribute value "a" (MathML node) 
+PASS classList.toggle("b", true) with attribute value "a" (MathML node) 
+PASS classList.toggle("b", true) with attribute value "a b" (MathML node) 
+PASS classList.toggle("a", false) with attribute value "" (MathML node) 
+PASS classList.toggle("a", false) with attribute value "a" (MathML node) 
+PASS classList.toggle("b", false) with attribute value "a" (MathML node) 
+PASS classList.toggle("b", false) with attribute value "a b" (MathML node) 
+FAIL classList.replace("", "a") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace("", " ") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace(" ", "a") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\ta", "b") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\t", "b") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\na", "b") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\n", "b") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\fa", "b") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\f", "b") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\ra", "b") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\r", "b") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace(" a", "b") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a ", "b") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a", "") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace(" ", "") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace("a", " ") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\ta") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\t") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\na") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\n") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\fa") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\f") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\ra") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\r") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", " a") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a ") with attribute value null (MathML node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a", "a") with attribute value "a" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value "a" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("A", "b") with attribute value "a" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "A") with attribute value "a b" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("d", "e") with attribute value "a b c" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "a") with attribute value "a a a  b" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("c", "d") with attribute value "a a a  b" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value null (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value "" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value " " (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value " a  \f" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "d") with attribute value "a b c" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("c", "a") with attribute value "a b c" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("c", "a") with attribute value "c b a" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "c") with attribute value "a b a" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "c") with attribute value "a b a" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "c") with attribute value "   a  a b" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "c") with attribute value "   a  a b" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace(null, "b") with attribute value "a null" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", null) with attribute value "a b" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace(undefined, "b") with attribute value "a undefined" (MathML node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", undefined) with attribute value "a b" (MathML node) Cannot read property 'apply' of undefined
+PASS Assigning to classList (XML node with null namespace) 
+PASS .supports() must throw TypeError (XML node with null namespace) 
+PASS classList.length when removed (XML node with null namespace) 
+PASS classList.length when set to "" (XML node with null namespace) 
+PASS classList.length when set to "   \t  \f" (XML node with null namespace) 
+PASS classList.length when set to "a" (XML node with null namespace) 
+PASS classList.length when set to "a A" (XML node with null namespace) 
+PASS classList.length when set to "\r\na\t\f" (XML node with null namespace) 
+FAIL classList.length when set to "a a" (XML node with null namespace) assert_equals: expected 1 but got 2
+FAIL classList.length when set to "a a a a a a" (XML node with null namespace) assert_equals: expected 1 but got 6
+FAIL classList.length when set to "a a b b" (XML node with null namespace) assert_equals: expected 2 but got 4
+PASS classList.length when set to "a A B b" (XML node with null namespace) 
+FAIL classList.length when set to "a b c c b a a b c c" (XML node with null namespace) assert_equals: expected 3 but got 10
+FAIL classList.length when set to "   a  a b" (XML node with null namespace) assert_equals: expected 2 but got 3
+PASS classList.length when set to "a\tb\nc\fd\re f" (XML node with null namespace) 
+PASS classList.toString() when removed (XML node with null namespace) 
+PASS classList.toString() when set to "foo" (XML node with null namespace) 
+PASS classList.toString() when set to "   a  a b" (XML node with null namespace) 
+PASS classList.item() when set to null (XML node with null namespace) 
+PASS classList.item() when set to "a" (XML node with null namespace) 
+FAIL classList.item() when set to "aa AA aa" (XML node with null namespace) assert_equals: classList.item(2) expected (object) null but got (string) "aa"
+PASS classList.item() when set to "a b" (XML node with null namespace) 
+FAIL classList.item() when set to "   a  a b" (XML node with null namespace) assert_equals: classList.item(1) expected "b" but got "a"
+PASS classList.item() when set to "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XML node with null namespace) 
+PASS classList.contains("a") when set to null (XML node with null namespace) 
+FAIL classList.contains("") when set to null (XML node with null namespace) Failed to execute 'contains' on 'DOMTokenList': The token provided must not be empty.
+FAIL classList.contains("  ") when set to null (XML node with null namespace) Failed to execute 'contains' on 'DOMTokenList': The token provided ('  ') contains HTML space characters, which are not valid in tokens.
+PASS classList.contains("a") when set to "" (XML node with null namespace) 
+PASS classList.contains("a") when set to "a" (XML node with null namespace) 
+PASS classList.contains("aa") when set to "a" (XML node with null namespace) 
+PASS classList.contains("b") when set to "a" (XML node with null namespace) 
+PASS classList.contains("A") when set to "a" (XML node with null namespace) 
+PASS classList.contains("a.") when set to "a" (XML node with null namespace) 
+PASS classList.contains("a)") when set to "a" (XML node with null namespace) 
+PASS classList.contains(undefined) when set to "a" (XML node with null namespace) 
+PASS classList.contains("a'") when set to "a" (XML node with null namespace) 
+PASS classList.contains("a\"") when set to "a" (XML node with null namespace) 
+PASS classList.contains("a$") when set to "a" (XML node with null namespace) 
+PASS classList.contains("a~") when set to "a" (XML node with null namespace) 
+PASS classList.contains("a?") when set to "a" (XML node with null namespace) 
+PASS classList.contains("a\\") when set to "a" (XML node with null namespace) 
+FAIL classList.contains("a\t") when set to "a" (XML node with null namespace) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a	') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\ta") when set to "a" (XML node with null namespace) Failed to execute 'contains' on 'DOMTokenList': The token provided ('	a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a\n") when set to "a" (XML node with null namespace) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a
+') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\na") when set to "a" (XML node with null namespace) Failed to execute 'contains' on 'DOMTokenList': The token provided ('
+a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a\f") when set to "a" (XML node with null namespace) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\fa") when set to "a" (XML node with null namespace) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a\r") when set to "a" (XML node with null namespace) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a\r') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\ra") when set to "a" (XML node with null namespace) Failed to execute 'contains' on 'DOMTokenList': The token provided ('\ra') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a ") when set to "a" (XML node with null namespace) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a ') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains(" a") when set to "a" (XML node with null namespace) Failed to execute 'contains' on 'DOMTokenList': The token provided (' a') contains HTML space characters, which are not valid in tokens.
+PASS classList.contains("aa") when set to "aa AA" (XML node with null namespace) 
+PASS classList.contains("AA") when set to "aa AA" (XML node with null namespace) 
+PASS classList.contains("aA") when set to "aa AA" (XML node with null namespace) 
+PASS classList.contains("a") when set to "a a a" (XML node with null namespace) 
+PASS classList.contains("aa") when set to "a a a" (XML node with null namespace) 
+PASS classList.contains("b") when set to "a a a" (XML node with null namespace) 
+PASS classList.contains("a") when set to "a b c" (XML node with null namespace) 
+PASS classList.contains("b") when set to "a b c" (XML node with null namespace) 
+PASS classList.contains(null) when set to "null undefined" (XML node with null namespace) 
+PASS classList.contains(undefined) when set to "null undefined" (XML node with null namespace) 
+PASS classList.contains("a") when set to "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XML node with null namespace) 
+PASS classList.contains("b") when set to "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XML node with null namespace) 
+PASS classList.add("") with attribute value null (XML node with null namespace) 
+PASS classList.add("a", "") with attribute value null (XML node with null namespace) 
+PASS classList.add(" ") with attribute value null (XML node with null namespace) 
+PASS classList.add("\ta") with attribute value null (XML node with null namespace) 
+PASS classList.add("a\t") with attribute value null (XML node with null namespace) 
+PASS classList.add("\na") with attribute value null (XML node with null namespace) 
+PASS classList.add("a\n") with attribute value null (XML node with null namespace) 
+PASS classList.add("\fa") with attribute value null (XML node with null namespace) 
+PASS classList.add("a\f") with attribute value null (XML node with null namespace) 
+PASS classList.add("\ra") with attribute value null (XML node with null namespace) 
+PASS classList.add("a\r") with attribute value null (XML node with null namespace) 
+PASS classList.add(" a") with attribute value null (XML node with null namespace) 
+PASS classList.add("a ") with attribute value null (XML node with null namespace) 
+PASS classList.add("a", " ") with attribute value null (XML node with null namespace) 
+PASS classList.add("a", "aa ") with attribute value null (XML node with null namespace) 
+PASS classList.add("a") with attribute value "a" (XML node with null namespace) 
+PASS classList.add("AA") with attribute value "aa" (XML node with null namespace) 
+PASS classList.add("a") with attribute value "a b c" (XML node with null namespace) 
+FAIL classList.add("a") with attribute value "a a a  b" (XML node with null namespace) assert_equals: wrong class after modification expected "a b" but got "a a a  b"
+PASS classList.add("a") with attribute value null (XML node with null namespace) 
+PASS classList.add("a") with attribute value "" (XML node with null namespace) 
+FAIL classList.add("a") with attribute value " " (XML node with null namespace) assert_equals: wrong class after modification expected "a" but got " a"
+FAIL classList.add("a") with attribute value "   \f" (XML node with null namespace) assert_equals: wrong class after modification expected "a" but got "   \fa"
+PASS classList.add("b") with attribute value "a" (XML node with null namespace) 
+PASS classList.add("d") with attribute value "a b c" (XML node with null namespace) 
+PASS classList.add("d") with attribute value "a b c " (XML node with null namespace) 
+FAIL classList.add("c") with attribute value "   a  a b" (XML node with null namespace) assert_equals: wrong class after modification expected "a b c" but got "   a  a b c"
+FAIL classList.add("a") with attribute value "   a  a b" (XML node with null namespace) assert_equals: wrong class after modification expected "a b" but got "   a  a b"
+FAIL classList.add("c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XML node with null namespace) assert_equals: wrong class after modification expected "a b c" but got "\t\n\f\r a\t\n\f\r b\t\n\f\r c"
+PASS classList.add("d", "e") with attribute value "a b c " (XML node with null namespace) 
+FAIL classList.add("a", "a") with attribute value "a b c " (XML node with null namespace) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+PASS classList.add("d", "d") with attribute value "a b c " (XML node with null namespace) 
+FAIL classList.add() with attribute value "a b c a " (XML node with null namespace) assert_equals: wrong class after modification expected "a b c" but got "a b c a "
+PASS classList.add("a", "b") with attribute value null (XML node with null namespace) 
+PASS classList.add("a", "b") with attribute value "" (XML node with null namespace) 
+PASS classList.add(null) with attribute value null (XML node with null namespace) 
+PASS classList.add(undefined) with attribute value null (XML node with null namespace) 
+PASS classList.remove("") with attribute value null (XML node with null namespace) 
+PASS classList.remove(" ") with attribute value null (XML node with null namespace) 
+PASS classList.remove("\ta") with attribute value "\ta" (XML node with null namespace) 
+PASS classList.remove("a\t") with attribute value "a\t" (XML node with null namespace) 
+PASS classList.remove("\na") with attribute value "\na" (XML node with null namespace) 
+PASS classList.remove("a\n") with attribute value "a\n" (XML node with null namespace) 
+PASS classList.remove("\fa") with attribute value "\fa" (XML node with null namespace) 
+PASS classList.remove("a\f") with attribute value "a\f" (XML node with null namespace) 
+PASS classList.remove("\ra") with attribute value "\ra" (XML node with null namespace) 
+PASS classList.remove("a\r") with attribute value "a\r" (XML node with null namespace) 
+PASS classList.remove(" a") with attribute value " a" (XML node with null namespace) 
+PASS classList.remove("a ") with attribute value "a " (XML node with null namespace) 
+PASS classList.remove("aa ") with attribute value "aa " (XML node with null namespace) 
+PASS classList.remove("a") with attribute value null (XML node with null namespace) 
+PASS classList.remove("a") with attribute value "" (XML node with null namespace) 
+FAIL classList.remove("d") with attribute value "a b  c" (XML node with null namespace) assert_equals: wrong class after modification expected "a b c" but got "a b  c"
+FAIL classList.remove("A") with attribute value "a b  c" (XML node with null namespace) assert_equals: wrong class after modification expected "a b c" but got "a b  c"
+PASS classList.remove("a") with attribute value " a a a " (XML node with null namespace) 
+PASS classList.remove("a") with attribute value "a  b" (XML node with null namespace) 
+PASS classList.remove("a") with attribute value "a  b  " (XML node with null namespace) 
+PASS classList.remove("a") with attribute value "a a b" (XML node with null namespace) 
+PASS classList.remove("aa") with attribute value "aa aa bb" (XML node with null namespace) 
+PASS classList.remove("a") with attribute value "a a b a a c a a" (XML node with null namespace) 
+PASS classList.remove("b") with attribute value "a  b  c" (XML node with null namespace) 
+PASS classList.remove("bbb") with attribute value "aaa  bbb  ccc" (XML node with null namespace) 
+PASS classList.remove("b") with attribute value " a  b  c " (XML node with null namespace) 
+PASS classList.remove("b") with attribute value "a b b b c" (XML node with null namespace) 
+PASS classList.remove("c") with attribute value "a  b  c" (XML node with null namespace) 
+PASS classList.remove("c") with attribute value " a  b  c " (XML node with null namespace) 
+PASS classList.remove("c") with attribute value "a b c c c" (XML node with null namespace) 
+PASS classList.remove("a") with attribute value "a b a c a d a" (XML node with null namespace) 
+FAIL classList.remove("AA") with attribute value "AA BB aa CC AA dd aa" (XML node with null namespace) assert_equals: wrong class after modification expected "BB aa CC dd" but got "BB aa CC dd aa"
+PASS classList.remove("a") with attribute value "\ra\na\ta\f" (XML node with null namespace) 
+PASS classList.remove("a") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XML node with null namespace) 
+FAIL classList.remove("d", "e") with attribute value "a b c " (XML node with null namespace) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+PASS classList.remove("a", "b") with attribute value "a b c " (XML node with null namespace) 
+PASS classList.remove("a", "c") with attribute value "a b c " (XML node with null namespace) 
+PASS classList.remove("a", "a") with attribute value "a b c " (XML node with null namespace) 
+FAIL classList.remove("d", "d") with attribute value "a b c " (XML node with null namespace) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+FAIL classList.remove() with attribute value "a b c " (XML node with null namespace) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+PASS classList.remove("a", "b") with attribute value null (XML node with null namespace) 
+PASS classList.remove("a", "b") with attribute value "" (XML node with null namespace) 
+FAIL classList.remove() with attribute value "a a" (XML node with null namespace) assert_equals: wrong class after modification expected "a" but got "a a"
+PASS classList.remove(null) with attribute value "null" (XML node with null namespace) 
+PASS classList.remove(undefined) with attribute value "undefined" (XML node with null namespace) 
+PASS classList.toggle("") with attribute value null (XML node with null namespace) 
+PASS classList.toggle("aa ") with attribute value null (XML node with null namespace) 
+PASS classList.toggle("a") with attribute value null (XML node with null namespace) 
+PASS classList.toggle("a") with attribute value "" (XML node with null namespace) 
+FAIL classList.toggle("a") with attribute value " " (XML node with null namespace) assert_equals: wrong class after modification expected "a" but got " a"
+FAIL classList.toggle("a") with attribute value "   \f" (XML node with null namespace) assert_equals: wrong class after modification expected "a" but got "   \fa"
+PASS classList.toggle("b") with attribute value "a" (XML node with null namespace) 
+PASS classList.toggle("A") with attribute value "a" (XML node with null namespace) 
+PASS classList.toggle("d") with attribute value "a b c" (XML node with null namespace) 
+FAIL classList.toggle("d") with attribute value "   a  a b" (XML node with null namespace) assert_equals: wrong class after modification expected "a b d" but got "   a  a b d"
+PASS classList.toggle("a") with attribute value "a" (XML node with null namespace) 
+PASS classList.toggle("a") with attribute value " a a a " (XML node with null namespace) 
+FAIL classList.toggle("a") with attribute value " A A A " (XML node with null namespace) assert_equals: wrong class after modification expected "A a" but got " A A A a"
+PASS classList.toggle("b") with attribute value " a b c " (XML node with null namespace) 
+PASS classList.toggle("b") with attribute value " a b c b b" (XML node with null namespace) 
+PASS classList.toggle("c") with attribute value " a b  c  " (XML node with null namespace) 
+PASS classList.toggle("a") with attribute value " a b c " (XML node with null namespace) 
+FAIL classList.toggle("b") with attribute value "   a  a b" (XML node with null namespace) assert_equals: wrong class after modification expected "a" but got "a a"
+PASS classList.toggle("a") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XML node with null namespace) 
+FAIL classList.toggle("c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XML node with null namespace) assert_equals: wrong class after modification expected "a b c" but got "\t\n\f\r a\t\n\f\r b\t\n\f\r c"
+PASS classList.toggle(null) with attribute value "null" (XML node with null namespace) 
+PASS classList.toggle(null) with attribute value "" (XML node with null namespace) 
+PASS classList.toggle(undefined) with attribute value "undefined" (XML node with null namespace) 
+PASS classList.toggle(undefined) with attribute value "" (XML node with null namespace) 
+PASS classList.toggle("a", true) with attribute value "" (XML node with null namespace) 
+PASS classList.toggle("a", true) with attribute value "a" (XML node with null namespace) 
+PASS classList.toggle("b", true) with attribute value "a" (XML node with null namespace) 
+PASS classList.toggle("b", true) with attribute value "a b" (XML node with null namespace) 
+PASS classList.toggle("a", false) with attribute value "" (XML node with null namespace) 
+PASS classList.toggle("a", false) with attribute value "a" (XML node with null namespace) 
+PASS classList.toggle("b", false) with attribute value "a" (XML node with null namespace) 
+PASS classList.toggle("b", false) with attribute value "a b" (XML node with null namespace) 
+FAIL classList.replace("", "a") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace("", " ") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace(" ", "a") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\ta", "b") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\t", "b") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\na", "b") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\n", "b") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\fa", "b") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\f", "b") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\ra", "b") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\r", "b") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace(" a", "b") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a ", "b") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a", "") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace(" ", "") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace("a", " ") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\ta") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\t") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\na") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\n") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\fa") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\f") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\ra") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\r") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", " a") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a ") with attribute value null (XML node with null namespace) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a", "a") with attribute value "a" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value "a" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("A", "b") with attribute value "a" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "A") with attribute value "a b" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("d", "e") with attribute value "a b c" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "a") with attribute value "a a a  b" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("c", "d") with attribute value "a a a  b" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value null (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value "" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value " " (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value " a  \f" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "d") with attribute value "a b c" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("c", "a") with attribute value "a b c" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("c", "a") with attribute value "c b a" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "c") with attribute value "a b a" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "c") with attribute value "a b a" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "c") with attribute value "   a  a b" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "c") with attribute value "   a  a b" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace(null, "b") with attribute value "a null" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", null) with attribute value "a b" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace(undefined, "b") with attribute value "a undefined" (XML node with null namespace) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", undefined) with attribute value "a b" (XML node with null namespace) Cannot read property 'apply' of undefined
+PASS Assigning to classList (foo node) 
+PASS .supports() must throw TypeError (foo node) 
+PASS classList.length when removed (foo node) 
+PASS classList.length when set to "" (foo node) 
+PASS classList.length when set to "   \t  \f" (foo node) 
+PASS classList.length when set to "a" (foo node) 
+PASS classList.length when set to "a A" (foo node) 
+PASS classList.length when set to "\r\na\t\f" (foo node) 
+FAIL classList.length when set to "a a" (foo node) assert_equals: expected 1 but got 2
+FAIL classList.length when set to "a a a a a a" (foo node) assert_equals: expected 1 but got 6
+FAIL classList.length when set to "a a b b" (foo node) assert_equals: expected 2 but got 4
+PASS classList.length when set to "a A B b" (foo node) 
+FAIL classList.length when set to "a b c c b a a b c c" (foo node) assert_equals: expected 3 but got 10
+FAIL classList.length when set to "   a  a b" (foo node) assert_equals: expected 2 but got 3
+PASS classList.length when set to "a\tb\nc\fd\re f" (foo node) 
+PASS classList.toString() when removed (foo node) 
+PASS classList.toString() when set to "foo" (foo node) 
+PASS classList.toString() when set to "   a  a b" (foo node) 
+PASS classList.item() when set to null (foo node) 
+PASS classList.item() when set to "a" (foo node) 
+FAIL classList.item() when set to "aa AA aa" (foo node) assert_equals: classList.item(2) expected (object) null but got (string) "aa"
+PASS classList.item() when set to "a b" (foo node) 
+FAIL classList.item() when set to "   a  a b" (foo node) assert_equals: classList.item(1) expected "b" but got "a"
+PASS classList.item() when set to "\t\n\f\r a\t\n\f\r b\t\n\f\r " (foo node) 
+PASS classList.contains("a") when set to null (foo node) 
+FAIL classList.contains("") when set to null (foo node) Failed to execute 'contains' on 'DOMTokenList': The token provided must not be empty.
+FAIL classList.contains("  ") when set to null (foo node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('  ') contains HTML space characters, which are not valid in tokens.
+PASS classList.contains("a") when set to "" (foo node) 
+PASS classList.contains("a") when set to "a" (foo node) 
+PASS classList.contains("aa") when set to "a" (foo node) 
+PASS classList.contains("b") when set to "a" (foo node) 
+PASS classList.contains("A") when set to "a" (foo node) 
+PASS classList.contains("a.") when set to "a" (foo node) 
+PASS classList.contains("a)") when set to "a" (foo node) 
+PASS classList.contains(undefined) when set to "a" (foo node) 
+PASS classList.contains("a'") when set to "a" (foo node) 
+PASS classList.contains("a\"") when set to "a" (foo node) 
+PASS classList.contains("a$") when set to "a" (foo node) 
+PASS classList.contains("a~") when set to "a" (foo node) 
+PASS classList.contains("a?") when set to "a" (foo node) 
+PASS classList.contains("a\\") when set to "a" (foo node) 
+FAIL classList.contains("a\t") when set to "a" (foo node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a	') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\ta") when set to "a" (foo node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('	a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a\n") when set to "a" (foo node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a
+') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\na") when set to "a" (foo node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('
+a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a\f") when set to "a" (foo node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\fa") when set to "a" (foo node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a\r") when set to "a" (foo node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a\r') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("\ra") when set to "a" (foo node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('\ra') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains("a ") when set to "a" (foo node) Failed to execute 'contains' on 'DOMTokenList': The token provided ('a ') contains HTML space characters, which are not valid in tokens.
+FAIL classList.contains(" a") when set to "a" (foo node) Failed to execute 'contains' on 'DOMTokenList': The token provided (' a') contains HTML space characters, which are not valid in tokens.
+PASS classList.contains("aa") when set to "aa AA" (foo node) 
+PASS classList.contains("AA") when set to "aa AA" (foo node) 
+PASS classList.contains("aA") when set to "aa AA" (foo node) 
+PASS classList.contains("a") when set to "a a a" (foo node) 
+PASS classList.contains("aa") when set to "a a a" (foo node) 
+PASS classList.contains("b") when set to "a a a" (foo node) 
+PASS classList.contains("a") when set to "a b c" (foo node) 
+PASS classList.contains("b") when set to "a b c" (foo node) 
+PASS classList.contains(null) when set to "null undefined" (foo node) 
+PASS classList.contains(undefined) when set to "null undefined" (foo node) 
+PASS classList.contains("a") when set to "\t\n\f\r a\t\n\f\r b\t\n\f\r " (foo node) 
+PASS classList.contains("b") when set to "\t\n\f\r a\t\n\f\r b\t\n\f\r " (foo node) 
+PASS classList.add("") with attribute value null (foo node) 
+PASS classList.add("a", "") with attribute value null (foo node) 
+PASS classList.add(" ") with attribute value null (foo node) 
+PASS classList.add("\ta") with attribute value null (foo node) 
+PASS classList.add("a\t") with attribute value null (foo node) 
+PASS classList.add("\na") with attribute value null (foo node) 
+PASS classList.add("a\n") with attribute value null (foo node) 
+PASS classList.add("\fa") with attribute value null (foo node) 
+PASS classList.add("a\f") with attribute value null (foo node) 
+PASS classList.add("\ra") with attribute value null (foo node) 
+PASS classList.add("a\r") with attribute value null (foo node) 
+PASS classList.add(" a") with attribute value null (foo node) 
+PASS classList.add("a ") with attribute value null (foo node) 
+PASS classList.add("a", " ") with attribute value null (foo node) 
+PASS classList.add("a", "aa ") with attribute value null (foo node) 
+PASS classList.add("a") with attribute value "a" (foo node) 
+PASS classList.add("AA") with attribute value "aa" (foo node) 
+PASS classList.add("a") with attribute value "a b c" (foo node) 
+FAIL classList.add("a") with attribute value "a a a  b" (foo node) assert_equals: wrong class after modification expected "a b" but got "a a a  b"
+PASS classList.add("a") with attribute value null (foo node) 
+PASS classList.add("a") with attribute value "" (foo node) 
+FAIL classList.add("a") with attribute value " " (foo node) assert_equals: wrong class after modification expected "a" but got " a"
+FAIL classList.add("a") with attribute value "   \f" (foo node) assert_equals: wrong class after modification expected "a" but got "   \fa"
+PASS classList.add("b") with attribute value "a" (foo node) 
+PASS classList.add("d") with attribute value "a b c" (foo node) 
+PASS classList.add("d") with attribute value "a b c " (foo node) 
+FAIL classList.add("c") with attribute value "   a  a b" (foo node) assert_equals: wrong class after modification expected "a b c" but got "   a  a b c"
+FAIL classList.add("a") with attribute value "   a  a b" (foo node) assert_equals: wrong class after modification expected "a b" but got "   a  a b"
+FAIL classList.add("c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (foo node) assert_equals: wrong class after modification expected "a b c" but got "\t\n\f\r a\t\n\f\r b\t\n\f\r c"
+PASS classList.add("d", "e") with attribute value "a b c " (foo node) 
+FAIL classList.add("a", "a") with attribute value "a b c " (foo node) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+PASS classList.add("d", "d") with attribute value "a b c " (foo node) 
+FAIL classList.add() with attribute value "a b c a " (foo node) assert_equals: wrong class after modification expected "a b c" but got "a b c a "
+PASS classList.add("a", "b") with attribute value null (foo node) 
+PASS classList.add("a", "b") with attribute value "" (foo node) 
+PASS classList.add(null) with attribute value null (foo node) 
+PASS classList.add(undefined) with attribute value null (foo node) 
+PASS classList.remove("") with attribute value null (foo node) 
+PASS classList.remove(" ") with attribute value null (foo node) 
+PASS classList.remove("\ta") with attribute value "\ta" (foo node) 
+PASS classList.remove("a\t") with attribute value "a\t" (foo node) 
+PASS classList.remove("\na") with attribute value "\na" (foo node) 
+PASS classList.remove("a\n") with attribute value "a\n" (foo node) 
+PASS classList.remove("\fa") with attribute value "\fa" (foo node) 
+PASS classList.remove("a\f") with attribute value "a\f" (foo node) 
+PASS classList.remove("\ra") with attribute value "\ra" (foo node) 
+PASS classList.remove("a\r") with attribute value "a\r" (foo node) 
+PASS classList.remove(" a") with attribute value " a" (foo node) 
+PASS classList.remove("a ") with attribute value "a " (foo node) 
+PASS classList.remove("aa ") with attribute value "aa " (foo node) 
+PASS classList.remove("a") with attribute value null (foo node) 
+PASS classList.remove("a") with attribute value "" (foo node) 
+FAIL classList.remove("d") with attribute value "a b  c" (foo node) assert_equals: wrong class after modification expected "a b c" but got "a b  c"
+FAIL classList.remove("A") with attribute value "a b  c" (foo node) assert_equals: wrong class after modification expected "a b c" but got "a b  c"
+PASS classList.remove("a") with attribute value " a a a " (foo node) 
+PASS classList.remove("a") with attribute value "a  b" (foo node) 
+PASS classList.remove("a") with attribute value "a  b  " (foo node) 
+PASS classList.remove("a") with attribute value "a a b" (foo node) 
+PASS classList.remove("aa") with attribute value "aa aa bb" (foo node) 
+PASS classList.remove("a") with attribute value "a a b a a c a a" (foo node) 
+PASS classList.remove("b") with attribute value "a  b  c" (foo node) 
+PASS classList.remove("bbb") with attribute value "aaa  bbb  ccc" (foo node) 
+PASS classList.remove("b") with attribute value " a  b  c " (foo node) 
+PASS classList.remove("b") with attribute value "a b b b c" (foo node) 
+PASS classList.remove("c") with attribute value "a  b  c" (foo node) 
+PASS classList.remove("c") with attribute value " a  b  c " (foo node) 
+PASS classList.remove("c") with attribute value "a b c c c" (foo node) 
+PASS classList.remove("a") with attribute value "a b a c a d a" (foo node) 
+FAIL classList.remove("AA") with attribute value "AA BB aa CC AA dd aa" (foo node) assert_equals: wrong class after modification expected "BB aa CC dd" but got "BB aa CC dd aa"
+PASS classList.remove("a") with attribute value "\ra\na\ta\f" (foo node) 
+PASS classList.remove("a") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (foo node) 
+FAIL classList.remove("d", "e") with attribute value "a b c " (foo node) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+PASS classList.remove("a", "b") with attribute value "a b c " (foo node) 
+PASS classList.remove("a", "c") with attribute value "a b c " (foo node) 
+PASS classList.remove("a", "a") with attribute value "a b c " (foo node) 
+FAIL classList.remove("d", "d") with attribute value "a b c " (foo node) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+FAIL classList.remove() with attribute value "a b c " (foo node) assert_equals: wrong class after modification expected "a b c" but got "a b c "
+PASS classList.remove("a", "b") with attribute value null (foo node) 
+PASS classList.remove("a", "b") with attribute value "" (foo node) 
+FAIL classList.remove() with attribute value "a a" (foo node) assert_equals: wrong class after modification expected "a" but got "a a"
+PASS classList.remove(null) with attribute value "null" (foo node) 
+PASS classList.remove(undefined) with attribute value "undefined" (foo node) 
+PASS classList.toggle("") with attribute value null (foo node) 
+PASS classList.toggle("aa ") with attribute value null (foo node) 
+PASS classList.toggle("a") with attribute value null (foo node) 
+PASS classList.toggle("a") with attribute value "" (foo node) 
+FAIL classList.toggle("a") with attribute value " " (foo node) assert_equals: wrong class after modification expected "a" but got " a"
+FAIL classList.toggle("a") with attribute value "   \f" (foo node) assert_equals: wrong class after modification expected "a" but got "   \fa"
+PASS classList.toggle("b") with attribute value "a" (foo node) 
+PASS classList.toggle("A") with attribute value "a" (foo node) 
+PASS classList.toggle("d") with attribute value "a b c" (foo node) 
+FAIL classList.toggle("d") with attribute value "   a  a b" (foo node) assert_equals: wrong class after modification expected "a b d" but got "   a  a b d"
+PASS classList.toggle("a") with attribute value "a" (foo node) 
+PASS classList.toggle("a") with attribute value " a a a " (foo node) 
+FAIL classList.toggle("a") with attribute value " A A A " (foo node) assert_equals: wrong class after modification expected "A a" but got " A A A a"
+PASS classList.toggle("b") with attribute value " a b c " (foo node) 
+PASS classList.toggle("b") with attribute value " a b c b b" (foo node) 
+PASS classList.toggle("c") with attribute value " a b  c  " (foo node) 
+PASS classList.toggle("a") with attribute value " a b c " (foo node) 
+FAIL classList.toggle("b") with attribute value "   a  a b" (foo node) assert_equals: wrong class after modification expected "a" but got "a a"
+PASS classList.toggle("a") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (foo node) 
+FAIL classList.toggle("c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (foo node) assert_equals: wrong class after modification expected "a b c" but got "\t\n\f\r a\t\n\f\r b\t\n\f\r c"
+PASS classList.toggle(null) with attribute value "null" (foo node) 
+PASS classList.toggle(null) with attribute value "" (foo node) 
+PASS classList.toggle(undefined) with attribute value "undefined" (foo node) 
+PASS classList.toggle(undefined) with attribute value "" (foo node) 
+PASS classList.toggle("a", true) with attribute value "" (foo node) 
+PASS classList.toggle("a", true) with attribute value "a" (foo node) 
+PASS classList.toggle("b", true) with attribute value "a" (foo node) 
+PASS classList.toggle("b", true) with attribute value "a b" (foo node) 
+PASS classList.toggle("a", false) with attribute value "" (foo node) 
+PASS classList.toggle("a", false) with attribute value "a" (foo node) 
+PASS classList.toggle("b", false) with attribute value "a" (foo node) 
+PASS classList.toggle("b", false) with attribute value "a b" (foo node) 
+FAIL classList.replace("", "a") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace("", " ") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace(" ", "a") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\ta", "b") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\t", "b") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\na", "b") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\n", "b") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\fa", "b") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\f", "b") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("\ra", "b") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a\r", "b") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace(" a", "b") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a ", "b") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a", "") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace(" ", "") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException SyntaxError: property "code" is equal to undefined, expected 12
+FAIL classList.replace("a", " ") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\ta") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\t") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\na") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\n") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\fa") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\f") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "\ra") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a\r") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", " a") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("b", "a ") with attribute value null (foo node) assert_throws: function "function () {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      }" threw object "TypeError: Cannot read property 'apply' of undefined" that is not a DOMException InvalidCharacterError: property "code" is equal to undefined, expected 5
+FAIL classList.replace("a", "a") with attribute value "a" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value "a" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("A", "b") with attribute value "a" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "A") with attribute value "a b" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("d", "e") with attribute value "a b c" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "a") with attribute value "a a a  b" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("c", "d") with attribute value "a a a  b" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value null (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value "" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value " " (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "b") with attribute value " a  \f" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "d") with attribute value "a b c" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("c", "a") with attribute value "a b c" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("c", "a") with attribute value "c b a" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "c") with attribute value "a b a" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "c") with attribute value "a b a" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "c") with attribute value "   a  a b" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "c") with attribute value "   a  a b" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", "c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("b", "c") with attribute value "\t\n\f\r a\t\n\f\r b\t\n\f\r " (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace(null, "b") with attribute value "a null" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", null) with attribute value "a b" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace(undefined, "b") with attribute value "a undefined" (foo node) Cannot read property 'apply' of undefined
+FAIL classList.replace("a", undefined) with attribute value "a b" (foo node) Cannot read property 'apply' of undefined
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/dom/nodes/Element-classlist.html b/third_party/WebKit/LayoutTests/external/wpt/dom/nodes/Element-classlist.html
index fd82b00a..ece938e 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/dom/nodes/Element-classlist.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/dom/nodes/Element-classlist.html
@@ -1,409 +1,462 @@
 <!doctype html>
-<html>
-  <head class="test test">
-    <title class=" ">Element.classList in case-sensitive documents</title>
-    <link rel="help" href="https://dom.spec.whatwg.org/#concept-class">
-    <script type="text/javascript" src="/resources/testharness.js"></script>
-    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
-    <style type="text/css">
-.foo { font-style: italic; }
-    </style>
-    <script type="text/javascript">
-var elem = document.getElementsByTagName('title')[0], secondelem = document.getElementsByTagName('head')[0];
-test(function () {
-  assert_equals( typeof elem.classList, 'object', 'critical test; ignore any results after this' );
-}, 'Element.classList must exist as an object');
-test(function () {
-  assert_equals( typeof document.documentElement.classList, 'object' );
-}, 'Element.classList must exist as an object even if the element has no class attribute');
-test(function () {
-  assert_true( !!window.DOMTokenList );
-}, 'DOMTokenList should be exposed for prototyping');
-test(function () {
-  DOMTokenList.prototype.customProperty = true;
-  assert_true( elem.classList.customProperty );
-}, 'prototyping DOMTokenList should work');
-test(function () {
-  assert_true( elem.classList instanceof window.DOMTokenList );
-  assert_equals( elem.classList.constructor, window.DOMTokenList );
-}, 'Element.classList must implement DOMTokenList');
-test(function () {
-  assert_not_equals( getComputedStyle(elem,null).fontStyle, 'italic', 'critical test; required by the testsuite' );
-}, 'CSS .foo selectors must not match elements without any class');
-test(function () {
-  assert_equals( secondelem.classList.length, 1, 'duplicates in initial string should be removed per https://dom.spec.whatwg.org/#concept-class' );
-  assert_equals( secondelem.classList.item(0), 'test' );
-  assert_true( secondelem.classList.contains('test') );
-}, 'classList must be correct for an element that has classes');
-test(function () {
-  assert_equals( elem.classList.length, 0 );
-}, 'classList.length must be 0 for an element that has no classes');
-test(function () {
-  assert_false( elem.classList.contains('foo') );
-}, 'classList must not contain an undefined class');
-test(function () {
-  assert_equals( elem.classList.item(0), null );
-}, 'classList.item() must return null for out-of-range index');
-test(function () {
-  assert_equals( elem.classList.item(-1), null );
-}, 'classList.item() must return null for negative index');
-test(function () {
-  /* the normative part of the spec states that:
-  "unless tokens is empty, in which case there are no supported property indices"
-  ...
-  "The term[...] supported property indices [is] used as defined in the WebIDL specification."
-  WebIDL creates actual OwnProperties and then [] just acts as a normal property lookup */
-  assert_equals( elem.classList[0], undefined );
-}, 'classList[index] must be undefined for out-of-range index');
-test(function () {
-  assert_equals( elem.classList[-1], undefined );
-}, 'classList[index] must be undefined for negative index');
-test(function () {
-  assert_equals( elem.className, ' ' );
-}, 'className should contain initial markup whitespace');
-test(function () {
-  assert_equals( elem.classList + '', ' ', 'implicit' );
-  assert_equals( elem.classList.toString(), ' ', 'explicit' );
-}, 'classList should contain initial markup whitespace');
-test(function () {
-  assert_false( elem.classList.contains('') );
-}, '.contains(empty_string) must return false');
-test(function () {
-  assert_throws( 'SYNTAX_ERR', function () { elem.classList.add(''); } );
-}, '.add(empty_string) must throw a SYNTAX_ERR');
-test(function () {
-  assert_throws( 'SYNTAX_ERR', function () { elem.classList.remove(''); } );
-}, '.remove(empty_string) must throw a SYNTAX_ERR');
-test(function () {
-  assert_throws( 'SYNTAX_ERR', function () { elem.classList.toggle(''); } );
-}, '.toggle(empty_string) must throw a SYNTAX_ERR');
-test(function () {
-  assert_throws( 'SYNTAX_ERR', function () { elem.classList.replace('', 'foo'); } );
-  assert_throws( 'SYNTAX_ERR', function () { elem.classList.replace('foo', ''); } );
-  assert_throws( 'SYNTAX_ERR', function () { elem.classList.replace('', 'foo bar'); } );
-  assert_throws( 'SYNTAX_ERR', function () { elem.classList.replace('foo bar', ''); } );
-  assert_throws( 'SYNTAX_ERR', function () { elem.classList.replace('', ''); } );
-}, '.replace with empty_string must throw a SYNTAX_ERR');
-test(function () {
-  assert_false( elem.classList.contains('a b') );
-}, '.contains(string_with_spaces) must return false');
-test(function () {
-  assert_throws( 'INVALID_CHARACTER_ERR', function () { elem.classList.add('a b'); } );
-}, '.add(string_with_spaces) must throw an INVALID_CHARACTER_ERR');
-test(function () {
-  assert_throws( 'INVALID_CHARACTER_ERR', function () { elem.classList.remove('a b'); } );
-}, '.remove(string_with_spaces) must throw an INVALID_CHARACTER_ERR');
-test(function () {
-  assert_throws( 'INVALID_CHARACTER_ERR', function () { elem.classList.toggle('a b'); } );
-}, '.toggle(string_with_spaces) must throw an INVALID_CHARACTER_ERR');
-test(function () {
-  assert_throws( 'INVALID_CHARACTER_ERR', function () { elem.classList.replace('z', 'a b'); } );
-  assert_throws( 'INVALID_CHARACTER_ERR', function () { elem.classList.replace('a b', 'z'); } );
-  assert_throws( 'INVALID_CHARACTER_ERR', function () { elem.classList.replace('a b', 'b c'); } );
-}, '.replace with string_with_spaces must throw a INVALID_CHARACTER_ERR');
-test(function () {
-  var foo = document.createElement('div');
-  foo.className = 'token1 token2 token3'
-  foo.classList.replace('token1', 'token3');
-  assert_equals( foo.classList.length, 2 );
-  assert_false( foo.classList.contains('token1') );
-  assert_true( foo.classList.contains('token2') );
-  assert_true( foo.classList.contains('token3') );
-  assert_equals( foo.classList.item(0), 'token3' );
-  assert_equals( foo.classList.item(1), 'token2' );
-}, '.replace with an already existing token')
-elem.className = 'foo';
-test(function () {
-  assert_equals( getComputedStyle(elem,null).fontStyle, 'italic', 'critical test; required by the testsuite' );
-}, 'computed style must update when setting .className');
-test(function () {
-  assert_true( elem.classList.contains('foo') );
-}, 'classList.contains must update when .className is changed');
-test(function () {
-  assert_false( elem.classList.contains('FOO') );
-}, 'classList.contains must be case sensitive');
-test(function () {
-  assert_false( elem.classList.contains('foo.') );
-  assert_false( elem.classList.contains('foo)') );
-  assert_false( elem.classList.contains('foo\'') );
-  assert_false( elem.classList.contains('foo$') );
-  assert_false( elem.classList.contains('foo~') );
-  assert_false( elem.classList.contains('foo?') );
-  assert_false( elem.classList.contains('foo\\') );
-}, 'classList.contains must not match when punctuation characters are added');
-test(function () {
-  elem.classList.add('FOO');
-  assert_equals( getComputedStyle(elem,null).fontStyle, 'italic' );
-}, 'classList.add must not cause the CSS selector to stop matching');
-test(function () {
-  assert_true( elem.classList.contains('foo') );
-}, 'classList.add must not remove existing classes');
-test(function () {
-  assert_true( elem.classList.contains('FOO') );
-}, 'classList.contains case sensitivity must match a case-specific string');
-test(function () {
-  assert_equals( elem.classList.length, 2 );
-}, 'classList.length must correctly reflect the number of tokens');
-test(function () {
-  assert_equals( elem.classList.item(0), 'foo' );
-}, 'classList.item(0) must return the first token');
-test(function () {
-  assert_equals( elem.classList.item(1), 'FOO' );
-}, 'classList.item must return case-sensitive strings and preserve token order');
-test(function () {
-  assert_equals( elem.classList[0], 'foo' );
-}, 'classList[0] must return the first token');
-test(function () {
-  assert_equals( elem.classList[1], 'FOO' );
-}, 'classList[index] must return case-sensitive strings and preserve token order');
-test(function () {
-  /* the normative part of the spec states that:
-  "The object's supported property indices are the numbers in the range zero to the number of tokens in tokens minus one"
-  ...
-  "The term[...] supported property indices [is] used as defined in the WebIDL specification."
-  WebIDL creates actual OwnProperties and then [] just acts as a normal property lookup */
-  assert_equals( elem.classList[2], undefined );
-}, 'classList[index] must still be undefined for out-of-range index when earlier indexes exist');
-test(function () {
-  assert_equals( elem.className, 'foo FOO' );
-}, 'className must update correctly when items have been added through classList');
-test(function () {
-  assert_equals( elem.classList + '', 'foo FOO', 'implicit' );
-  assert_equals( elem.classList.toString(), 'foo FOO', 'explicit' );
-}, 'classList must stringify correctly when items have been added');
-test(function () {
-  elem.classList.add('foo');
-  assert_equals( elem.classList.length, 2 );
-  assert_equals( elem.classList + '', 'foo FOO', 'implicit' );
-  assert_equals( elem.classList.toString(), 'foo FOO', 'explicit' );
-}, 'classList.add should not add a token if it already exists');
-test(function () {
-  elem.classList.remove('bar');
-  assert_equals( elem.classList.length, 2 );
-  assert_equals( elem.classList + '', 'foo FOO', 'implicit' );
-  assert_equals( elem.classList.toString(), 'foo FOO', 'explicit' );
-}, 'classList.remove removes arguments passed, if they are present.');
-test(function () {
-  elem.classList.remove('foo');
-  assert_equals( elem.classList.length, 1 );
-  assert_equals( elem.classList + '', 'FOO', 'implicit' );
-  assert_equals( elem.classList.toString(), 'FOO', 'explicit' );
-  assert_false( elem.classList.contains('foo') );
-  assert_true( elem.classList.contains('FOO') );
-}, 'classList.remove must remove existing tokens');
-test(function () {
-  assert_not_equals( getComputedStyle(elem,null).fontStyle, 'italic' );
-}, 'classList.remove must not break case-sensitive CSS selector matching');
-test(function () {
-  secondelem.classList.remove('test');
-  assert_equals( secondelem.classList.length, 0 );
-  assert_false( secondelem.classList.contains('test') );
-}, 'classList.remove must remove duplicated tokens');
-test(function () {
-  secondelem.className = 'token1 token2 token3';
-  secondelem.classList.remove('token2');
-  assert_equals( secondelem.classList + '', 'token1 token3', 'implicit' );
-  assert_equals( secondelem.classList.toString(), 'token1 token3', 'explicit' );
-}, 'classList.remove must collapse whitespace around removed tokens');
-test(function () {
-  secondelem.className = ' token1 token2  ';
-  secondelem.classList.remove('token2');
-  assert_equals( secondelem.classList + '', 'token1', 'implicit' );
-  assert_equals( secondelem.classList.toString(), 'token1', 'explicit' );
-}, 'classList.remove must collapse whitespaces around each token');
-test(function () {
-  secondelem.className = '  token1  token2  token1  ';
-  secondelem.classList.remove('token2');
-  assert_equals( secondelem.classList + '', 'token1', 'implicit' );
-  assert_equals( secondelem.classList.toString(), 'token1', 'explicit' );
-}, 'classList.remove must collapse whitespaces around each token and remove duplicates');
-test(function () {
-  secondelem.className = '  token1  token2  token1  ';
-  secondelem.classList.remove('token1');
-  assert_equals( secondelem.classList + '', 'token2', 'implicit' );
-  assert_equals( secondelem.classList.toString(), 'token2', 'explicit' );
-}, 'classList.remove must collapse whitespace when removing duplicate tokens');
-test(function () {
-  secondelem.className = '  token1  token1  ';
-  secondelem.classList.add('token1');
-  assert_equals( secondelem.classList + '', 'token1', 'implicit' );
-  assert_equals( secondelem.classList.toString(), 'token1', 'explicit' );
-}, 'classList.add must collapse whitespaces and remove duplicates when adding a token that already exists');
-test(function () {
-  assert_true(elem.classList.toggle('foo'));
-  assert_equals( elem.classList.length, 2 );
-  assert_true( elem.classList.contains('foo') );
-  assert_true( elem.classList.contains('FOO') );
-}, 'classList.toggle must toggle tokens case-sensitively when adding');
-test(function () {
-  assert_equals( getComputedStyle(elem,null).fontStyle, 'italic' );
-}, 'classList.toggle must not break case-sensitive CSS selector matching');
-test(function () {
-  assert_false(elem.classList.toggle('foo'));
-}, 'classList.toggle must be able to remove tokens');
-test(function () {
-  //will return true if the last test incorrectly removed both
-  assert_false(elem.classList.toggle('FOO'));
-  assert_false( elem.classList.contains('foo') );
-  assert_false( elem.classList.contains('FOO') );
-}, 'classList.toggle must be case-sensitive when removing tokens');
-test(function () {
-  secondelem.className = 'foo FOO'
-  secondelem.classList.replace('bar', 'baz');
-  assert_equals( secondelem.classList.length, 2 );
-  assert_equals( secondelem.classList + '', 'foo FOO', 'implicit' );
-  assert_equals( secondelem.classList.toString(), 'foo FOO', 'explicit' );
-}, 'classList.replace replaces arguments passed, if they are present.');
-test(function () {
-  secondelem.classList.replace('foo', 'bar');
-  assert_equals( secondelem.classList.length, 2 );
-  assert_equals( secondelem.classList + '', 'bar FOO', 'implicit' );
-  assert_equals( secondelem.classList.toString(), 'bar FOO', 'explicit' );
-  assert_false( secondelem.classList.contains('foo') );
-  assert_true( secondelem.classList.contains('bar') );
-  assert_true( secondelem.classList.contains('FOO') );
-}, 'classList.replace must replace existing tokens');
-test(function () {
-  assert_not_equals( getComputedStyle(secondelem,null).fontStyle, 'italic' );
-}, 'classList.replace must not break case-sensitive CSS selector matching');
-test(function () {
-  secondelem.className = 'token1 token2 token1'
-  secondelem.classList.replace('token1', 'token3');
-  assert_equals( secondelem.classList.length, 2 );
-  assert_false( secondelem.classList.contains('token1') );
-  assert_true( secondelem.classList.contains('token2') );
-  assert_true( secondelem.classList.contains('token3') );
-}, 'classList.replace must replace duplicated tokens');
-test(function () {
-  secondelem.className = 'token1  token2  token3';
-  secondelem.classList.replace('token2', 'token4');
-  assert_equals( secondelem.classList + '', 'token1 token4 token3', 'implicit' );
-  assert_equals( secondelem.classList.toString(), 'token1 token4 token3', 'explicit' );
-}, 'classList.replace must collapse whitespace around replaced tokens');
-test(function () {
-  secondelem.className = ' token1 token2  ';
-  secondelem.classList.replace('token2', 'token3');
-  assert_equals( secondelem.classList.length, 2 );
-  assert_equals( secondelem.classList + '', 'token1 token3', 'implicit' );
-  assert_equals( secondelem.classList.toString(), 'token1 token3', 'explicit' );
-}, 'classList.replace must collapse whitespaces around each token');
-test(function () {
-  secondelem.className = '  token1  token2  token1  ';
-  secondelem.classList.replace('token2', 'token3');
-  assert_equals( secondelem.classList + '', 'token1 token3', 'implicit' );
-  assert_equals( secondelem.classList.toString(), 'token1 token3', 'explicit' );
-}, 'classList.replace must collapse whitespaces around each token and remove duplicates');
-test(function () {
-  secondelem.className = '  token1  token2  token1  ';
-  secondelem.classList.replace('token1', 'token3');
-  assert_equals( secondelem.classList + '', 'token3 token2', 'implicit' );
-  assert_equals( secondelem.classList.toString(), 'token3 token2', 'explicit' );
-}, 'classList.replace must collapse whitespace when replacing duplicate tokens');
-test(function () {
-  assert_not_equals( getComputedStyle(elem,null).fontStyle, 'italic' );
-}, 'CSS class selectors must stop matching when all classes have been removed');
-test(function () {
-  assert_equals( elem.className, '' );
-}, 'className must be empty when all classes have been removed');
-test(function () {
-  assert_equals( elem.classList + '', '', 'implicit' );
-  assert_equals( elem.classList.toString(), '', 'explicit' );
-}, 'classList must stringify to an empty string when all classes have been removed');
-test(function () {
-  assert_equals( elem.classList.item(0), null );
-}, 'classList.item(0) must return null when all classes have been removed');
-test(function () {
-  /* the normative part of the spec states that:
-  "unless the length is zero, in which case there are no supported property indices"
-  ...
-  "The term[...] supported property indices [is] used as defined in the WebIDL specification."
-  WebIDL creates actual OwnProperties and then [] just acts as a normal property lookup */
-  assert_equals( elem.classList[0], undefined );
-}, 'classList[0] must be undefined when all classes have been removed');
-test(function () {
-  var foo = document.createElement('div');
-  foo.classList.add();
-  assert_true( foo.hasAttribute('class') );
-  assert_equals( foo.classList + '', '', 'implicit' );
-  assert_equals( foo.classList.toString(), '', 'explicit' );
-}, 'Invoking add or remove should set the class attribute');
-// The ordered set parser must skip ASCII whitespace (U+0009, U+000A, U+000C, U+000D, and U+0020.)
-test(function () {
-  var foo = document.createElement('div');
-  foo.className = 'a ';
-  foo.classList.add('b');
-  assert_equals(foo.className,'a b');
-}, 'classList.add should treat " " as a space');
-test(function () {
-  var foo = document.createElement('div');
-  foo.className = 'a\t';
-  foo.classList.add('b');
-  assert_equals(foo.className,'a b');
-}, 'classList.add should treat \\t as a space');
-test(function () {
-  var foo = document.createElement('div');
-  foo.className = 'a\r';
-  foo.classList.add('b');
-  assert_equals(foo.className,'a b');
-}, 'classList.add should treat \\r as a space');
-test(function () {
-  var foo = document.createElement('div');
-  foo.className = 'a\n';
-  foo.classList.add('b');
-  assert_equals(foo.className,'a b');
-}, 'classList.add should treat \\n as a space');
-test(function () {
-  var foo = document.createElement('div');
-  foo.className = 'a\f';
-  foo.classList.add('b');
-  assert_equals(foo.className,'a b');
-}, 'classList.add should treat \\f as a space');
-test(function () {
-  //WebIDL and ECMAScript 5 - a readonly property has a getter but not a setter
-  //ES5 makes [[Put]] fail but not throw
-  var failed = false;
-  secondelem.className = 'token1';
-  try {
-    secondelem.classList.length = 0;
-  } catch(e) {
-    failed = e;
+<meta charset=utf-8>
+<title>Test for the classList element attribute</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id="content"></div>
+<script>
+const SVG_NS = "http://www.w3.org/2000/svg";
+const XHTML_NS = "http://www.w3.org/1999/xhtml"
+const MATHML_NS = "http://www.w3.org/1998/Math/MathML";
+
+function setClass(e, newVal) {
+  if (newVal === null) {
+    e.removeAttribute("class");
+  } else {
+    e.setAttribute("class", newVal);
   }
-  assert_equals(secondelem.classList.length,1);
-  assert_false(failed,'an error was thrown');
-}, 'classList.length must be read-only');
-test(function () {
-  var realList = secondelem.classList;
-  secondelem.classList = 'foo bar';
-  assert_equals(secondelem.classList,realList);
-  assert_equals(secondelem.classList.length,2);
-  assert_equals(secondelem.classList[0],'foo');
-  assert_equals(secondelem.classList[1],'bar');
-}, 'classList must have [PutForwards=value]');
-test(function () {
-  var foo = document.createElement('div');
-  foo.className = 'a';
-  foo.classList.replace('token1', 'token2');
+}
 
-  assert_equals(foo.className, 'a');
+function checkModification(e, funcName, args, expectedRes, before, after,
+                           expectedException, desc) {
+  if (!Array.isArray(args)) {
+    args = [args];
+  }
 
-  foo.classList.replace('a', 'b');
-  assert_equals(foo.className, 'b');
+  test(function() {
+    var shouldThrow = typeof(expectedException) === "string";
+    if (shouldThrow) {
+      // If an exception is thrown, the class attribute shouldn't change.
+      after = before;
+    }
+    setClass(e, before);
 
-  assert_throws('SYNTAX_ERR', function () { foo.classList.replace('t with space', '') });
-  assert_throws('INVALID_CHARACTER_ERR', function () { foo.classList.replace('t with space', 'foo') });
-  assert_throws('SYNTAX_ERR', function () { foo.classList.replace('', 'foo') });
-}, 'classList.replace should work');
+    if (shouldThrow) {
+      assert_throws(expectedException, function() {
+        var list = e.classList;
+        var res = list[funcName].apply(list, args);
+      });
+    } else {
+      var list = e.classList;
+      var res = list[funcName].apply(list, args);
+    }
+    if (!shouldThrow) {
+      assert_equals(res, expectedRes, "wrong return value");
+    }
 
-test(function() {
-  var foo = document.createElement('div');
-  assert_throws(new TypeError(),
-                function() { foo.classList.supports('hello') });
-}, 'classList.supports should throw');
-    </script>
-  </head>
-  <body>
+    var expectedAfter = after;
 
-    <div id="log"></div>
+    assert_equals(e.getAttribute("class"), expectedAfter,
+                  "wrong class after modification");
+  }, "classList." + funcName + "(" + args.map(format_value).join(", ") +
+  ") with attribute value " + format_value(before) + desc);
+}
 
-  </body>
-</html>
+function assignToClassListStrict(e) {
+  "use strict";
+  e.classList = "foo";
+  e.removeAttribute("class");
+}
+
+function assignToClassList(e) {
+  var expect = e.classList;
+  e.classList = "foo";
+  assert_equals(e.classList, expect,
+                "classList should be unchanged after assignment");
+  e.removeAttribute("class");
+}
+
+function testClassList(e, desc) {
+
+  // assignment
+
+  test(function() {
+    assignToClassListStrict(e);
+    assignToClassList(e);
+  }, "Assigning to classList" + desc);
+
+  // supports
+  test(function() {
+    assert_throws(TypeError(), function() {
+      e.classList.supports("a");
+    })
+  }, ".supports() must throw TypeError" + desc);
+
+  // length attribute
+
+  function checkLength(value, length) {
+    test(function() {
+      setClass(e, value);
+      assert_equals(e.classList.length, length);
+    }, "classList.length when " +
+    (value === null ? "removed" : "set to " + format_value(value)) + desc);
+  }
+
+  checkLength(null, 0);
+  checkLength("", 0);
+  checkLength("   \t  \f", 0);
+  checkLength("a", 1);
+  checkLength("a A", 2);
+  checkLength("\r\na\t\f", 1);
+  checkLength("a a", 1);
+  checkLength("a a a a a a", 1);
+  checkLength("a a b b", 2);
+  checkLength("a A B b", 4);
+  checkLength("a b c c b a a b c c", 3);
+  checkLength("   a  a b", 2);
+  checkLength("a\tb\nc\fd\re f", 6);
+
+  // [Stringifies]
+
+  function checkStringifier(value, expected) {
+    test(function() {
+      setClass(e, value);
+      assert_equals(e.classList.toString(), expected);
+    }, "classList.toString() when " +
+    (value === null ? "removed" : "set to " + format_value(value)) + desc);
+  }
+
+  checkStringifier(null, "");
+  checkStringifier("foo", "foo");
+  checkStringifier("   a  a b", "   a  a b");
+
+  // item() method
+
+  function checkItems(attributeValue, expectedValues) {
+    function checkItemFunction(index, expected) {
+      assert_equals(e.classList.item(index), expected,
+                    "classList.item(" + index + ")");
+    }
+
+    function checkItemArray(index, expected) {
+      assert_equals(e.classList[index], expected, "classList[" + index + "]");
+    }
+
+    test(function() {
+      setClass(e, attributeValue);
+
+      checkItemFunction(-1, null);
+      checkItemArray(-1, undefined);
+
+      var i = 0;
+      while (i < expectedValues.length) {
+        checkItemFunction(i, expectedValues[i]);
+        checkItemArray(i, expectedValues[i]);
+        i++;
+      }
+
+      checkItemFunction(i, null);
+      checkItemArray(i, undefined);
+
+      checkItemFunction(0xffffffff, null);
+      checkItemArray(0xffffffff, undefined);
+
+      checkItemFunction(0xfffffffe, null);
+      checkItemArray(0xfffffffe, undefined);
+    }, "classList.item() when set to " + format_value(attributeValue) + desc);
+  }
+
+  checkItems(null, []);
+  checkItems("a", ["a"]);
+  checkItems("aa AA aa", ["aa", "AA"]);
+  checkItems("a b", ["a", "b"]);
+  checkItems("   a  a b", ["a", "b"]);
+  checkItems("\t\n\f\r a\t\n\f\r b\t\n\f\r ", ["a", "b"]);
+
+  // contains() method
+
+  function checkContains(attributeValue, args, expectedRes) {
+    if (!Array.isArray(expectedRes)) {
+      expectedRes = Array(args.length).fill(expectedRes);
+    }
+    setClass(e, attributeValue);
+    for (var i = 0; i < args.length; i++) {
+      test(function() {
+        assert_equals(e.classList.contains(args[i]), expectedRes[i],
+                      "classList.contains(\"" + args[i] + "\")");
+      }, "classList.contains(" + format_value(args[i]) + ") when set to " +
+      format_value(attributeValue) + desc);
+    }
+  }
+
+  checkContains(null, ["a", "", "  "], false);
+  checkContains("", ["a"], false);
+
+  checkContains("a", ["a"], true);
+  checkContains("a", ["aa", "b", "A", "a.", "a)",, "a'", 'a"', "a$", "a~",
+                      "a?", "a\\"], false);
+
+  // All "ASCII whitespace" per spec, before and after
+  checkContains("a", ["a\t", "\ta", "a\n", "\na", "a\f", "\fa", "a\r", "\ra",
+                      "a ", " a"], false);
+
+  checkContains("aa AA", ["aa", "AA", "aA"], [true, true, false]);
+  checkContains("a a a", ["a", "aa", "b"], [true, false, false]);
+  checkContains("a b c", ["a", "b"], true);
+
+  checkContains("null undefined", [null, undefined], true);
+  checkContains("\t\n\f\r a\t\n\f\r b\t\n\f\r ", ["a", "b"], true);
+
+  // add() method
+
+  function checkAdd(before, argument, after, expectedException) {
+    checkModification(e, "add", argument, undefined, before, after,
+                      expectedException, desc);
+    // Also check force toggle
+    // XXX https://github.com/whatwg/dom/issues/443
+    //if (!Array.isArray(argument)) {
+    //  checkModification(e, "toggle", [argument, true], true, before, after,
+    //                    expectedException);
+    //}
+  }
+
+  checkAdd(null, "", null, "SyntaxError");
+  checkAdd(null, ["a", ""], null, "SyntaxError");
+  checkAdd(null, " ", null, "InvalidCharacterError");
+  checkAdd(null, "\ta", null, "InvalidCharacterError");
+  checkAdd(null, "a\t", null, "InvalidCharacterError");
+  checkAdd(null, "\na", null, "InvalidCharacterError");
+  checkAdd(null, "a\n", null, "InvalidCharacterError");
+  checkAdd(null, "\fa", null, "InvalidCharacterError");
+  checkAdd(null, "a\f", null, "InvalidCharacterError");
+  checkAdd(null, "\ra", null, "InvalidCharacterError");
+  checkAdd(null, "a\r", null, "InvalidCharacterError");
+  checkAdd(null, " a", null, "InvalidCharacterError");
+  checkAdd(null, "a ", null, "InvalidCharacterError");
+  checkAdd(null, ["a", " "], null, "InvalidCharacterError");
+  checkAdd(null, ["a", "aa "], null, "InvalidCharacterError");
+
+  checkAdd("a", "a", "a");
+  checkAdd("aa", "AA", "aa AA");
+  checkAdd("a b c", "a", "a b c");
+  checkAdd("a a a  b", "a", "a b");
+  checkAdd(null, "a", "a");
+  checkAdd("", "a", "a");
+  checkAdd(" ", "a", "a");
+  checkAdd("   \f", "a", "a");
+  checkAdd("a", "b", "a b");
+  checkAdd("a b c", "d", "a b c d");
+  checkAdd("a b c ", "d", "a b c d");
+  checkAdd("   a  a b", "c", "a b c");
+  checkAdd("   a  a b", "a", "a b");
+  checkAdd("\t\n\f\r a\t\n\f\r b\t\n\f\r ", "c", "a b c");
+
+  // multiple add
+  checkAdd("a b c ", ["d", "e"], "a b c d e");
+  checkAdd("a b c ", ["a", "a"], "a b c");
+  checkAdd("a b c ", ["d", "d"], "a b c d");
+  checkAdd("a b c a ", [], "a b c");
+  checkAdd(null, ["a", "b"], "a b");
+  checkAdd("", ["a", "b"], "a b");
+
+  checkAdd(null, null, "null");
+  checkAdd(null, undefined, "undefined");
+
+  // remove() method
+
+  function checkRemove(before, argument, after, expectedException) {
+    checkModification(e, "remove", argument, undefined, before, after,
+                      expectedException, desc);
+    // Also check force toggle
+    // XXX https://github.com/whatwg/dom/issues/443
+    //if (!Array.isArray(argument)) {
+    //  checkModification(e, "toggle", [argument, false], false, before, after,
+    //                    expectedException);
+    //}
+  }
+
+  checkRemove(null, "", null, "SyntaxError");
+  checkRemove(null, " ", null, "InvalidCharacterError");
+  checkRemove("\ta", "\ta", "\ta", "InvalidCharacterError");
+  checkRemove("a\t", "a\t", "a\t", "InvalidCharacterError");
+  checkRemove("\na", "\na", "\na", "InvalidCharacterError");
+  checkRemove("a\n", "a\n", "a\n", "InvalidCharacterError");
+  checkRemove("\fa", "\fa", "\fa", "InvalidCharacterError");
+  checkRemove("a\f", "a\f", "a\f", "InvalidCharacterError");
+  checkRemove("\ra", "\ra", "\ra", "InvalidCharacterError");
+  checkRemove("a\r", "a\r", "a\r", "InvalidCharacterError");
+  checkRemove(" a", " a", " a", "InvalidCharacterError");
+  checkRemove("a ", "a ", "a ", "InvalidCharacterError");
+  checkRemove("aa ", "aa ", null, "InvalidCharacterError");
+
+  checkRemove(null, "a", null);
+  checkRemove("", "a", "");
+  checkRemove("a b  c", "d", "a b c");
+  checkRemove("a b  c", "A", "a b c");
+  checkRemove(" a a a ", "a", "");
+  checkRemove("a  b", "a", "b");
+  checkRemove("a  b  ", "a", "b");
+  checkRemove("a a b", "a", "b");
+  checkRemove("aa aa bb", "aa", "bb");
+  checkRemove("a a b a a c a a", "a", "b c");
+
+  checkRemove("a  b  c", "b", "a c");
+  checkRemove("aaa  bbb  ccc", "bbb", "aaa ccc");
+  checkRemove(" a  b  c ", "b", "a c");
+  checkRemove("a b b b c", "b", "a c");
+
+  checkRemove("a  b  c", "c", "a b");
+  checkRemove(" a  b  c ", "c", "a b");
+  checkRemove("a b c c c", "c", "a b");
+
+  checkRemove("a b a c a d a", "a", "b c d");
+  checkRemove("AA BB aa CC AA dd aa", "AA", "BB aa CC dd");
+
+  checkRemove("\ra\na\ta\f", "a", "");
+  checkRemove("\t\n\f\r a\t\n\f\r b\t\n\f\r ", "a", "b");
+
+  // multiple remove
+  checkRemove("a b c ", ["d", "e"], "a b c");
+  checkRemove("a b c ", ["a", "b"], "c");
+  checkRemove("a b c ", ["a", "c"], "b");
+  checkRemove("a b c ", ["a", "a"], "b c");
+  checkRemove("a b c ", ["d", "d"], "a b c");
+  checkRemove("a b c ", [], "a b c");
+  checkRemove(null, ["a", "b"], null);
+  checkRemove("", ["a", "b"], "");
+  checkRemove("a a", [], "a");
+
+  checkRemove("null", null, "");
+  checkRemove("undefined", undefined, "");
+
+  // toggle() method
+
+  function checkToggle(before, argument, expectedRes, after, expectedException) {
+    checkModification(e, "toggle", argument, expectedRes, before, after,
+                      expectedException, desc);
+  }
+
+  checkToggle(null, "", null, null, "SyntaxError");
+  checkToggle(null, "aa ", null, null, "InvalidCharacterError");
+
+  checkToggle(null, "a", true, "a");
+  checkToggle("", "a", true, "a");
+  checkToggle(" ", "a", true, "a");
+  checkToggle("   \f", "a", true, "a");
+  checkToggle("a", "b", true, "a b");
+  checkToggle("a", "A", true, "a A");
+  checkToggle("a b c", "d", true, "a b c d");
+  checkToggle("   a  a b", "d", true, "a b d");
+
+  checkToggle("a", "a", false, "");
+  checkToggle(" a a a ", "a", false, "");
+  checkToggle(" A A A ", "a", true, "A a");
+  checkToggle(" a b c ", "b", false, "a c");
+  checkToggle(" a b c b b", "b", false, "a c");
+  checkToggle(" a b  c  ", "c", false, "a b");
+  checkToggle(" a b c ", "a", false, "b c");
+  checkToggle("   a  a b", "b", false, "a");
+  checkToggle("\t\n\f\r a\t\n\f\r b\t\n\f\r ", "a", false, "b");
+  checkToggle("\t\n\f\r a\t\n\f\r b\t\n\f\r ", "c", true, "a b c");
+
+  checkToggle("null", null, false, "");
+  checkToggle("", null, true, "null");
+  checkToggle("undefined", undefined, false, "");
+  checkToggle("", undefined, true, "undefined");
+
+
+  // tests for the force argument handling
+  // XXX Remove these if https://github.com/whatwg/dom/issues/443 is fixed
+
+  function checkForceToggle(before, argument, force, expectedRes, after, expectedException) {
+    checkModification(e, "toggle", [argument, force], expectedRes, before,
+                      after, expectedException, desc);
+  }
+
+  checkForceToggle("", "a", true, true, "a");
+  checkForceToggle("a", "a", true, true, "a");
+  checkForceToggle("a", "b", true, true, "a b");
+  checkForceToggle("a b", "b", true, true, "a b");
+  checkForceToggle("", "a", false, false, "");
+  checkForceToggle("a", "a", false, false, "");
+  checkForceToggle("a", "b", false, false, "a");
+  checkForceToggle("a b", "b", false, false, "a");
+
+
+  // replace() method
+  function checkReplace(before, token, newToken, after, expectedException) {
+    checkModification(e, "replace", [token, newToken], undefined, before,
+                      after, expectedException, desc);
+  }
+
+  checkReplace(null, "", "a", null, "SyntaxError");
+  checkReplace(null, "", " ", null, "SyntaxError");
+  checkReplace(null, " ", "a", null, "InvalidCharacterError");
+  checkReplace(null, "\ta", "b", null, "InvalidCharacterError");
+  checkReplace(null, "a\t", "b", null, "InvalidCharacterError");
+  checkReplace(null, "\na", "b", null, "InvalidCharacterError");
+  checkReplace(null, "a\n", "b", null, "InvalidCharacterError");
+  checkReplace(null, "\fa", "b", null, "InvalidCharacterError");
+  checkReplace(null, "a\f", "b", null, "InvalidCharacterError");
+  checkReplace(null, "\ra", "b", null, "InvalidCharacterError");
+  checkReplace(null, "a\r", "b", null, "InvalidCharacterError");
+  checkReplace(null, " a", "b", null, "InvalidCharacterError");
+  checkReplace(null, "a ", "b", null, "InvalidCharacterError");
+
+  checkReplace(null, "a", "", null, "SyntaxError");
+  checkReplace(null, " ", "", null, "SyntaxError");
+  checkReplace(null, "a", " ", null, "InvalidCharacterError");
+  checkReplace(null, "b", "\ta", null, "InvalidCharacterError");
+  checkReplace(null, "b", "a\t", null, "InvalidCharacterError");
+  checkReplace(null, "b", "\na", null, "InvalidCharacterError");
+  checkReplace(null, "b", "a\n", null, "InvalidCharacterError");
+  checkReplace(null, "b", "\fa", null, "InvalidCharacterError");
+  checkReplace(null, "b", "a\f", null, "InvalidCharacterError");
+  checkReplace(null, "b", "\ra", null, "InvalidCharacterError");
+  checkReplace(null, "b", "a\r", null, "InvalidCharacterError");
+  checkReplace(null, "b", " a", null, "InvalidCharacterError");
+  checkReplace(null, "b", "a ", null, "InvalidCharacterError");
+
+  checkReplace("a", "a", "a", "a");
+  checkReplace("a", "a", "b", "b");
+  checkReplace("a", "A", "b", "a");
+  checkReplace("a b", "b", "A", "a A");
+  checkReplace("a b c", "d", "e", "a b c");
+  // https://github.com/whatwg/dom/issues/443
+  checkReplace("a a a  b", "a", "a", "a b");
+  checkReplace("a a a  b", "c", "d", "a a a  b");
+  checkReplace(null, "a", "b", null);
+  checkReplace("", "a", "b", "");
+  checkReplace(" ", "a", "b", " ");
+  checkReplace(" a  \f", "a", "b", "b");
+  checkReplace("a b c", "b", "d", "a d c");
+  // https://github.com/whatwg/dom/issues/442
+  // Implementations agree on the first one here, so I test it, but disagree on
+  // the second, so no test until the spec decides what to say.
+  checkReplace("a b c", "c", "a", "a b");
+  checkReplace("c b a", "c", "a", "a b");
+  checkReplace("a b a", "a", "c", "c b");
+  checkReplace("a b a", "b", "c", "a c");
+  checkReplace("   a  a b", "a", "c", "c b");
+  checkReplace("   a  a b", "b", "c", "a c");
+  checkReplace("\t\n\f\r a\t\n\f\r b\t\n\f\r ", "a", "c", "c b");
+  checkReplace("\t\n\f\r a\t\n\f\r b\t\n\f\r ", "b", "c", "a c");
+
+  checkReplace("a null", null, "b", "a b");
+  checkReplace("a b", "a", null, "null b");
+  checkReplace("a undefined", undefined, "b", "a b");
+  checkReplace("a b", "a", undefined, "undefined b");
+}
+
+var content = document.getElementById("content");
+
+var htmlNode = document.createElement("div");
+content.appendChild(htmlNode);
+testClassList(htmlNode, " (HTML node)");
+
+var xhtmlNode = document.createElementNS(XHTML_NS, "div");
+content.appendChild(xhtmlNode);
+testClassList(xhtmlNode, " (XHTML node)");
+
+var mathMLNode = document.createElementNS(MATHML_NS, "math");
+content.appendChild(mathMLNode);
+testClassList(mathMLNode, " (MathML node)");
+
+var xmlNode = document.createElementNS(null, "foo");
+content.appendChild(xmlNode);
+testClassList(xmlNode, " (XML node with null namespace)");
+
+var fooNode = document.createElementNS("http://example.org/foo", "foo");
+content.appendChild(fooNode);
+testClassList(fooNode, " (foo node)");
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/editing/data/misc.js b/third_party/WebKit/LayoutTests/external/wpt/editing/data/misc.js
index 71f9a37..83c02ab7 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/editing/data/misc.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/editing/data/misc.js
@@ -9,7 +9,7 @@
     [["defaultparagraphseparator","div"]],
     "foo[bar]baz",
     [true],
-    {"defaultparagraphseparator":[false,false,"p",false,false,"div"]}],
+    {"defaultparagraphseparator":[false,false,"div",false,false,"div"]}],
 ["foo[bar]baz",
     [["defaultparagraphseparator","p"]],
     "foo[bar]baz",
@@ -21,6 +21,16 @@
     [true],
     {"defaultparagraphseparator":[false,false,"p",false,false,"div"]}],
 ["foo[bar]baz",
+    [["defaultparagraphseparator"," p "]],
+    "foo[bar]baz",
+    [false],
+    {"defaultparagraphseparator":[false,false,"div",false,false,"div"]}],
+["foo[bar]baz",
+    [["defaultparagraphseparator","<p>"]],
+    "foo[bar]baz",
+    [false],
+    {"defaultparagraphseparator":[false,false,"div",false,false,"div"]}],
+["foo[bar]baz",
     [["defaultparagraphseparator","P"]],
     "foo[bar]baz",
     [true],
@@ -29,32 +39,22 @@
     [["defaultparagraphseparator"," div "]],
     "foo[bar]baz",
     [false],
-    {"defaultparagraphseparator":[false,false,"p",false,false,"div"]}],
-["foo[bar]baz",
-    [["defaultparagraphseparator"," p "]],
-    "foo[bar]baz",
-    [false],
-    {"defaultparagraphseparator":[false,false,"p",false,false,"div"]}],
+    {"defaultparagraphseparator":[false,false,"p",false,false,"p"]}],
 ["foo[bar]baz",
     [["defaultparagraphseparator","<div>"]],
     "foo[bar]baz",
     [false],
-    {"defaultparagraphseparator":[false,false,"p",false,false,"div"]}],
-["foo[bar]baz",
-    [["defaultparagraphseparator","<p>"]],
-    "foo[bar]baz",
-    [false],
-    {"defaultparagraphseparator":[false,false,"p",false,false,"div"]}],
+    {"defaultparagraphseparator":[false,false,"p",false,false,"p"]}],
 ["foo[bar]baz",
     [["defaultparagraphseparator","li"]],
     "foo[bar]baz",
     [false],
-    {"defaultparagraphseparator":[false,false,"p",false,false,"div"]}],
+    {"defaultparagraphseparator":[false,false,"p",false,false,"p"]}],
 ["foo[bar]baz",
     [["defaultparagraphseparator","blockquote"]],
     "foo[bar]baz",
     [false],
-    {"defaultparagraphseparator":[false,false,"p",false,false,"div"]}],
+    {"defaultparagraphseparator":[false,false,"p",false,false,"p"]}],
 ["foo[bar]baz",
     [["selectall",""]],
     "foo[bar]baz",
diff --git a/third_party/WebKit/LayoutTests/external/wpt/editing/other/extra-text-nodes-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/editing/other/extra-text-nodes-expected.txt
new file mode 100644
index 0000000..45134af6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/editing/other/extra-text-nodes-expected.txt
@@ -0,0 +1,5 @@
+This is a testharness.js-based test.
+FAIL Simple insertText assert_not_equals: text node "x" is next to "foo" got disallowed value 3
+PASS insertText after insertLineBreak 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/editing/other/extra-text-nodes.html b/third_party/WebKit/LayoutTests/external/wpt/editing/other/extra-text-nodes.html
new file mode 100644
index 0000000..2cd1232d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/editing/other/extra-text-nodes.html
@@ -0,0 +1,43 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Editor should not create unnecessary text nodes</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div contenteditable></div>
+<script>
+var div = document.querySelector("div");
+var walker = document.createTreeWalker(div, NodeFilter.SHOW_TEXT);
+function testInput(html, callback, desc) {
+  test(() => {
+    div.innerHTML = html;
+    div.focus();
+    callback();
+
+    walker.currentNode = walker.root;
+    var node;
+    while (node = walker.nextNode()) {
+      if (node.nextSibling) {
+        assert_not_equals(node.nextSibling.nodeType, Node.TEXT_NODE,
+                          'text node "' + node.nodeValue + '" is next to "' +
+                          node.nextSibling.nodeValue + '"');
+      }
+    }
+  }, desc);
+}
+
+[
+  ['<img src="#">foo<img src="#">',
+   () => {
+     getSelection().collapse(div, 1);
+     document.execCommand("inserttext", false, "x");
+   },
+   "Simple insertText"],
+  ['<p>editor</p>',
+   () => {
+     getSelection().collapse(div.firstChild.firstChild, 3);
+     document.execCommand("insertlinebreak", false, "");
+     document.execCommand("inserttext", false, "x");
+   },
+   "insertText after insertLineBreak"],
+].forEach(([a, b, c]) => testInput(a, b, c));
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/editing/run/misc-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/editing/run/misc-expected.txt
index 6a704027..e61de66 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/editing/run/misc-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/editing/run/misc-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 423 tests; 408 PASS, 15 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 423 tests; 415 PASS, 8 FAIL, 0 TIMEOUT, 0 NOTRUN.
 FAIL [["defaultparagraphseparator",""]] "foo[bar]baz": execCommand("defaultparagraphseparator", false, "") return value assert_equals: expected false but got true
 PASS [["defaultparagraphseparator",""]] "foo[bar]baz" checks for modifications to non-editable content 
 PASS [["defaultparagraphseparator",""]] "foo[bar]baz" compare innerHTML 
@@ -14,7 +14,7 @@
 PASS [["defaultparagraphseparator","div"]] "foo[bar]baz" compare innerHTML 
 PASS [["defaultparagraphseparator","div"]] "foo[bar]baz" queryCommandIndeterm("defaultparagraphseparator") before 
 PASS [["defaultparagraphseparator","div"]] "foo[bar]baz" queryCommandState("defaultparagraphseparator") before 
-FAIL [["defaultparagraphseparator","div"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") before assert_equals: Wrong result returned expected "p" but got "div"
+PASS [["defaultparagraphseparator","div"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") before 
 PASS [["defaultparagraphseparator","div"]] "foo[bar]baz" queryCommandIndeterm("defaultparagraphseparator") after 
 PASS [["defaultparagraphseparator","div"]] "foo[bar]baz" queryCommandState("defaultparagraphseparator") after 
 PASS [["defaultparagraphseparator","div"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") after 
@@ -36,6 +36,24 @@
 PASS [["defaultparagraphseparator","DIV"]] "foo[bar]baz" queryCommandIndeterm("defaultparagraphseparator") after 
 PASS [["defaultparagraphseparator","DIV"]] "foo[bar]baz" queryCommandState("defaultparagraphseparator") after 
 PASS [["defaultparagraphseparator","DIV"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") after 
+FAIL [["defaultparagraphseparator"," p "]] "foo[bar]baz": execCommand("defaultparagraphseparator", false, " p ") return value assert_equals: expected false but got true
+PASS [["defaultparagraphseparator"," p "]] "foo[bar]baz" checks for modifications to non-editable content 
+PASS [["defaultparagraphseparator"," p "]] "foo[bar]baz" compare innerHTML 
+PASS [["defaultparagraphseparator"," p "]] "foo[bar]baz" queryCommandIndeterm("defaultparagraphseparator") before 
+PASS [["defaultparagraphseparator"," p "]] "foo[bar]baz" queryCommandState("defaultparagraphseparator") before 
+PASS [["defaultparagraphseparator"," p "]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") before 
+PASS [["defaultparagraphseparator"," p "]] "foo[bar]baz" queryCommandIndeterm("defaultparagraphseparator") after 
+PASS [["defaultparagraphseparator"," p "]] "foo[bar]baz" queryCommandState("defaultparagraphseparator") after 
+PASS [["defaultparagraphseparator"," p "]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") after 
+FAIL [["defaultparagraphseparator","<p>"]] "foo[bar]baz": execCommand("defaultparagraphseparator", false, "<p>") return value assert_equals: expected false but got true
+PASS [["defaultparagraphseparator","<p>"]] "foo[bar]baz" checks for modifications to non-editable content 
+PASS [["defaultparagraphseparator","<p>"]] "foo[bar]baz" compare innerHTML 
+PASS [["defaultparagraphseparator","<p>"]] "foo[bar]baz" queryCommandIndeterm("defaultparagraphseparator") before 
+PASS [["defaultparagraphseparator","<p>"]] "foo[bar]baz" queryCommandState("defaultparagraphseparator") before 
+PASS [["defaultparagraphseparator","<p>"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") before 
+PASS [["defaultparagraphseparator","<p>"]] "foo[bar]baz" queryCommandIndeterm("defaultparagraphseparator") after 
+PASS [["defaultparagraphseparator","<p>"]] "foo[bar]baz" queryCommandState("defaultparagraphseparator") after 
+PASS [["defaultparagraphseparator","<p>"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") after 
 PASS [["defaultparagraphseparator","P"]] "foo[bar]baz": execCommand("defaultparagraphseparator", false, "P") return value 
 PASS [["defaultparagraphseparator","P"]] "foo[bar]baz" checks for modifications to non-editable content 
 PASS [["defaultparagraphseparator","P"]] "foo[bar]baz" compare innerHTML 
@@ -53,16 +71,7 @@
 PASS [["defaultparagraphseparator"," div "]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") before 
 PASS [["defaultparagraphseparator"," div "]] "foo[bar]baz" queryCommandIndeterm("defaultparagraphseparator") after 
 PASS [["defaultparagraphseparator"," div "]] "foo[bar]baz" queryCommandState("defaultparagraphseparator") after 
-FAIL [["defaultparagraphseparator"," div "]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") after assert_equals: Wrong result returned expected "div" but got "p"
-FAIL [["defaultparagraphseparator"," p "]] "foo[bar]baz": execCommand("defaultparagraphseparator", false, " p ") return value assert_equals: expected false but got true
-PASS [["defaultparagraphseparator"," p "]] "foo[bar]baz" checks for modifications to non-editable content 
-PASS [["defaultparagraphseparator"," p "]] "foo[bar]baz" compare innerHTML 
-PASS [["defaultparagraphseparator"," p "]] "foo[bar]baz" queryCommandIndeterm("defaultparagraphseparator") before 
-PASS [["defaultparagraphseparator"," p "]] "foo[bar]baz" queryCommandState("defaultparagraphseparator") before 
-PASS [["defaultparagraphseparator"," p "]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") before 
-PASS [["defaultparagraphseparator"," p "]] "foo[bar]baz" queryCommandIndeterm("defaultparagraphseparator") after 
-PASS [["defaultparagraphseparator"," p "]] "foo[bar]baz" queryCommandState("defaultparagraphseparator") after 
-FAIL [["defaultparagraphseparator"," p "]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") after assert_equals: Wrong result returned expected "div" but got "p"
+PASS [["defaultparagraphseparator"," div "]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") after 
 FAIL [["defaultparagraphseparator","<div>"]] "foo[bar]baz": execCommand("defaultparagraphseparator", false, "<div>") return value assert_equals: expected false but got true
 PASS [["defaultparagraphseparator","<div>"]] "foo[bar]baz" checks for modifications to non-editable content 
 PASS [["defaultparagraphseparator","<div>"]] "foo[bar]baz" compare innerHTML 
@@ -71,16 +80,7 @@
 PASS [["defaultparagraphseparator","<div>"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") before 
 PASS [["defaultparagraphseparator","<div>"]] "foo[bar]baz" queryCommandIndeterm("defaultparagraphseparator") after 
 PASS [["defaultparagraphseparator","<div>"]] "foo[bar]baz" queryCommandState("defaultparagraphseparator") after 
-FAIL [["defaultparagraphseparator","<div>"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") after assert_equals: Wrong result returned expected "div" but got "p"
-FAIL [["defaultparagraphseparator","<p>"]] "foo[bar]baz": execCommand("defaultparagraphseparator", false, "<p>") return value assert_equals: expected false but got true
-PASS [["defaultparagraphseparator","<p>"]] "foo[bar]baz" checks for modifications to non-editable content 
-PASS [["defaultparagraphseparator","<p>"]] "foo[bar]baz" compare innerHTML 
-PASS [["defaultparagraphseparator","<p>"]] "foo[bar]baz" queryCommandIndeterm("defaultparagraphseparator") before 
-PASS [["defaultparagraphseparator","<p>"]] "foo[bar]baz" queryCommandState("defaultparagraphseparator") before 
-PASS [["defaultparagraphseparator","<p>"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") before 
-PASS [["defaultparagraphseparator","<p>"]] "foo[bar]baz" queryCommandIndeterm("defaultparagraphseparator") after 
-PASS [["defaultparagraphseparator","<p>"]] "foo[bar]baz" queryCommandState("defaultparagraphseparator") after 
-FAIL [["defaultparagraphseparator","<p>"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") after assert_equals: Wrong result returned expected "div" but got "p"
+PASS [["defaultparagraphseparator","<div>"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") after 
 FAIL [["defaultparagraphseparator","li"]] "foo[bar]baz": execCommand("defaultparagraphseparator", false, "li") return value assert_equals: expected false but got true
 PASS [["defaultparagraphseparator","li"]] "foo[bar]baz" checks for modifications to non-editable content 
 PASS [["defaultparagraphseparator","li"]] "foo[bar]baz" compare innerHTML 
@@ -89,7 +89,7 @@
 PASS [["defaultparagraphseparator","li"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") before 
 PASS [["defaultparagraphseparator","li"]] "foo[bar]baz" queryCommandIndeterm("defaultparagraphseparator") after 
 PASS [["defaultparagraphseparator","li"]] "foo[bar]baz" queryCommandState("defaultparagraphseparator") after 
-FAIL [["defaultparagraphseparator","li"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") after assert_equals: Wrong result returned expected "div" but got "p"
+PASS [["defaultparagraphseparator","li"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") after 
 FAIL [["defaultparagraphseparator","blockquote"]] "foo[bar]baz": execCommand("defaultparagraphseparator", false, "blockquote") return value assert_equals: expected false but got true
 PASS [["defaultparagraphseparator","blockquote"]] "foo[bar]baz" checks for modifications to non-editable content 
 PASS [["defaultparagraphseparator","blockquote"]] "foo[bar]baz" compare innerHTML 
@@ -98,7 +98,7 @@
 PASS [["defaultparagraphseparator","blockquote"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") before 
 PASS [["defaultparagraphseparator","blockquote"]] "foo[bar]baz" queryCommandIndeterm("defaultparagraphseparator") after 
 PASS [["defaultparagraphseparator","blockquote"]] "foo[bar]baz" queryCommandState("defaultparagraphseparator") after 
-FAIL [["defaultparagraphseparator","blockquote"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") after assert_equals: Wrong result returned expected "div" but got "p"
+PASS [["defaultparagraphseparator","blockquote"]] "foo[bar]baz" queryCommandValue("defaultparagraphseparator") after 
 PASS [["selectall",""]] "foo[bar]baz": execCommand("selectall", false, "") return value 
 PASS [["selectall",""]] "foo[bar]baz" checks for modifications to non-editable content 
 PASS [["selectall",""]] "foo[bar]baz" compare innerHTML 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/README.md b/third_party/WebKit/LayoutTests/external/wpt/eventsource/README.md
new file mode 100644
index 0000000..60bbea3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/README.md
@@ -0,0 +1,2 @@
+These are the Server-sent events (`EventSource`) tests for the
+[Server-sent events chapter of the HTML Standard](https://html.spec.whatwg.org/multipage/comms.html#server-sent-events).
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-close.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-close.htm
new file mode 100644
index 0000000..42ebb1d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-close.htm
@@ -0,0 +1,36 @@
+<!--
+try {
+  var source = new EventSource("../resources/message.py")
+  source.onopen = function(e) {
+    this.close()
+    postMessage([true, this.readyState])
+  }
+} catch(e) {
+  postMessage([false, String(e)])
+}
+/*-->
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>dedicated worker - EventSource: close()</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test();
+      test.step(function() {
+        var worker = new Worker('#')
+        worker.onmessage = function(e) {
+          test.step(function() {
+            assert_true(e.data[0], e.data[1])
+            assert_equals(e.data[1], EventSource.CLOSED, 'this.readyState')
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+<!--*/ //-->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-constructor-non-same-origin-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-constructor-non-same-origin-expected.txt
new file mode 100644
index 0000000..abcf3ac8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-constructor-non-same-origin-expected.txt
@@ -0,0 +1,9 @@
+This is a testharness.js-based test.
+FAIL dedicated worker - EventSource: constructor (act as if there is a network error) (http://example.not/) assert_equals: source.readyState expected 2 but got 0
+FAIL dedicated worker - EventSource: constructor (act as if there is a network error) (https://example.not/test) assert_equals: source.readyState expected 2 but got 0
+PASS dedicated worker - EventSource: constructor (act as if there is a network error) (ftp://example.not/) 
+PASS dedicated worker - EventSource: constructor (act as if there is a network error) (about:blank) 
+PASS dedicated worker - EventSource: constructor (act as if there is a network error) (mailto:whatwg@awesome.example) 
+PASS dedicated worker - EventSource: constructor (act as if there is a network error) (javascript:alert('FAIL')) 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-constructor-non-same-origin.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-constructor-non-same-origin.htm
new file mode 100644
index 0000000..9fe515d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-constructor-non-same-origin.htm
@@ -0,0 +1,49 @@
+<!--
+try {
+  var url = decodeURIComponent(location.hash.substr(1))
+  var source = new EventSource(url)
+  source.onerror = function(e) {
+    postMessage([true, this.readyState, 'data' in e])
+    this.close();
+  }
+} catch(e) {
+  postMessage([false, String(e)])
+}
+/*-->
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>dedicated worker - EventSource: constructor (act as if there is a network error)</title>
+    <meta name=timeout content=long>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      function fetchFail(url) {
+        var test = async_test(document.title + " (" + url + ")", { timeout: 20000 })
+        test.step(function() {
+          var worker = new Worker('#'+encodeURIComponent(url))
+          worker.onmessage = function(e) {
+            test.step(function() {
+              assert_true(e.data[0], e.data[1])
+              assert_equals(e.data[1], EventSource.CLOSED, 'source.readyState')
+              assert_false(e.data[2], "'data' in e");
+            })
+            test.done()
+          }
+        })
+      }
+      fetchFail("http://example.not/")
+      fetchFail("https://example.not/test")
+      fetchFail("ftp://example.not/")
+      fetchFail("about:blank")
+      fetchFail("mailto:whatwg@awesome.example")
+      fetchFail("javascript:alert('FAIL')")
+    </script>
+    <!-- This tests "fails the connection" as well as making sure a simple
+         event is dispatched and not a MessageEvent -->
+  </body>
+</html>
+<!--*/ //-->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-constructor-url-bogus-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-constructor-url-bogus-expected.txt
new file mode 100644
index 0000000..1061a67
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-constructor-url-bogus-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL dedicated worker - EventSource: constructor (invalid URL) assert_true: no exception thrown expected true got false
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-constructor-url-bogus.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-constructor-url-bogus.htm
new file mode 100644
index 0000000..5ffdec8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-constructor-url-bogus.htm
@@ -0,0 +1,34 @@
+<!--
+try {
+  var source = new EventSource("http://this is invalid/")
+  postMessage([false, 'no exception thrown'])
+  source.close()
+} catch(e) {
+  postMessage([true, e.code])
+}
+/*-->
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>dedicated worker - EventSource: constructor (invalid URL)</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var worker = new Worker('#')
+        worker.onmessage = function(e) {
+          test.step(function() {
+            assert_true(e.data[0], e.data[1])
+            assert_equals(e.data[1], DOMException.SYNTAX_ERR, 'e.code')
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+<!--*/ //-->
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-eventtarget.worker.js b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-eventtarget.worker.js
new file mode 100644
index 0000000..73b3055
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-eventtarget.worker.js
@@ -0,0 +1,11 @@
+importScripts("/resources/testharness.js");
+
+async_test(function() {
+  var source = new EventSource("../resources/message.py")
+  source.addEventListener("message", this.step_func_done(function(e) {
+    assert_equals(e.data, 'data');
+    source.close();
+  }), false)
+}, "dedicated worker - EventSource: addEventListener()");
+
+done();
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-onmesage.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-onmesage.htm
new file mode 100644
index 0000000..2de142c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-onmesage.htm
@@ -0,0 +1,36 @@
+<!--
+try {
+  var source = new EventSource("../resources/message.py")
+  source.onmessage = function(e) {
+    postMessage([true, e.data])
+    this.close()
+  }
+} catch(e) {
+  postMessage([false, String(e)])
+}
+/*-->
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>dedicated worker - EventSource: onmessage</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var worker = new Worker('#')
+        worker.onmessage = function(e) {
+          test.step(function() {
+            assert_true(e.data[0], e.data[1])
+            assert_equals(e.data[1], "data", 'e.data')
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+<!--*/ //-->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-onopen.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-onopen.htm
new file mode 100644
index 0000000..e753b42f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-onopen.htm
@@ -0,0 +1,39 @@
+<!--
+try {
+  var source = new EventSource("../resources/message.py")
+  source.onopen = function(e) {
+    postMessage([true, source.readyState, 'data' in e, e.bubbles, e.cancelable])
+    this.close()
+  }
+} catch(e) {
+  postMessage([false, String(e)])
+}
+/*-->
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>dedicated worker - EventSource: onopen (announcing the connection)</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var worker = new Worker('#')
+        worker.onmessage = function(e) {
+          test.step(function() {
+            assert_true(e.data[0], e.data[1])
+            assert_equals(e.data[1], EventSource.OPEN, 'source.readyState')
+            assert_false(e.data[2], "'data' in e")
+            assert_false(e.data[3], 'e.bubbles')
+            assert_false(e.data[4], 'e.calcelable')
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+<!--*/ //-->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-prototype.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-prototype.htm
new file mode 100644
index 0000000..b16e24c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-prototype.htm
@@ -0,0 +1,36 @@
+<!--
+try {
+  EventSource.prototype.ReturnTrue = function() { return true }
+  var source = new EventSource("../resources/message.py")
+  postMessage([true, source.ReturnTrue(), 'EventSource' in self])
+  source.close()
+} catch(e) {
+  postMessage([false, String(e)])
+}
+/*-->
+<!DoCtYpE hTMl>
+<html>
+  <heAd>
+    <title>dedicated worker - EventSource: prototype et al</tiTle>
+    <scrIpt src="/resources/testharness.js"></scripT>
+    <scriPt src="/resources/testharnessreport.js"></Script>
+  </heaD>
+  <boDy>
+    <diV iD="log"></Div>
+    <sCript>
+      var test = async_test();
+      test.step(function() {
+        var worker = new Worker('#')
+        worker.onmessage = function(e) {
+          test.step(function() {
+            assert_true(e.data[0], e.data[1])
+            assert_true(e.data[1], 'source.ReturnTrue()')
+            assert_true(e.data[2], "'EventSource' in self")
+          })
+          test.done()
+        }
+      })
+    </scrIpt>
+  </bOdy>
+</htMl>
+<!--*/ //-->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-url.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-url.htm
new file mode 100644
index 0000000..c1ed078
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/dedicated-worker/eventsource-url.htm
@@ -0,0 +1,35 @@
+<!--
+try {
+  var source = new EventSource("../resources/message.py")
+  postMessage([true, source.url])
+  source.close()
+} catch(e) {
+  postMessage([false, String(e)])
+}
+/*-->
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>dedicated worker - EventSource: url</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test();
+      test.step(function() {
+        var url = "resources/message.py"
+        var worker = new Worker('#')
+        worker.onmessage = function(e) {
+          test.step(function() {
+            assert_true(e.data[0], e.data[1]);
+            assert_equals(e.data[1].substr(-(url.length)), url)
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+<!--*/ //-->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/event-data.html b/third_party/WebKit/LayoutTests/external/wpt/eventsource/event-data.html
new file mode 100644
index 0000000..8f74a01
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/event-data.html
@@ -0,0 +1,44 @@
+<!doctype html>
+<html>
+  <head>
+    <title>EventSource: lines and data parsing</title>
+    <meta rel=help href="http://dev.w3.org/html5/eventsource/#event-stream-interpretation">
+  <meta rel=assert title="If the line is empty (a blank line) Dispatch the event, as defined below.">
+  <meta rel=assert title="If the line starts with a U+003A COLON character (:) Ignore the line.">
+  <meta rel=assert title="If the line contains a U+003A COLON character (:)
+  Collect the characters on the line before the first U+003A COLON character (:), and let field be that string.
+  Collect the characters on the line after the first U+003A COLON character (:), and let value be that string. If value starts with a U+0020 SPACE character, remove it from value.
+  Process the field using the steps described below, using field as the field name and value as the field value.
+  ">
+  <meta rel=assert title="Otherwise, the string is not empty but does not contain a U+003A COLON character (:)
+Process the field using the steps described below, using the whole line as the field name, and the empty string as the field value.
+  ">
+
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test(document.title);
+      test.step(function() {
+        var source = new EventSource("resources/message2.py"),
+            counter = 0;
+        source.onmessage = test.step_func(function(e) {
+          if(counter == 0) {
+            assert_equals(e.data,"msg\nmsg");
+          } else if(counter == 1) {
+            assert_equals(e.data,"");
+          } else if(counter == 2) {
+            assert_equals(e.data,"end");
+            source.close();
+            test.done();
+          } else {
+            assert_unreached();
+          }
+          counter++;
+        });
+      });
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-close.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-close.htm
new file mode 100644
index 0000000..92d98de
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-close.htm
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: close()</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/message.py")
+        assert_equals(source.readyState, source.CONNECTING, "connecting readyState");
+        source.onopen = this.step_func(function() {
+          assert_equals(source.readyState, source.OPEN, "open readyState");
+          source.close()
+          assert_equals(source.readyState, source.CLOSED, "closed readyState");
+          this.done()
+        })
+      })
+
+      var test2 = async_test(document.title + ", test events", { timeout: 9000 });
+      test2.step(function() {
+        var count = 0, reconnected = false,
+            source = new EventSource("resources/reconnect-fail.py?id=" + new Date().getTime());
+
+        source.onerror = this.step_func(function(e) {
+          assert_equals(e.type, 'error');
+          switch(count) {
+            // reconnecting after first message
+            case 1:
+              assert_equals(source.readyState, source.CONNECTING, "reconnecting readyState");
+
+              reconnected = true;
+              break;
+
+            // one more reconnect to get to the closing
+            case 2:
+              assert_equals(source.readyState, source.CONNECTING, "last reconnecting readyState");
+              count++;
+              break;
+
+            // close
+            case 3:
+              assert_equals(source.readyState, source.CLOSED, "closed readyState");
+
+              // give some time for errors to hit us
+              setTimeout(this.step_func(function() { this.done(); }), 100);
+              break;
+
+            default:
+              assert_unreached("Error handler with msg count " + count);
+          }
+
+        });
+
+        source.onmessage = this.step_func(function(e) {
+          switch(count) {
+            case 0:
+              assert_true(!reconnected, "no error event run");
+              assert_equals(e.data, "opened", "data");
+              break;
+
+            case 1:
+              assert_true(reconnected, "have reconnected");
+              assert_equals(e.data, "reconnected", "data");
+              break;
+
+            default:
+              assert_unreached("Dunno what to do with message number " + count);
+          }
+
+          count++;
+        });
+
+      });
+
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-document-domain.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-document-domain.htm
new file mode 100644
index 0000000..8fd7420
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-document-domain.htm
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: document.domain</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        document.domain = document.domain
+        source = new EventSource("resources/message.py")
+        source.onopen = function(e) {
+          test.step(function() {
+            assert_equals(source.readyState, source.OPEN)
+            assert_false(e.hasOwnProperty('data'))
+            assert_false(e.bubbles)
+            assert_false(e.cancelable)
+            this.close()
+          }, this)
+          test.done()
+        }
+      })
+    </script>
+    <!-- Apart from document.domain equivalent to the onopen test. -->
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-non-same-origin-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-non-same-origin-expected.txt
new file mode 100644
index 0000000..c3fbb53
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-non-same-origin-expected.txt
@@ -0,0 +1,9 @@
+This is a testharness.js-based test.
+FAIL EventSource: constructor (act as if there is a network error) (http://example.not/) assert_equals: expected 2 but got 0
+FAIL EventSource: constructor (act as if there is a network error) (https://example.not/test) assert_equals: expected 2 but got 0
+PASS EventSource: constructor (act as if there is a network error) (ftp://example.not/) 
+PASS EventSource: constructor (act as if there is a network error) (about:blank) 
+PASS EventSource: constructor (act as if there is a network error) (mailto:whatwg@awesome.example) 
+PASS EventSource: constructor (act as if there is a network error) (javascript:alert('FAIL')) 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-non-same-origin.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-non-same-origin.htm
new file mode 100644
index 0000000..dd4ab84
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-non-same-origin.htm
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: constructor (act as if there is a network error)</title>
+    <meta name=timeout content=long>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      function fetchFail(url) {
+        var test = async_test(document.title + " (" + url + ")", { timeout: 20000 })
+        test.step(function() {
+          var source = new EventSource(url)
+          source.onerror = function(e) {
+            test.step(function() {
+              assert_equals(source.readyState, source.CLOSED)
+              assert_false(e.hasOwnProperty('data'))
+            })
+            test.done()
+          }
+        })
+      }
+      fetchFail("http://example.not/")
+      fetchFail("https://example.not/test")
+      fetchFail("ftp://example.not/")
+      fetchFail("about:blank")
+      fetchFail("mailto:whatwg@awesome.example")
+      fetchFail("javascript:alert('FAIL')")
+    </script>
+    <!-- This tests "fails the connection" as well as making sure a simple
+         event is dispatched and not a MessageEvent -->
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-stringify.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-stringify.htm
new file mode 100644
index 0000000..162fa34
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-stringify.htm
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: stringify argument</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      async_test(function (test) {
+        test.step(function() {
+          var source = new EventSource({toString:function(){return "resources/message.py";}})
+          source.onopen = function(e) {
+            test.step(function() {
+              assert_false(e.hasOwnProperty('data'))
+              source.close()
+              test.done()
+            })
+          }
+        });
+      }, document.title + ', object');
+
+      test(function(){
+        var source = new EventSource(1);
+        assert_regexp_match(source.url, /\/1$/);
+      }, document.title + ', 1');
+      test(function(){
+        var source = new EventSource(null);
+        assert_regexp_match(source.url, /\/null$/);
+      }, document.title + ', null');
+      test(function(){
+        var source = new EventSource(undefined);
+        assert_regexp_match(source.url, /\/undefined$/);
+      }, document.title + ', undefined');
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-url-bogus-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-url-bogus-expected.txt
new file mode 100644
index 0000000..36cb0c6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-url-bogus-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL EventSource: constructor (invalid URL) assert_throws: function "function () { new EventSource("http://this is invalid/") }" did not throw
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-url-bogus.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-url-bogus.htm
new file mode 100644
index 0000000..8e769ed71
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-url-bogus.htm
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: constructor (invalid URL)</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      test(function() {
+        assert_throws("SyntaxError", function() { new EventSource("http://this is invalid/") })
+      })
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-url-multi-window.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-url-multi-window.htm
new file mode 100644
index 0000000..99fecb97
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-constructor-url-multi-window.htm
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: resolving URLs</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      function init() {
+        test.step(function() {
+          source = new self[0].EventSource("message.py")
+          source.onopen = function(e) {
+            test.step(function() {
+              assert_equals(source.readyState, source.OPEN)
+              assert_false(e.hasOwnProperty('data'))
+              assert_false(e.bubbles)
+              assert_false(e.cancelable)
+              this.close()
+              test.done()
+            }, this)
+          }
+          source.onerror = function(e) {
+            test.step(function() {
+              assert_unreached()
+              source.close()
+              test.done()
+            })
+          }
+        })
+      }
+    </script>
+    <iframe src="resources/init.htm"></iframe>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-cross-origin.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-cross-origin.htm
new file mode 100644
index 0000000..b753bad
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-cross-origin.htm
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset=utf-8>
+    <title>EventSource: cross-origin</title>
+    <meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var crossdomain = location.href
+                    .replace('://', '://www2.')
+                    .replace(/\/[^\/]*$/, '/')
+
+      function doCORS(url, title) {
+        async_test(document.title + " " + title).step(function() {
+          var source = new EventSource(url, { withCredentials: true })
+          source.onmessage = this.step_func(function(e) {
+            assert_equals(e.data, "data")
+            source.close()
+            this.done()
+          })
+        })
+      }
+
+      doCORS(crossdomain + "resources/cors.py?run=message",
+        "basic use")
+      doCORS(crossdomain + "resources/cors.py?run=redirect&location=/eventsource/resources/cors.py?run=message",
+        "redirect use")
+      doCORS(crossdomain + "resources/cors.py?run=status-reconnect&status=200",
+        "redirect use recon")
+
+      function failCORS(url, title) {
+        async_test(document.title + " " + title).step(function() {
+          var source = new EventSource(url)
+          source.onerror = this.step_func(function(e) {
+            assert_equals(source.readyState, source.CLOSED, 'readyState')
+            assert_false(e.hasOwnProperty('data'))
+            source.close()
+            this.done()
+          })
+
+          /* Shouldn't happen */
+          source.onmessage = this.step_func(function(e) {
+            assert_unreached("shouldn't fire message event")
+          })
+          source.onopen = this.step_func(function(e) {
+            assert_unreached("shouldn't fire open event")
+          })
+        })
+      }
+
+      failCORS(crossdomain + "resources/cors.py?run=message&origin=http://example.org",
+        "allow-origin: http://example.org should fail")
+      failCORS(crossdomain + "resources/cors.py?run=message&origin=",
+        "allow-origin:'' should fail")
+      failCORS(crossdomain + "resources/message.py",
+        "No allow-origin should fail")
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-eventtarget.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-eventtarget.htm
new file mode 100644
index 0000000..6e600fc
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-eventtarget.htm
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: addEventListener()</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/message.py")
+        source.addEventListener("message", listener, false)
+      })
+      function listener(e) {
+        test.step(function() {
+          assert_equals("data", e.data)
+          this.close()
+        }, this)
+        test.done()
+      }
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-onmessage-realm-support.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-onmessage-realm-support.htm
new file mode 100644
index 0000000..63e6d01
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-onmessage-realm-support.htm
@@ -0,0 +1,2 @@
+<!DOCTYPE html>
+<title>This page is just used to grab an EventSource constructor</title>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-onmessage-realm.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-onmessage-realm.htm
new file mode 100644
index 0000000..9bc8c4646
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-onmessage-realm.htm
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>EventSource: message event Realm</title>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/comms.html#dispatchMessage">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<iframe src="eventsource-onmessage-realm-support.htm"></iframe>
+
+<script>
+"use strict";
+
+async_test(t => {
+  window.onload = t.step_func(() => {
+    const source = new frames[0].EventSource("resources/message.py");
+    t.add_cleanup(() => {
+      source.close();
+    });
+
+    source.onmessage = t.step_func_done(e => {
+      assert_equals(e.constructor, frames[0].MessageEvent);
+    });
+  });
+}, "the MessageEvent must be created in the Realm of the EventSource");
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-onmessage-trusted.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-onmessage-trusted.htm
new file mode 100644
index 0000000..c3f012b2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-onmessage-trusted.htm
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<title>EventSource message events are trusted</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/comms.html#dispatchMessage">
+<!-- See also:
+- https://github.com/whatwg/html/pull/1935
+-->
+
+<script>
+"use strict";
+
+async_test(t => {
+  const source = new EventSource("resources/message.py");
+
+  source.onmessage = t.step_func_done(e => {
+    source.close();
+    assert_equals(e.isTrusted, true);
+  });
+}, "EventSource message events are trusted");
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-onmessage.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-onmessage.htm
new file mode 100644
index 0000000..b683ebc
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-onmessage.htm
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: onmessage</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/message.py")
+        source.onmessage = function(e) {
+          test.step(function() {
+            assert_equals("data", e.data)
+            source.close()
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-onopen.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-onopen.htm
new file mode 100644
index 0000000..1c9bfe03
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-onopen.htm
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: onopen (announcing the connection)</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        source = new EventSource("resources/message.py")
+        source.onopen = function(e) {
+          test.step(function() {
+            assert_equals(source.readyState, source.OPEN)
+            assert_false(e.hasOwnProperty('data'))
+            assert_false(e.bubbles)
+            assert_false(e.cancelable)
+            this.close()
+          }, this)
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-prototype.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-prototype.htm
new file mode 100644
index 0000000..38f63eb5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-prototype.htm
@@ -0,0 +1,21 @@
+<!DoCtYpE hTMl>
+<html>
+  <heAd>
+    <title>EventSource: prototype et al</tiTle>
+    <scrIpt src="/resources/testharness.js"></scripT>
+    <scriPt src="/resources/testharnessreport.js"></Script>
+  </heaD>
+  <boDy>
+    <diV iD="log"></Div>
+    <sCript>
+      test(function() {
+        EventSource.prototype.ReturnTrue = function() { return true }
+        var source = new EventSource("resources/message.py")
+        assert_true(source.ReturnTrue())
+        assert_exists(window, "EventSource")
+        source.close()
+      })
+    </scrIpt>
+  </bOdy>
+</htMl>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-reconnect.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-reconnect.htm
new file mode 100644
index 0000000..a23885f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-reconnect.htm
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: reconnection</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      function doReconn(url, title) {
+        var test = async_test(document.title + " " + title)
+        test.step(function() {
+          var source = new EventSource(url)
+          source.onmessage = test.step_func(function(e) {
+            assert_equals(e.data, "data")
+            source.close()
+            test.done()
+          })
+        })
+      }
+
+      doReconn("resources/status-reconnect.py?status=200",
+        "200")
+
+
+      var t = async_test(document.title + ", test reconnection events", { timeout: 9000 });
+      t.step(function() {
+        var opened = false, reconnected = false,
+            source = new EventSource("resources/status-reconnect.py?status=200&ok_first&id=2");
+
+        source.onerror = t.step_func(function(e) {
+          assert_equals(e.type, 'error');
+          assert_equals(source.readyState, source.CONNECTING, "readyState");
+          assert_true(opened, "connection is opened earlier");
+
+          reconnected = true;
+        });
+
+        source.onmessage = t.step_func(function(e) {
+          if (!opened) {
+            opened = true;
+            assert_false(reconnected, "have reconnected before first message");
+            assert_equals(e.data, "ok");
+          }
+          else {
+            assert_true(reconnected, "Got reconnection event");
+            assert_equals(e.data, "data");
+            source.close()
+            t.done()
+          }
+        });
+      });
+
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-request-cancellation.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-request-cancellation.htm
new file mode 100644
index 0000000..308e4d5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-request-cancellation.htm
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: request cancellation</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var t = async_test();
+      onload = t.step_func(function() {
+        var url = "resources/message.py?sleep=1000&message=" + encodeURIComponent("retry:1000\ndata:abc\n\n");
+        var es = new EventSource(url);
+        es.onerror = t.step_func(function() {
+          assert_equals(es.readyState, EventSource.CLOSED)
+          setTimeout(t.step_func(function () {
+            assert_equals(es.readyState, EventSource.CLOSED,
+                          "After stopping the eventsource readyState should be CLOSED")
+            t.done();
+          }), 1000);
+        });
+
+        setTimeout(t.step_func(function() {
+          window.stop()
+          es.onopen = t.unreached_func("Got open event");
+          es.onmessage = t.unreached_func("Got message after closing source");
+        }), 0);
+      });
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-url.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-url.htm
new file mode 100644
index 0000000..8b9262b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/eventsource-url.htm
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: url</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      test(function() {
+        var url = "resources/message.py",
+            source = new EventSource(url)
+        assert_equals(source.url.substr(-(url.length)), url)
+        source.close()
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-bom-2.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-bom-2.htm
new file mode 100644
index 0000000..6f267a0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-bom-2.htm
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: Double BOM</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test(),
+          hasbeenone = false,
+          hasbeentwo = false
+      test.step(function() {
+        var source = new EventSource("resources/message.py?message=%EF%BB%BF%EF%BB%BFdata%3A1%0A%0Adata%3A2%0A%0Adata%3A3")
+        source.addEventListener("message", listener, false)
+      })
+      function listener(e) {
+        test.step(function() {
+          if(e.data == "1")
+            hasbeenone = true
+          if(e.data == "2")
+            hasbeentwo = true
+          if(e.data == "3") {
+            assert_false(hasbeenone)
+            assert_true(hasbeentwo)
+            this.close()
+            test.done()
+          }
+        }, this)
+      }
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-bom.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-bom.htm
new file mode 100644
index 0000000..9216022
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-bom.htm
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: BOM</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test(),
+          hasbeenone = false,
+          hasbeentwo = false
+      test.step(function() {
+        var source = new EventSource("resources/message.py?message=%EF%BB%BFdata%3A1%0A%0A%EF%BB%BFdata%3A2%0A%0Adata%3A3")
+        source.addEventListener("message", listener, false)
+      })
+      function listener(e) {
+        test.step(function() {
+          if(e.data == "1")
+            hasbeenone = true
+          if(e.data == "2")
+            hasbeentwo = true
+          if(e.data == "3") {
+            assert_true(hasbeenone)
+            assert_false(hasbeentwo)
+            this.close()
+            test.done()
+          }
+        }, this)
+      }
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-comments.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-comments.htm
new file mode 100644
index 0000000..fde360db
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-comments.htm
@@ -0,0 +1,27 @@
+<!doctype html>
+<html>
+  <head>
+    <title>EventSource: comment fest</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var longstring = (new Array(2*1024+1)).join("x"), // cannot make the string too long; causes timeout
+            message = encodeURI("data:1\r:\0\n:\r\ndata:2\n:" + longstring + "\rdata:3\n:data:fail\r:" + longstring + "\ndata:4\n"),
+            source = new EventSource("resources/message.py?message=" + message + "&newline=none")
+        source.onmessage = function(e) {
+          test.step(function() {
+            assert_equals("1\n2\n3\n4", e.data)
+            source.close()
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-data-before-final-empty-line.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-data-before-final-empty-line.htm
new file mode 100644
index 0000000..e429d7f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-data-before-final-empty-line.htm
@@ -0,0 +1,29 @@
+<!doctype html>
+<html>
+  <head>
+    <title>EventSource: a data before final empty line</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/message.py?newline=none&message=" + encodeURIComponent("retry:1000\ndata:test1\n\nid:test\ndata:test2"))
+        var count = 0;
+        source.onmessage = function(e) {
+          if (++count === 2) {
+            test.step(function() {
+              assert_equals(e.lastEventId, "", "lastEventId")
+              assert_equals(e.data, "test1", "data")
+              source.close()
+            })
+            test.done()
+          }
+        }
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-data.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-data.htm
new file mode 100644
index 0000000..a731355
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-data.htm
@@ -0,0 +1,34 @@
+<!doctype html>
+<html>
+  <head>
+    <title>EventSource: data field parsing</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/message.py?message=data%3A%0A%0Adata%0Adata%0A%0Adata%3Atest"),
+        counter = 0
+        source.onmessage = function(e) {
+          test.step(function() {
+            if(counter == 0) {
+              assert_equals("", e.data)
+            } else if(counter == 1) {
+              assert_equals("\n", e.data)
+            } else if(counter == 2) {
+              assert_equals("test", e.data)
+              source.close()
+              test.done()
+            } else {
+              assert_unreached()
+            }
+            counter++
+          })
+        }
+      })
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-event-empty.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-event-empty.htm
new file mode 100644
index 0000000..20a6d6d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-event-empty.htm
@@ -0,0 +1,25 @@
+<!doctype html>
+<html>
+  <head>
+    <title>EventSource: empty "event" field</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/message.py?message=event%3A%20%0Adata%3Adata")
+        source.onmessage = function(e) {
+          test.step(function() {
+            assert_equals("data", e.data)
+            this.close()
+          }, this)
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-event.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-event.htm
new file mode 100644
index 0000000..3c3267f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-event.htm
@@ -0,0 +1,27 @@
+<!doctype html>
+<html>
+  <head>
+    <title>EventSource: custom event name</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test(),
+          dispatchedtest = false
+      test.step(function() {
+        var source = new EventSource("resources/message.py?message=event%3Atest%0Adata%3Ax%0A%0Adata%3Ax")
+        source.addEventListener("test", function() { test.step(function() { dispatchedtest = true }) }, false)
+        source.onmessage = function() {
+          test.step(function() {
+            assert_true(dispatchedtest)
+            this.close()
+          }, this)
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-id-2.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-id-2.htm
new file mode 100644
index 0000000..ac521fc1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-id-2.htm
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>EventSource: Last-Event-ID (2)</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/last-event-id.py"),
+            counter = 0
+        source.onmessage = function(e) {
+          test.step(function() {
+            if(e.data == "hello" && counter == 0) {
+              counter++
+              assert_equals(e.lastEventId, "…")
+            } else if(counter == 1) {
+              counter++
+              assert_equals("…", e.data)
+              assert_equals("…", e.lastEventId)
+            } else if(counter == 2) {
+              counter++
+              assert_equals("…", e.data)
+              assert_equals("…", e.lastEventId)
+              source.close()
+              test.done()
+            } else
+              assert_unreached()
+          })
+        }
+      })
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-id.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-id.htm
new file mode 100644
index 0000000..19ada954
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-id.htm
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>EventSource: Last-Event-ID</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/last-event-id.py"),
+            seenhello = false
+        source.onmessage = function(e) {
+          test.step(function() {
+            if(e.data == "hello" && !seenhello) {
+              seenhello = true
+              assert_equals(e.lastEventId, "…")
+            } else if(seenhello) {
+              assert_equals("…", e.data)
+              assert_equals("…", e.lastEventId)
+              source.close()
+              test.done()
+            } else
+              assert_unreached()
+          })
+        }
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-parsing.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-parsing.htm
new file mode 100644
index 0000000..da221762
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-parsing.htm
@@ -0,0 +1,26 @@
+<!doctype html>
+<html>
+  <head>
+    <title>EventSource: field parsing</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var message = encodeURI("data:\0\ndata:  2\rData:1\ndata\0:2\ndata:1\r\0data:4\nda-ta:3\rdata_5\ndata:3\rdata:\r\n data:32\ndata:4\n"),
+            source = new EventSource("resources/message.py?message=" + message + "&newline=none")
+        source.onmessage = function(e) {
+          test.step(function() {
+            assert_equals(e.data, "\0\n 2\n1\n3\n\n4")
+            source.close()
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-retry-bogus.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-retry-bogus.htm
new file mode 100644
index 0000000..0cdf9b4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-retry-bogus.htm
@@ -0,0 +1,31 @@
+<!doctype html>
+<html>
+  <head>
+    <title>EventSource: "retry" field (bogus)</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test(document.title)
+      test.step(function() {
+        var timeoutms = 3000,
+            source = new EventSource("resources/message.py?message=retry%3A3000%0Aretry%3A1000x%0Adata%3Ax"),
+            opened = 0
+        source.onopen = function() {
+          test.step(function() {
+            if(opened == 0)
+              opened = new Date().getTime()
+            else {
+              var diff = (new Date().getTime()) - opened
+              assert_true(Math.abs(1 - diff / timeoutms) < 0.25) // allow 25% difference
+              this.close();
+              test.done()
+            }
+          }, this)
+        }
+      })
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-retry-empty.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-retry-empty.htm
new file mode 100644
index 0000000..2757486
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-retry-empty.htm
@@ -0,0 +1,25 @@
+<!doctype html>
+<html>
+  <head>
+    <title>EventSource: empty retry field</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/message.py?message=retry%0Adata%3Atest")
+        source.onmessage = function(e) {
+          test.step(function() {
+            assert_equals("test", e.data)
+            source.close()
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-retry.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-retry.htm
new file mode 100644
index 0000000..133794f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-retry.htm
@@ -0,0 +1,33 @@
+<!doctype html>
+<html>
+  <head>
+    <title>EventSource: "retry" field</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test(document.title);
+      test.step(function() {
+        var timeoutms = 3000,
+            timeoutstr = "03000", // 1536 in octal, but should be 3000
+            source = new EventSource("resources/message.py?message=retry%3A" + timeoutstr + "%0Adata%3Ax"),
+            opened = 0
+        source.onopen = function() {
+          test.step(function() {
+            if(opened == 0)
+              opened = new Date().getTime()
+            else {
+              var diff = (new Date().getTime()) - opened
+              assert_true(Math.abs(1 - diff / timeoutms) < 0.25) // allow 25% difference
+              this.close();
+              test.done()
+            }
+          }, this)
+        }
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-unknown.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-unknown.htm
new file mode 100644
index 0000000..3b6efd54
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-field-unknown.htm
@@ -0,0 +1,25 @@
+<!doctype html>
+<html>
+  <head>
+    <title>EventSource: unknown fields and parsing fun</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/message.py?message=data%3Atest%0A%20data%0Adata%0Afoobar%3Axxx%0Ajustsometext%0A%3Athisisacommentyay%0Adata%3Atest")
+        source.onmessage = function(e) {
+          test.step(function() {
+            assert_equals("test\n\ntest", e.data)
+            source.close()
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-leading-space.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-leading-space.htm
new file mode 100644
index 0000000..b70ba89c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-leading-space.htm
@@ -0,0 +1,26 @@
+<!doctype html>
+<html>
+  <head>
+    <title>EventSource: leading space</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/message.py?message=data%3A%09test%0Ddata%3A%20%0Adata%3Atest")
+        source.onmessage = function(e) {
+          test.step(function() {
+            assert_equals("\ttest\n\ntest", e.data)
+            source.close()
+          })
+          test.done()
+        }
+      })
+    </script>
+    <!-- also used a CR as newline once -->
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-mime-bogus.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-mime-bogus.htm
new file mode 100644
index 0000000..caf9cb4a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-mime-bogus.htm
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: bogus MIME type</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/message.py?mime=x%20bogus")
+        source.onmessage = function() {
+          test.step(function() {
+            assert_unreached()
+            source.close()
+          })
+          test.done()
+        }
+        source.onerror = function(e) {
+          test.step(function() {
+            assert_equals(this.readyState, this.CLOSED)
+            assert_false(e.hasOwnProperty('data'))
+            assert_false(e.bubbles)
+            assert_false(e.cancelable)
+            this.close()
+          }, this)
+          test.done()
+        }
+      })
+    </script>
+    <!-- This tests "fails the connection" as well as making sure a simple
+         event is dispatched and not a MessageEvent -->
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-mime-trailing-semicolon.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-mime-trailing-semicolon.htm
new file mode 100644
index 0000000..6bcac83
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-mime-trailing-semicolon.htm
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: MIME type with trailing ;</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/message.py?mime=text/event-stream%3B")
+        source.onopen = function() {
+          test.step(function() {
+            assert_equals(source.readyState, source.OPEN)
+            source.close()
+          })
+          test.done()
+        }
+        source.onerror = function() {
+          test.step(function() {
+            assert_unreached()
+            source.close()
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-mime-valid-bogus.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-mime-valid-bogus.htm
new file mode 100644
index 0000000..211f841
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-mime-valid-bogus.htm
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: incorrect valid MIME type</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/message.py?mime=text/x-bogus")
+        source.onmessage = function() {
+          test.step(function() {
+            assert_unreached()
+            source.close()
+          })
+          test.done()
+        }
+        source.onerror = function(e) {
+          test.step(function() {
+            assert_equals(source.readyState, source.CLOSED)
+            assert_false(e.hasOwnProperty('data'))
+            assert_false(e.bubbles)
+            assert_false(e.cancelable)
+          })
+          test.done()
+        }
+      })
+    </script>
+    <!-- This tests "fails the connection" as well as making sure a simple
+         event is dispatched and not a MessageEvent -->
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-newlines.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-newlines.htm
new file mode 100644
index 0000000..87d6a569
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-newlines.htm
@@ -0,0 +1,25 @@
+<!doctype html>
+<html>
+  <head>
+    <title>EventSource: newline fest</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/message.py?message=data%3Atest%0D%0Adata%0Adata%3Atest%0D%0A%0D&newline=none")
+        source.onmessage = function(e) {
+          test.step(function() {
+            assert_equals("test\n\ntest", e.data)
+            source.close()
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-null-character.html b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-null-character.html
new file mode 100644
index 0000000..0640530
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-null-character.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset=utf-8>
+    <title>EventSource: null character in response</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/message.py?message=data%3A%00%0A%0A")
+        source.onmessage = function(e) {
+          test.step(function() {
+            assert_equals("\x00", e.data)
+            source.close()
+          }, this)
+          test.done()
+        }
+        source.onerror = function() {
+          test.step(function() { assert_unreached() })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-utf-8.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-utf-8.htm
new file mode 100644
index 0000000..d7858a1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/format-utf-8.htm
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset=utf-8>
+    <title>EventSource: always UTF-8</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      async_test().step(function() {
+        var source = new EventSource("resources/message.py?mime=text/event-stream;charset=windows-1252&message=data%3Aok%E2%80%A6")
+        source.onmessage = this.step_func(function(e) {
+          assert_equals('ok…', e.data, 'decoded data')
+          source.close()
+          this.done()
+        })
+        source.onerror = this.step_func(function() {
+          assert_unreached("Got error event")
+        })
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/interfaces.html b/third_party/WebKit/LayoutTests/external/wpt/eventsource/interfaces.html
new file mode 100644
index 0000000..443d746
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/interfaces.html
@@ -0,0 +1,74 @@
+<!doctype html>
+<title>EventSource IDL tests</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/resources/WebIDLParser.js></script>
+<script src=/resources/idlharness.js></script>
+
+<h1>EventSource IDL tests</h1>
+<div id=log></div>
+
+<script type=text/plain>
+[Exposed=(Window,Worker)]
+interface EventTarget {
+  void addEventListener(DOMString type, EventListener? listener, optional (AddEventListenerOptions or boolean) options);
+  void removeEventListener(DOMString type, EventListener? listener, optional (EventListenerOptions or boolean) options);
+  boolean dispatchEvent(Event event);
+};
+callback interface EventListener {
+  void handleEvent(Event event);
+};
+dictionary EventListenerOptions {
+  boolean capture = false;
+};
+dictionary AddEventListenerOptions : EventListenerOptions {
+  boolean passive = false;
+  boolean once = false;
+};
+[Constructor(DOMString url, optional EventSourceInit eventSourceInitDict)]
+interface EventSource : EventTarget {
+  readonly attribute DOMString url;
+  readonly attribute boolean withCredentials;
+
+  // ready state
+  const unsigned short CONNECTING = 0;
+  const unsigned short OPEN = 1;
+  const unsigned short CLOSED = 2;
+  readonly attribute unsigned short readyState;
+
+  // networking
+           attribute EventHandler onopen;
+           attribute EventHandler onmessage;
+           attribute EventHandler onerror;
+  void close();
+};
+
+dictionary EventSourceInit {
+  boolean withCredentials = false;
+};
+
+[TreatNonCallableAsNull]
+callback EventHandlerNonNull = any (Event event);
+typedef EventHandlerNonNull? EventHandler;
+</script>
+<script>
+"use strict";
+var idlArray;
+setup(function() {
+  idlArray = new IdlArray();
+  [].forEach.call(document.querySelectorAll("script[type=text\\/plain]"), function(node) {
+    if (node.className == "untested") {
+      idlArray.add_untested_idls(node.textContent);
+    } else {
+      idlArray.add_idls(node.textContent);
+    }
+  });
+}, {explicit_done:true});
+window.onload = function() {
+  idlArray.add_objects({
+    EventSource: ['new EventSource("http://foo")'],
+  });
+  idlArray.test();
+  done();
+};
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/request-accept.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/request-accept.htm
new file mode 100644
index 0000000..6032cb6f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/request-accept.htm
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: Accept header</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var source = new EventSource("resources/accept.event_stream?pipe=sub")
+        source.onmessage = function(e) {
+          test.step(function() {
+            assert_equals(e.data, "text/event-stream")
+            this.close()
+          }, this)
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/request-cache-control.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/request-cache-control.htm
new file mode 100644
index 0000000..b396592
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/request-cache-control.htm
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: Cache-Control</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var crossdomain = location.href
+                    .replace('://', '://www2.')
+                    .replace(/\/[^\/]*$/, '/')
+
+      // running it twice to check whether it stays consistent
+      function cacheTest(runAgain, url) {
+        var test = async_test()
+        test.step(function() {
+          var source = new EventSource(url)
+          source.onmessage = function(e) {
+            test.step(function() {
+              assert_equals(e.data, "no-cache")
+              this.close()
+              if(runAgain)
+                cacheTest(false, url) // this nests tests
+            }, this)
+            test.done()
+          }
+        })
+      }
+
+      cacheTest(true, "resources/cache-control.event_stream?pipe=sub")
+      cacheTest(true, crossdomain + "resources/cors.py?run=cache-control")
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/request-credentials.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/request-credentials.htm
new file mode 100644
index 0000000..c3c178a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/request-credentials.htm
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: credentials</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var crossdomain = location.href
+                    .replace('://', '://www2.')
+                    .replace(/\/[^\/]*$/, '/')
+
+      function testCookie(desc, success, props, id) {
+        var test = async_test(document.title + ': credentials ' + desc)
+        test.step(function() {
+          var source = new EventSource(crossdomain + "resources/cors-cookie.py?ident=" + id, props)
+
+          source.onmessage = test.step_func(function(e) {
+            if(e.data.indexOf("first") == 0) {
+              assert_equals(e.data, "first NO_COOKIE", "cookie status")
+            }
+            else if(e.data.indexOf("second") == 0) {
+              if (success)
+                assert_equals(e.data, "second COOKIE", "cookie status")
+              else
+                assert_equals(e.data, "second NO_COOKIE", "cookie status")
+
+              source.close()
+              test.done()
+            }
+            else {
+              assert_unreached("unrecognized data returned: " + e.data)
+              source.close()
+              test.done()
+            }
+          })
+        })
+      }
+
+      testCookie('enabled',  true,  { withCredentials: true  }, '1_' + new Date().getTime())
+      testCookie('disabled', false, { withCredentials: false }, '2_' + new Date().getTime())
+      testCookie('default',  false, { },                        '3_' + new Date().getTime())
+
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/request-redirect.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/request-redirect.htm
new file mode 100644
index 0000000..794c878
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/request-redirect.htm
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: redirect</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      function redirectTest(status) {
+        var test = async_test(document.title + " (" + status +")")
+        test.step(function() {
+          var source = new EventSource("/common/redirect.py?location=/eventsource/resources/message.py&status=" + status)
+          source.onopen = function() {
+            test.step(function() {
+              assert_equals(this.readyState, this.OPEN)
+              this.close()
+            }, this)
+            test.done()
+          }
+          source.onerror = function() {
+            test.step(function() { assert_unreached() })
+            test.done()
+          }
+        })
+      }
+
+      redirectTest("301")
+      redirectTest("302")
+      redirectTest("303")
+      redirectTest("307")
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/request-status-error.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/request-status-error.htm
new file mode 100644
index 0000000..d881a4d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/request-status-error.htm
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>EventSource: incorrect HTTP status code</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      function statusTest(status) {
+        var test = async_test(document.title + " (" + status +")")
+        test.step(function() {
+          var source = new EventSource("resources/status-error.py?status=" + status)
+          source.onmessage = function() {
+            test.step(function() {
+              assert_unreached()
+            })
+            test.done()
+          }
+          source.onerror = function() {
+            test.step(function() {
+              assert_equals(this.readyState, this.CLOSED)
+            }, this)
+            test.done()
+          }
+        })
+      }
+      statusTest("204")
+      statusTest("205")
+      statusTest("210")
+      statusTest("299")
+      statusTest("404")
+      statusTest("410")
+      statusTest("503")
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/accept.event_stream b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/accept.event_stream
new file mode 100644
index 0000000..24da548
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/accept.event_stream
@@ -0,0 +1,2 @@
+data: {{headers[accept]}}
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/cache-control.event_stream b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/cache-control.event_stream
new file mode 100644
index 0000000..aa9f2d6c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/cache-control.event_stream
@@ -0,0 +1,2 @@
+data: {{headers[cache-control]}}
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/cors-cookie.py b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/cors-cookie.py
new file mode 100644
index 0000000..7deaff49
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/cors-cookie.py
@@ -0,0 +1,31 @@
+from datetime import datetime
+
+def main(request, response):
+    last_event_id = request.headers.get("Last-Event-Id", "")
+    ident = request.GET.first('ident', "test")
+    cookie = "COOKIE" if ident in request.cookies else "NO_COOKIE"
+    origin = request.GET.first('origin', request.headers["origin"])
+    credentials = request.GET.first('credentials', 'true')
+
+    headers = []
+
+    if origin != 'none':
+        headers.append(("Access-Control-Allow-Origin", origin));
+
+    if credentials != 'none':
+        headers.append(("Access-Control-Allow-Credentials", credentials));
+
+    if last_event_id == '':
+        headers.append(("Content-Type", "text/event-stream"))
+        response.set_cookie(ident, "COOKIE")
+        data = "id: 1\nretry: 200\ndata: first %s\n\n" % cookie
+    elif last_event_id == '1':
+        headers.append(("Content-Type", "text/event-stream"))
+        long_long_time_ago = datetime.now().replace(year=2001, month=7, day=27)
+        response.set_cookie(ident, "COOKIE", expires=long_long_time_ago)
+        data = "id: 2\ndata: second %s\n\n" % cookie
+    else:
+        headers.append(("Content-Type", "stop"))
+        data = "data: " + last_event_id + cookie + "\n\n";
+
+    return headers, data
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/cors.py b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/cors.py
new file mode 100644
index 0000000..d01596c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/cors.py
@@ -0,0 +1,34 @@
+import os
+from wptserve import pipes
+
+def run_other(request, response, path):
+    #This is a terrible hack
+    environ = {"__file__": path}
+    execfile(path, environ, environ)
+    rv = environ["main"](request, response)
+    return rv
+
+def main(request, response):
+    origin = request.GET.first("origin", request.headers["origin"])
+    credentials = request.GET.first("credentials", "true")
+
+    response.headers.update([("Access-Control-Allow-Origin", origin),
+                             ("Access-Control-Allow-Credentials", credentials)])
+
+    handler = request.GET.first('run')
+    if handler in ["status-reconnect",
+                   "message",
+                   "redirect",
+                   "cache-control"]:
+        if handler == "cache-control":
+            response.headers.set("Content-Type", "text/event-stream")
+            rv = open(os.path.join(request.doc_root, "eventsource", "resources", "cache-control.event_stream"), "r").read()
+            response.content = rv
+            pipes.sub(request, response)
+            return
+        elif handler == "redirect":
+            return run_other(request, response, os.path.join(request.doc_root, "common", "redirect.py"))
+        else:
+            return run_other(request, response, os.path.join(os.path.split(__file__)[0], handler + ".py"))
+    else:
+        return
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/init.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/init.htm
new file mode 100644
index 0000000..7c56d88
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/init.htm
@@ -0,0 +1,9 @@
+<!doctype html>
+<html>
+  <head>
+    <title>support init file</title>
+  </head>
+  <body>
+    <script> parent.init() </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/last-event-id.py b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/last-event-id.py
new file mode 100644
index 0000000..4306fba
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/last-event-id.py
@@ -0,0 +1,11 @@
+ # -*- coding: utf-8 -*-
+
+def main(request, response):
+  response.headers.set("Content-Type", "text/event-stream")
+  last_event_id = request.headers.get('Last-Event-ID', None)
+
+  if(last_event_id):
+      return "data: " + last_event_id + "\n\n"
+  else:
+    return "id: …\nretry: 200\ndata: hello\n\n"
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/message.py b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/message.py
new file mode 100644
index 0000000..6d04b1f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/message.py
@@ -0,0 +1,14 @@
+import time
+
+def main(request, response):
+    mime = request.GET.first("mime", "text/event-stream")
+    message = request.GET.first("message", "data: data");
+    newline = "" if request.GET.first("newline", None) == "none" else "\n\n";
+    sleep = int(request.GET.first("sleep", "0"))
+
+    headers = [("Content-Type", mime)]
+    body = message + newline + "\n"
+    if sleep != 0:
+        time.sleep(sleep/1000)
+
+    return headers, body
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/message2.py b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/message2.py
new file mode 100644
index 0000000..ce339d92
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/message2.py
@@ -0,0 +1,35 @@
+import time
+
+def main(request, response):
+    response.headers.set('Content-Type', 'text/event-stream')
+    response.headers.set('Cache-Control', 'no-cache')
+
+    response.explicit_flush = True
+    response.write_status_headers()
+
+    while True:
+        response.writer.write("data:msg")
+        response.writer.write("\n")
+        response.writer.write("data: msg")
+        response.writer.write("\n\n")
+
+        response.writer.write(":")
+        response.writer.write("\n")
+
+        response.writer.write("falsefield:msg")
+        response.writer.write("\n\n")
+
+        response.writer.write("falsefield:msg")
+        response.writer.write("\n")
+
+        response.writer.write("Data:data")
+        response.writer.write("\n\n")
+
+        response.writer.write("data")
+        response.writer.write("\n\n")
+
+        response.writer.write("data:end")
+        response.writer.write("\n\n")
+
+        response.writer.flush()
+        time.sleep(2)
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/reconnect-fail.py b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/reconnect-fail.py
new file mode 100644
index 0000000..80a247d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/reconnect-fail.py
@@ -0,0 +1,24 @@
+def main(request, response):
+    name = "recon_fail_" + request.GET.first("id")
+
+    headers = [("Content-Type", "text/event-stream")]
+    cookie = request.cookies.first(name, None)
+    state = cookie.value if cookie is not None else None
+
+    if state == 'opened':
+        status = (200, "RECONNECT")
+        response.set_cookie(name, "reconnected");
+        body = "data: reconnected\n\n";
+
+    elif state == 'reconnected':
+        status = (204, "NO CONTENT (CLOSE)")
+        response.delete_cookie(name);
+        body = "data: closed\n\n" # Will never get through
+
+    else:
+        status = (200, "OPEN");
+        response.set_cookie(name, "opened");
+        body = "retry: 2\ndata: opened\n\n";
+
+    return status, headers, body
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/status-error.py b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/status-error.py
new file mode 100644
index 0000000..5eaedcd
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/status-error.py
@@ -0,0 +1,15 @@
+def main(request, response):
+  status = (request.GET.first("status", "404"), "HAHAHAHA")
+  headers = [("Content-Type", "text/event-stream")]
+
+  # According to RFC7231, HTTP responses bearing status code 204 or 205 must
+  # not specify a body. The expected browser behavior for this condition is not
+  # currently defined--see the following for further discussion:
+  #
+  # https://github.com/w3c/web-platform-tests/pull/5227
+  if status[0] in ["204", "205"]:
+      body = ""
+  else:
+      body = "data: data\n\n"
+
+  return status, headers, body
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/status-reconnect.py b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/status-reconnect.py
new file mode 100644
index 0000000..16c6502
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/resources/status-reconnect.py
@@ -0,0 +1,21 @@
+def main(request, response):
+    status_code = request.GET.first("status", "204")
+    name = request.GET.first("id", status_code)
+
+    headers = [("Content-Type", "text/event-stream")]
+
+    cookie_name = "request" + name
+
+    if request.cookies.first(cookie_name, "") == status_code:
+        status = 200
+        response.delete_cookie(cookie_name)
+        body = "data: data\n\n"
+    else:
+        response.set_cookie(cookie_name, status_code);
+        status = (int(status_code), "TEST")
+        body = "retry: 2\n"
+        if "ok_first" in request.GET:
+            body += "data: ok\n\n"
+
+    return status, headers, body
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-close.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-close.htm
new file mode 100644
index 0000000..0a0bdc7b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-close.htm
@@ -0,0 +1,39 @@
+<!--
+onconnect = function(e) {
+try {
+  var port = e.ports[0]
+  var source = new EventSource("../resources/message.py")
+  source.onopen = function(e) {
+    this.close()
+    port.postMessage([true, this.readyState])
+  }
+} catch(e) {
+  port.postMessage([false, String(e)])
+}
+}
+/*-->
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>shared worker - EventSource: close()</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test();
+      test.step(function() {
+        var worker = new SharedWorker('#')
+        worker.port.onmessage = function(e) {
+          test.step(function() {
+            assert_true(e.data[0], e.data[1])
+            assert_equals(e.data[1], EventSource.CLOSED, 'this.readyState')
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+<!--*/ //-->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-constructor-non-same-origin-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-constructor-non-same-origin-expected.txt
new file mode 100644
index 0000000..f2c4f62
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-constructor-non-same-origin-expected.txt
@@ -0,0 +1,9 @@
+This is a testharness.js-based test.
+FAIL shared worker - EventSource: constructor (act as if there is a network error) (http://example.not) assert_equals: source.readyState expected 2 but got 0
+FAIL shared worker - EventSource: constructor (act as if there is a network error) (https://example.not/test) assert_equals: source.readyState expected 2 but got 0
+PASS shared worker - EventSource: constructor (act as if there is a network error) (ftp://example.not) 
+PASS shared worker - EventSource: constructor (act as if there is a network error) (about:blank) 
+PASS shared worker - EventSource: constructor (act as if there is a network error) (mailto:whatwg@awesome.example) 
+PASS shared worker - EventSource: constructor (act as if there is a network error) (javascript:alert('FAIL')) 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-constructor-non-same-origin.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-constructor-non-same-origin.htm
new file mode 100644
index 0000000..277fbd4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-constructor-non-same-origin.htm
@@ -0,0 +1,52 @@
+<!--
+onconnect = function(e) {
+try {
+  var port = e.ports[0]
+  var url = decodeURIComponent(location.hash.substr(1))
+  var source = new EventSource(url)
+  source.onerror = function(e) {
+    port.postMessage([true, this.readyState, 'data' in e])
+    this.close();
+  }
+} catch(e) {
+  port.postMessage([false, String(e)])
+}
+}
+/*-->
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>shared worker - EventSource: constructor (act as if there is a network error)</title>
+    <meta name=timeout content=long>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      function fetchFail(url) {
+        var test = async_test(document.title + " (" + url + ")", { timeout: 20000 })
+        test.step(function() {
+          var worker = new SharedWorker('#'+encodeURIComponent(url))
+          worker.port.onmessage = function(e) {
+            test.step(function() {
+              assert_true(e.data[0], e.data[1])
+              assert_equals(e.data[1], EventSource.CLOSED, 'source.readyState')
+              assert_false(e.data[2], "'data' in e");
+            })
+            test.done()
+          }
+        })
+      }
+      fetchFail("http://example.not")
+      fetchFail("https://example.not/test")
+      fetchFail("ftp://example.not")
+      fetchFail("about:blank")
+      fetchFail("mailto:whatwg@awesome.example")
+      fetchFail("javascript:alert('FAIL')")
+    </script>
+    <!-- This tests "fails the connection" as well as making sure a simple
+         event is dispatched and not a MessageEvent -->
+  </body>
+</html>
+<!--*/ //-->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-constructor-url-bogus-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-constructor-url-bogus-expected.txt
new file mode 100644
index 0000000..be9e8f42
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-constructor-url-bogus-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL shared worker - EventSource: constructor (invalid URL) assert_true: no exception thrown expected true got false
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-constructor-url-bogus.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-constructor-url-bogus.htm
new file mode 100644
index 0000000..88fa21e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-constructor-url-bogus.htm
@@ -0,0 +1,37 @@
+<!--
+onconnect = function(e) {
+try {
+  var port = e.ports[0]
+  var source = new EventSource("http://this is invalid/")
+  port.postMessage([false, 'no exception thrown'])
+  source.close()
+} catch(e) {
+  port.postMessage([true, e.code])
+}
+}
+/*-->
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>shared worker - EventSource: constructor (invalid URL)</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var worker = new SharedWorker('#')
+        worker.port.onmessage = function(e) {
+          test.step(function() {
+            assert_true(e.data[0], e.data[1])
+            assert_equals(e.data[1], DOMException.SYNTAX_ERR, 'e.code')
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+<!--*/ //-->
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-eventtarget.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-eventtarget.htm
new file mode 100644
index 0000000..f5f9439d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-eventtarget.htm
@@ -0,0 +1,40 @@
+<!--
+onconnect = function(e) {
+try {
+  var port = e.ports[0]
+  var source = new EventSource("../resources/message.py")
+  source.addEventListener("message", listener, false)
+  function listener(e) {
+    port.postMessage([true, e.data])
+    this.close()
+  }
+} catch(e) {
+  port.postMessage([false, String(e)])
+}
+}
+/*-->
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>shared worker - EventSource: addEventListener()</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var worker = new SharedWorker('#')
+        worker.port.onmessage = function(e) {
+          test.step(function() {
+            assert_true(e.data[0], e.data[1])
+            assert_equals(e.data[1], 'data', 'e.data')
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+<!--*/ //-->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-onmesage.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-onmesage.htm
new file mode 100644
index 0000000..82c3ce7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-onmesage.htm
@@ -0,0 +1,39 @@
+<!--
+onconnect = function(e) {
+try {
+  var port = e.ports[0]
+  var source = new EventSource("../resources/message.py")
+  source.onmessage = function(e) {
+    port.postMessage([true, e.data])
+    this.close()
+  }
+} catch(e) {
+  port.postMessage([false, String(e)])
+}
+}
+/*-->
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>shared worker - EventSource: onmessage</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var worker = new SharedWorker('#')
+        worker.port.onmessage = function(e) {
+          test.step(function() {
+            assert_true(e.data[0], e.data[1])
+            assert_equals(e.data[1], "data", 'e.data')
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+<!--*/ //-->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-onopen.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-onopen.htm
new file mode 100644
index 0000000..2546781
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-onopen.htm
@@ -0,0 +1,42 @@
+<!--
+onconnect = function(e) {
+try {
+  var port = e.ports[0]
+  var source = new EventSource("../resources/message.py")
+  source.onopen = function(e) {
+    port.postMessage([true, source.readyState, 'data' in e, e.bubbles, e.cancelable])
+    this.close()
+  }
+} catch(e) {
+  port.postMessage([false, String(e)])
+}
+}
+/*-->
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>shared worker - EventSource: onopen (announcing the connection)</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test()
+      test.step(function() {
+        var worker = new SharedWorker('#')
+        worker.port.onmessage = function(e) {
+          test.step(function() {
+            assert_true(e.data[0], e.data[1])
+            assert_equals(e.data[1], EventSource.OPEN, 'source.readyState')
+            assert_false(e.data[2], "'data' in e")
+            assert_false(e.data[3], 'e.bubbles')
+            assert_false(e.data[4], 'e.calcelable')
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+<!--*/ //-->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-prototype.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-prototype.htm
new file mode 100644
index 0000000..27d51a85
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-prototype.htm
@@ -0,0 +1,39 @@
+<!--
+onconnect = function(e) {
+try {
+  var port = e.ports[0]
+  EventSource.prototype.ReturnTrue = function() { return true }
+  var source = new EventSource("../resources/message.py")
+  port.postMessage([true, source.ReturnTrue(), 'EventSource' in self])
+  source.close()
+} catch(e) {
+  port.postMessage([false, String(e)])
+}
+}
+/*-->
+<!DoCtYpE hTMl>
+<html>
+  <heAd>
+    <title>shared worker - EventSource: prototype et al</tiTle>
+    <scrIpt src="/resources/testharness.js"></scripT>
+    <scriPt src="/resources/testharnessreport.js"></Script>
+  </heaD>
+  <boDy>
+    <diV iD="log"></Div>
+    <sCript>
+      var test = async_test();
+      test.step(function() {
+        var worker = new SharedWorker('#')
+        worker.port.onmessage = function(e) {
+          test.step(function() {
+            assert_true(e.data[0], e.data[1])
+            assert_true(e.data[1], 'source.ReturnTrue()')
+            assert_true(e.data[2], "'EventSource' in self")
+          })
+          test.done()
+        }
+      })
+    </scrIpt>
+  </bOdy>
+</htMl>
+<!--*/ //-->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-url.htm b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-url.htm
new file mode 100644
index 0000000..0491085
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/eventsource/shared-worker/eventsource-url.htm
@@ -0,0 +1,38 @@
+<!--
+onconnect = function(e) {
+try {
+  var port = e.ports[0]
+  var source = new EventSource("../resources/message.py")
+  port.postMessage([true, source.url])
+  source.close()
+} catch(e) {
+  port.postMessage([false, String(e)])
+}
+}
+/*-->
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>shared worker - EventSource: url</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test();
+      test.step(function() {
+        var url = "resources/message.py"
+        var worker = new SharedWorker('#')
+        worker.port.onmessage = function(e) {
+          test.step(function() {
+            assert_true(e.data[0], e.data[1]);
+            assert_equals(e.data[1].substr(-(url.length)), url)
+          })
+          test.done()
+        }
+      })
+    </script>
+  </body>
+</html>
+<!--*/ //-->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/generic-sensor-tests.js b/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/generic-sensor-tests.js
new file mode 100644
index 0000000..222bde95
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/generic-sensor-tests.js
@@ -0,0 +1,186 @@
+let unreached = event => {
+    assert_unreached(event.error.name + ":" + event.error.message);
+};
+
+let properties = {
+    'AmbientLightSensor' : ['timestamp', 'illuminance'],
+    'Accelerometer' : ['timestamp', 'x', 'y', 'z'],
+    'Gyroscope' : ['timestamp', 'x', 'y', 'z'],
+    'Magnetometer' : ['timestamp', 'x', 'y', 'z']
+};
+
+function assert_reading_not_null(sensor) {
+  for (let property in properties[sensor.constructor.name]) {
+    let propertyName = properties[sensor.constructor.name][property];
+    assert_not_equals(sensor[propertyName], null);
+  }
+}
+
+function assert_reading_null(sensor) {
+  for (let property in properties[sensor.constructor.name]) {
+    let propertyName = properties[sensor.constructor.name][property];
+    assert_equals(sensor[propertyName], null);
+  }
+}
+
+function reading_to_array(sensor) {
+  let arr = new Array();
+  for (let property in properties[sensor.constructor.name]) {
+    let propertyName = properties[sensor.constructor.name][property];
+    arr[property] = sensor[propertyName];
+  }
+  return arr;
+}
+
+function runGenericSensorTests(sensorType) {
+  async_test(t => {
+    let sensor = new sensorType();
+    sensor.onchange = t.step_func_done(() => {
+      assert_reading_not_null(sensor);
+      sensor.stop();
+      assert_reading_null(sensor);
+    });
+    sensor.onerror = t.step_func_done(unreached);
+    sensor.start();
+  }, "Test that 'onchange' is called and sensor reading is valid");
+
+  async_test(t => {
+    let sensor1 = new sensorType();
+    let sensor2 = new sensorType();
+    sensor1.onactivate = t.step_func_done(() => {
+      // Reading values are correct for both sensors.
+      assert_reading_not_null(sensor1);
+      assert_reading_not_null(sensor2);
+
+      //After first sensor stops its reading values are null,
+      //reading values for the second sensor remains
+      sensor1.stop();
+      assert_reading_null(sensor1);
+      assert_reading_not_null(sensor2);
+      sensor2.stop();
+      assert_reading_null(sensor2);
+    });
+    sensor1.onerror = t.step_func_done(unreached);
+    sensor2.onerror = t.step_func_done(unreached);
+    sensor1.start();
+    sensor2.start();
+  }, "sensor reading is correct");
+
+  async_test(t => {
+    let sensor = new sensorType();
+    let cachedTimeStamp1;
+    sensor.onactivate = () => {
+      cachedTimeStamp1 = sensor.timestamp;
+    };
+    sensor.onerror = t.step_func_done(unreached);
+    sensor.start();
+    t.step_timeout(() => {
+      sensor.onchange = t.step_func_done(() => {
+        //sensor.timestamp changes.
+        let cachedTimeStamp2 = sensor.timestamp;
+        assert_greater_than(cachedTimeStamp2, cachedTimeStamp1);
+        sensor.stop();
+      });
+    }, 1000);
+  }, "sensor timestamp is updated when time passes");
+
+  async_test(t => {
+    let sensor = new sensorType();
+    sensor.onerror = t.step_func_done(unreached);
+    assert_false(sensor.activated);
+    sensor.onchange = t.step_func_done(() => {
+      assert_true(sensor.activated);
+      sensor.stop();
+      assert_false(sensor.activated);
+    });
+    sensor.start();
+    assert_false(sensor.activated);
+  }, "Test that sensor can be successfully created and its states are correct.");
+
+  test(() => {
+    let sensor, start_return;
+    sensor = new sensorType();
+    sensor.onerror = unreached;
+    start_return = sensor.start();
+    assert_equals(start_return, undefined);
+    sensor.stop();
+  }, "sensor.start() returns undefined");
+
+  test(() => {
+    try {
+      let sensor = new sensorType();
+      sensor.onerror = unreached;
+      sensor.start();
+      sensor.start();
+      assert_false(sensor.activated);
+      sensor.stop();
+    } catch (e) {
+       assert_unreached(e.name + ": " + e.message);
+    }
+  }, "no exception is thrown when calling start() on already started sensor");
+
+  test(() => {
+    let sensor, stop_return;
+    sensor = new sensorType();
+    sensor.onerror = unreached;
+    sensor.start();
+    stop_return = sensor.stop();
+    assert_equals(stop_return, undefined);
+  }, "sensor.stop() returns undefined");
+
+  test(() => {
+    try {
+      let sensor = new sensorType();
+      sensor.onerror = unreached;
+      sensor.start();
+      sensor.stop();
+      sensor.stop();
+      assert_false(sensor.activated);
+    } catch (e) {
+       assert_unreached(e.name + ": " + e.message);
+    }
+  }, "no exception is thrown when calling stop() on already stopped sensor");
+
+  async_test(t => {
+    window.onmessage = t.step_func(e => {
+      assert_equals(e.data, "SecurityError");
+      t.done();
+    });
+  }, "throw a 'SecurityError' when firing sensor readings within iframes");
+
+  async_test(t => {
+    let sensor = new sensorType();
+    sensor.onactivate = t.step_func(() => {
+      assert_reading_not_null(sensor);
+      let cachedSensor1 = reading_to_array(sensor);
+      let win = window.open('', '_blank');
+      t.step_timeout(() => {
+        let cachedSensor2 = reading_to_array(sensor);
+        win.close();
+        sensor.stop();
+        assert_array_equals(cachedSensor1, cachedSensor2);
+        t.done();
+      }, 1000);
+    });
+    sensor.onerror = t.step_func_done(unreached);
+    sensor.start();
+  }, "sensor readings can not be fired on the background tab");
+}
+
+function runGenericSensorInsecureContext(sensorType) {
+  test(() => {
+    assert_throws('SecurityError', () => { new sensorType(); });
+  }, "throw a 'SecurityError' when construct sensor in an insecure context");
+}
+
+function runGenericSensorOnerror(sensorType) {
+  async_test(t => {
+    let sensor = new sensorType();
+    sensor.onactivate = t.step_func_done(assert_unreached);
+    sensor.onerror = t.step_func_done(event => {
+      assert_false(sensor.activated);
+      assert_equals(event.error.name, 'NotReadableError');
+    });
+    sensor.start();
+  }, "'onerror' event is fired when sensor is not supported");
+}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/idlharness-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/idlharness-expected.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/idlharness-expected.txt
@@ -0,0 +1 @@
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/idlharness.html b/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/idlharness.html
new file mode 100644
index 0000000..07a43cf
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/generic-sensor/idlharness.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Generic Sensor IDL tests</title>
+<link rel="author" title="Tobie Langel" href="http://www.codespeaks.com">
+<link rel="help" href="http://www.w3.org/TR/generic-sensor/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/WebIDLParser.js"></script>
+<script src="/resources/idlharness.js"></script>
+<style>
+  pre {
+    display: none;
+  }
+</style>
+<div id="log"></div>
+
+<pre id="idl">
+interface Event {
+};
+
+interface Error {
+};
+
+dictionary EventInit {
+};
+
+interface Sensor : EventTarget {
+  readonly attribute SensorState state;
+  readonly attribute SensorReading? reading;
+  void start();
+  void stop();
+  attribute EventHandler onchange;
+  attribute EventHandler onstatechange;
+  attribute EventHandler onerror;
+};
+
+dictionary SensorOptions {
+  double? frequency;
+};
+
+enum SensorState {
+  "idle",
+  "activating",
+  "active",
+  "errored"
+};
+
+interface SensorReading {
+  readonly attribute DOMHighResTimeStamp timeStamp;
+};
+
+[Constructor(DOMString type, SensorReadingEventInit eventInitDict)]
+interface SensorReadingEvent : Event {
+  readonly attribute SensorReading reading;
+};
+
+dictionary SensorReadingEventInit : EventInit {
+  SensorReading reading;
+};
+</pre>
+
+<pre id="generic-idl">
+[Constructor(DOMString type, SensorErrorEventInit errorEventInitDict)]
+interface SensorErrorEvent : Event {
+  readonly attribute Error error;
+};
+
+dictionary SensorErrorEventInit : EventInit {
+  Error error;
+};
+</pre>
+
+<script>
+(function() {
+  "use strict";
+  var idl_array = new IdlArray();
+  idl_array.add_untested_idls(document.getElementById('idl').textContent);
+  idl_array.add_idls(document.getElementById('generic-idl').textContent);
+
+  idl_array.add_objects({
+    SensorErrorEvent: ['new SensorErrorEvent({ error: new TypeError("Boom!") });']
+  });
+
+  idl_array.test();
+})();
+</script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/PositionOptions.https.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/PositionOptions.https.html
new file mode 100644
index 0000000..6aaf56d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/PositionOptions.https.html
@@ -0,0 +1,100 @@
+<!DOCTYPE HTML>
+<meta charset="utf-8">
+<title>Geolocation Test: PositionOptions tests</title>
+<link rel="help" href="http://www.w3.org/TR/geolocation-API/#position_options_interface">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src='support.js'></script>
+
+<p>Clear all Geolocation permissions before running this test. If prompted for permission, please allow.</p>
+<div id="log"></div>
+
+<script>
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00123
+test(function() {
+  try {
+    geo.getCurrentPosition(dummyFunction, null, {enableHighAccuracy: "boom"});
+    geo.getCurrentPosition(dummyFunction, null, {enableHighAccuracy: 321});
+    geo.getCurrentPosition(dummyFunction, null, {enableHighAccuracy: -Infinity});
+    geo.getCurrentPosition(dummyFunction, null, {enableHighAccuracy: {foo: 5}});
+  } catch(e) {
+    assert_unreached('An exception was thrown unexpectedly: ' + e.message);
+  }
+}, 'Call getCurrentPosition with wrong type for enableHighAccuracy. No exception expected.');
+
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00124
+test(function() {
+  try {
+    geo.watchPosition(dummyFunction, null, {enableHighAccuracy: "boom"});
+    geo.watchPosition(dummyFunction, null, {enableHighAccuracy: 321});
+    geo.watchPosition(dummyFunction, null, {enableHighAccuracy: -Infinity});
+    geo.watchPosition(dummyFunction, null, {enableHighAccuracy: {foo: 5}});
+  } catch(e) {
+    assert_unreached('An exception was thrown unexpectedly: ' + e.message);
+  }
+}, 'Call watchPosition with wrong type for enableHighAccuracy. No exception expected.');
+
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00086, 00088, 00091 and 00092
+test(function() {
+  var t86 = async_test('Set timeout and maximumAge to 0, check that timeout error raised (getCurrentPosition)'),
+      t88 = async_test('Set timeout and maximumAge to 0, check that timeout error raised (watchPosition)'),
+      t91 = async_test('Check that a negative timeout value is equivalent to a 0 timeout value (getCurrentLocation)'),
+      t92 = async_test('Check that a negative timeout value is equivalent to a 0 timeout value (watchPosition)');
+
+  try {
+    geo.getCurrentPosition(
+        t86.unreached_func('A success callback was invoked unexpectedly'),
+        t86.step_func_done(function(err) {
+          assert_equals(err.code, err.TIMEOUT);
+        }),
+        {timeout: 0, maximumAge: 0}
+    );
+  } catch(e) {
+    t86.step(function() {
+      assert_unreached('An exception was thrown unexpectedly: ' + e.message);
+    });
+  }
+
+  try {
+    geo.watchPosition(
+        t88.unreached_func('A success callback was invoked unexpectedly'),
+        t88.step_func_done(function(err) {
+          assert_equals(err.code, err.TIMEOUT);
+        }),
+        {timeout: 0, maximumAge: 0}
+    );
+  } catch(e) {
+    t88.step(function() {
+      assert_unreached('An exception was thrown unexpectedly: ' + e.message);
+    });
+  }
+
+  try {
+    geo.getCurrentPosition(
+        t91.unreached_func('A success callback was invoked unexpectedly'),
+        t91.step_func_done(function(err) {
+          assert_equals(err.code, err.TIMEOUT);
+        }),
+        {timeout:-1, maximumAge: 0}
+    );
+  } catch(e) {
+    t91.step(function() {
+      assert_unreached('An exception was thrown unexpectedly: ' + e.message);
+    });
+  }
+
+  try {
+    geo.watchPosition(
+        t92.unreached_func('A success callback was invoked unexpectedly'),
+        t92.step_func_done(function(err) {
+          assert_equals(err.code, err.TIMEOUT);
+        }),
+        {timeout: -1, maximumAge: 0}
+    );
+  } catch(e) {
+    t92.step(function() {
+      assert_unreached('An exception was thrown unexpectedly: ' + e.message);
+    });
+  }
+}, 'PositionOptions tests');
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/clearWatch_TypeError.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/clearWatch_TypeError.html
new file mode 100644
index 0000000..14b861b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/clearWatch_TypeError.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML>
+<meta charset='utf-8'>
+<title>Geolocation Test: clearWatch TypeError tests</title>
+<link rel='help' href='http://www.w3.org/TR/geolocation-API/#clear-watch'>
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src='support.js'></script>
+
+<div id='log'></div>
+
+<script>
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00080
+test(function() {
+  try {
+    geo.clearWatch(-1);
+    geo.clearWatch(0);
+    geo.clearWatch(1);
+  } catch(e) {
+    assert_unreached('An exception was thrown unexpectedly: ' + e.message);
+  }
+}, 'Test that calling clearWatch with invalid watch IDs does not cause an exception');
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_IDL.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_IDL.https-expected.txt
new file mode 100644
index 0000000..77cb28c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_IDL.https-expected.txt
@@ -0,0 +1,9 @@
+This is a testharness.js-based test.
+FAIL getCurrentPosition success callback tests assert_unreached: Error callback called in error Reached unreachable code
+PASS getCurrentPosition error callback tests 
+PASS PositionError toString 
+PASS PERMISSION_DENIED value is 1 
+PASS POSITION_UNAVAILABLE is 2 
+PASS TIMEOUT value is 3 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_IDL.https.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_IDL.https.html
new file mode 100644
index 0000000..2a85505
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_IDL.https.html
@@ -0,0 +1,152 @@
+<!DOCTYPE HTML>
+<meta charset="utf-8">
+<title>Geolocation Test: getCurrentPosition tests</title>
+<link rel="help" href="http://www.w3.org/TR/geolocation-API/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<p>Clear all Geolocation permissions before running this test. If prompted for permission, please allow.</p>
+<div id="log"></div>
+<script>
+var geo, success, fail;
+
+setup(function() {
+  geo = navigator.geolocation;
+}, {explicit_done: true});
+
+function successCallback(position)
+{
+  var ii, oldval;
+
+  /*
+    [NoInterfaceObject]
+    interface Position {
+      readonly attribute Coordinates coords;
+      readonly attribute DOMTimeStamp timestamp;
+    };
+  */
+
+  test(function() {
+    assert_equals(position.toString(), "[object Position]",
+        "Position.toString should result in '[object Position]' was: " + position.toString());
+  }, "Position toString");
+
+  test(function() {
+    assert_equals(position.coords.toString(), "[object Coordinates]",
+        "position.coords.toString should result in '[object Coordinates]' was: " + position.coords.toString());
+  }, "Position.coordinates toString");
+
+  test(function() {
+    assert_equals(typeof(position.timestamp), "number",
+        "Position.timestamp should be of type 'number' was: " + typeof(position.timestamp));
+  }, "Position.timestamp is type number");
+
+  /*
+    [NoInterfaceObject]
+    interface Coordinates {
+      readonly attribute double latitude;
+      readonly attribute double longitude;
+      readonly attribute double? altitude;
+      readonly attribute double accuracy;
+      readonly attribute double? altitudeAccuracy;
+      readonly attribute double? heading;
+      readonly attribute double? speed;
+    };
+  */
+
+  for (ii in position.coords) {
+    // these four can be numbers or null
+    if (ii == "altitude" || ii == "altitudeAccuracy" || ii == "heading" || ii == "speed") {
+      test(function() {
+        assert_true(position.coords[ii] === null || typeof(position.coords[ii]) === "number",
+            ii + " must be null or 'number' type, was: " + typeof(position.coords[ii]));
+      }, ii+ " is null or number");
+    } else {
+      test(function() {
+        assert_equals(typeof(position.coords[ii]), "number",
+            ii + " should be type 'number' but typeof returned: " + typeof(position.coords[ii]));
+      }, ii + " is type number");
+    }
+
+    oldval = position.coords[ii];
+    position.coords[ii] = 666;
+
+    test(function() {
+      assert_equals(position.coords[ii], oldval,
+          ii + " should be readonly, wrote: " + position.coords[ii] + " old value was " + oldval);
+    }, ii + " readonly");
+
+  }
+
+  success.done();
+  done();
+}
+
+function BadErrorCallback(error)
+{
+  success.step(function() {
+    assert_unreached("Error callback called in error");
+  });
+  success.done();
+  done();
+}
+
+function BadSuccessCallback(position)
+{
+  fail.step(function() {
+    assert_unreached("Success callback called in error");
+  });
+  fail.done();
+}
+
+function errorCallback(error)
+{
+  test(function() {
+    assert_equals(error.toString(), "[object PositionError]",
+        "PositionError.toString should result in '[object PositionError]' was: " +
+        error.toString());
+  }, "PositionError toString");
+
+  test(function() {
+    assert_equals(error.PERMISSION_DENIED, 1,
+        "PERMISSION_DENIED should be 1 was: " + error.POSITION_DENIED);
+  }, "PERMISSION_DENIED value is 1");
+
+  test(function() {
+    assert_equals(error.POSITION_UNAVAILABLE, 2,
+        "POSITION_UNAVAILABLE should be 2' was: " + error.POSITION_UNAVAILABLE);
+  }, "POSITION_UNAVAILABLE is 2");
+
+  test(function() {
+    assert_equals(error.TIMEOUT, 3,
+        "TIMEOUT should be 3 was: " + error.TIMEOUT);
+  }, "TIMEOUT value is 3");
+
+  fail.done();
+}
+
+success = async_test("getCurrentPosition success callback tests", {timeout:20000});
+
+// with a longer timeout and with the user accepting the position request,
+// this should test the successcallback
+success.step(function() {
+  geo.getCurrentPosition(
+      successCallback,
+      BadErrorCallback,
+      {maximumAge:600000, timeout:10000}
+  );
+});
+
+fail = async_test("getCurrentPosition error callback tests");
+
+// with a timeout of 0 the error callback is hopefully consistently called
+fail.step(function() {
+  geo.getCurrentPosition(
+      BadSuccessCallback,
+      errorCallback,
+      {maximumAge:00, timeout:0}
+  );
+});
+
+</script>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_TypeError.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_TypeError.html
new file mode 100644
index 0000000..a2e5784
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_TypeError.html
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML>
+<meta charset='utf-8'>
+<title>Geolocation Test: getCurrentPosition TypeError tests</title>
+<link rel='help' href='http://www.w3.org/TR/geolocation-API/'>
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src='support.js'></script>
+
+<div id='log'></div>
+
+<script>
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00027
+test(function() {
+  assert_throws(new TypeError(), function() {
+    geo.getCurrentPosition();
+  });
+}, 'Call getCurrentPosition without arguments, check that exception is thrown');
+
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00011
+test(function() {
+  assert_throws(new TypeError(), function() {
+    geo.getCurrentPosition(null);
+  });
+}, 'Call getCurrentPosition with null success callback, check that exception is thrown');
+
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00013
+test(function() {
+  assert_throws(new TypeError(), function() {
+    geo.getCurrentPosition(null, null);
+  });
+}, 'Call getCurrentPosition with null success and error callbacks, check that exception is thrown');
+
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00028
+test(function() {
+  assert_throws(new TypeError(), function() {
+    geo.getCurrentPosition(3);
+  });
+}, 'Call getCurrentPosition() with wrong type for first argument. Exception expected.');
+
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00029
+test(function() {
+  assert_throws(new TypeError(), function() {
+    geo.getCurrentPosition(dummyFunction, 4);
+  });
+}, 'Call getCurrentPosition() with wrong type for second argument. Exception expected.');
+
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00030
+test(function() {
+  assert_throws(new TypeError(), function() {
+    geo.getCurrentPosition(dummyFunction, dummyFunction, 4);
+  });
+}, 'Call getCurrentPosition() with wrong type for third argument. Exception expected.');
+
+done();
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission-manual.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission-manual.html
new file mode 100644
index 0000000..20003cd
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission-manual.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML>
+<meta charset='utf-8'>
+<title>Call getCurrentPosition, check that there is UI appearing with the document host</title>
+<link rel='help' href='http://www.w3.org/TR/geolocation-API/#privacy_for_uas'>
+
+<p>Clear all Geolocation permissions before running this test.</p>
+
+<p>Test passes if there is a permission prompt including the host <strong id='host'></strong> and no FAIL.</p>
+<div id='log'></div>
+
+<script>
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00018
+try {
+  var dummyFunction = function() {};
+  window.navigator.geolocation.getCurrentPosition(dummyFunction, dummyFunction);
+
+  document.getElementById('host').innerHTML = window.location.hostname;
+} catch (e) {
+  document.getElementById('log').innerHTML = 'FAIL: an exception was thrown unexpectedly: ' + e.message;
+}
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission_allow-manual.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission_allow-manual.html
new file mode 100644
index 0000000..4628275
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission_allow-manual.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML>
+<meta charset='utf-8'>
+<title>User asked to approve/remember, then asked to revoke, then reload. The permission dialogue should reappear</title>
+<link rel='help' href='http://www.w3.org/TR/geolocation-API/#get-current-position'>
+
+<p>Clear all Geolocation permissions before running this test. If prompted for permission, please allow.</p>
+
+<div id='log'></div>
+
+<script>
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00141
+var nextStep, onError, isUsingPreemptivePermission = false;
+
+nextStep = function() {
+  document.querySelector('p').innerHTML =
+      'Now revoke permissions for this origin (where applicable) and reload the page. Tests passes if there is a permission prompt again and no FAIL.';
+};
+
+onError = function(err) {
+  if (!isUsingPreemptivePermission && err.code === err.POSITION_UNAVAILABLE) {
+    nextStep();
+  } else {
+    document.getElementById('log').innerHTML = 'FAIL: an error callback was invoked unexpectedly: ' + err.message;
+  }
+};
+
+try {
+  window.navigator.geolocation.getCurrentPosition(nextStep, onError);
+} catch (e) {
+  document.getElementById('log').innerHTML = 'FAIL: an exception was thrown unexpectedly: ' + e.message;
+}
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission_allow.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission_allow.https-expected.txt
new file mode 100644
index 0000000..1a29969
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission_allow.https-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL User allows access, check that success callback is called or error callback is called with correct code. assert_equals: [code: PERMISSION_DENIED (1), message: User denied Geolocation] expected 2 but got 1
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission_allow.https.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission_allow.https.html
new file mode 100644
index 0000000..9517109
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission_allow.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML>
+<meta charset='utf-8'>
+<title>Geolocation Test: getCurrentPosition location access allowed</title>
+<link rel='help' href='http://www.w3.org/TR/geolocation-API/#get-current-position'>
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src='support.js'></script>
+
+<p>Clear all Geolocation permissions before running this test. If prompted for permission, please allow.</p>
+<div id='log'></div>
+
+<script>
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00002
+var t = async_test('User allows access, check that success callback is called or error callback is called with correct code.'),
+    onSuccess, onError, hasMethodReturned = false;
+
+t.step(function() {
+  onSuccess = t.step_func_done(function(pos) {
+    // Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00031
+    assert_true(hasMethodReturned);
+  });
+
+  onError = t.step_func_done(function(err) {
+    // Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00031
+    assert_true(hasMethodReturned);
+    assert_false(isUsingPreemptivePermission);
+    assert_equals(err.code, err.POSITION_UNAVAILABLE, errorToString(err));
+  });
+
+  geo.getCurrentPosition(onSuccess, onError);
+  hasMethodReturned = true;
+});
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission_deny-manual.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission_deny-manual.html
new file mode 100644
index 0000000..b468a65d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission_deny-manual.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML>
+<meta charset='utf-8'>
+<title>User asked to deny/remember, then asked to revoke, then reload. The permission dialogue should reappear</title>
+<link rel='help' href='http://www.w3.org/TR/geolocation-API/#get-current-position'>
+
+<p>Clear all Geolocation permissions before running this test. If prompted for permission, please deny.</p>
+
+<div id='log'></div>
+
+<script>
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00142
+var onSuccess, nextStep, isUsingPreemptivePermission = false;
+
+onSuccess = function() {
+  document.getElementById('log').innerHTML = 'FAIL: a success callback was invoked unexpectedly.';
+};
+
+nextStep = function(err) {
+  if ((err.code === err.PERMISSION_DENIED) ||
+      (!isUsingPreemptivePermission && err.code === err.POSITION_UNAVAILABLE)) {
+    document.querySelector('p').innerHTML =
+        'Now revoke permissions for this origin (where applicable) and reload the page. Tests passes if there is a permission prompt again and no FAIL.';
+  } else {
+    document.getElementById('log').innerHTML =
+        'FAIL: an error callback was invoked with unexpected error code: ' + err.code +  ', error message: ' + err.message;
+  }
+};
+
+try {
+  navigator.geolocation.getCurrentPosition(onSuccess, nextStep);
+} catch (e) {
+  document.getElementById('log').innerHTML = 'FAIL: an exception was thrown unexpectedly: ' + e.message;
+}
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission_deny.https.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission_deny.https.html
new file mode 100644
index 0000000..5012960
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/getCurrentPosition_permission_deny.https.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML>
+<meta charset='utf-8'>
+<title>Geolocation Test: getCurrentPosition location access denied</title>
+<link rel='help' href='http://www.w3.org/TR/geolocation-API/#privacy_for_uas'>
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src='support.js'></script>
+
+<p>Clear all Geolocation permissions before running this test. If prompted for permission, please deny.</p>
+<div id='log'></div>
+
+<script>
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00001
+var t = async_test('User denies access, check that error callback is called with correct code'),
+    onSuccess, onError, hasMethodReturned = false;
+
+t.step(function() {
+  onSuccess = t.step_func_done(function(pos) {
+    assert_unreached('A success callback was invoked unexpectedly with position ' + positionToString(pos));
+  });
+
+  onError =  t.step_func_done(function(err) {
+    // http://dev.w3.org/geo/api/test-suite/t.html?00031
+    assert_true(hasMethodReturned, 'Check that getCurrentPosition returns synchronously before any callbacks are invoked');
+    assert_equals(err.code, err.PERMISSION_DENIED, errorToString(err));
+  });
+
+  geo.getCurrentPosition(onSuccess, onError);
+  hasMethodReturned = true;
+});
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/interfaces.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/interfaces.html
new file mode 100644
index 0000000..0db42046
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/interfaces.html
@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Geolocation API IDL tests</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<link rel="help" href="http://www.w3.org/TR/geolocation-API/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/WebIDLParser.js"></script>
+<script src="/resources/idlharness.js"></script>
+
+<h1>Geolocation API IDL tests</h1>
+<div id="log"></div>
+
+<script type=text/plain class=untested>
+interface Navigator {
+};
+
+typedef unsigned long long DOMTimeStamp;
+</script>
+
+<script type=text/plain>
+partial interface Navigator {
+  readonly attribute Geolocation geolocation;
+};
+
+[NoInterfaceObject]
+interface Geolocation {
+  void getCurrentPosition(PositionCallback successCallback,
+                          optional PositionErrorCallback errorCallback,
+                          optional PositionOptions options);
+
+  long watchPosition(PositionCallback successCallback,
+                     optional PositionErrorCallback errorCallback,
+                     optional PositionOptions options);
+
+  void clearWatch(long watchId);
+};
+
+callback PositionCallback = void (Position position);
+
+callback PositionErrorCallback = void (PositionError positionError);
+
+dictionary PositionOptions {
+  boolean enableHighAccuracy = false;
+  [Clamp] unsigned long timeout = 0xFFFFFFFF;
+  [Clamp] unsigned long maximumAge = 0;
+};
+
+[NoInterfaceObject]
+interface Position {
+  readonly attribute Coordinates coords;
+  readonly attribute DOMTimeStamp timestamp;
+};
+
+[NoInterfaceObject]
+interface Coordinates {
+  readonly attribute double latitude;
+  readonly attribute double longitude;
+  readonly attribute double? altitude;
+  readonly attribute double accuracy;
+  readonly attribute double? altitudeAccuracy;
+  readonly attribute double? heading;
+  readonly attribute double? speed;
+};
+
+[NoInterfaceObject]
+interface PositionError {
+  const unsigned short PERMISSION_DENIED = 1;
+  const unsigned short POSITION_UNAVAILABLE = 2;
+  const unsigned short TIMEOUT = 3;
+  readonly attribute unsigned short code;
+  readonly attribute DOMString message;
+};
+</script>
+
+<script>
+"use strict";
+var idlArray;
+setup(function() {
+  idlArray = new IdlArray();
+  [].forEach.call(document.querySelectorAll("script[type=text\\/plain]"), function(node) {
+    if (node.className == "untested") {
+      idlArray.add_untested_idls(node.textContent);
+    } else {
+      idlArray.add_idls(node.textContent);
+    }
+  });
+  idlArray.add_objects({
+    Navigator: ["navigator"],
+    Geolocation: ["navigator.geolocation"]
+  });
+});
+idlArray.test();
+</script>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/support.js b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/support.js
new file mode 100644
index 0000000..960b572
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/support.js
@@ -0,0 +1,30 @@
+var geo;
+
+setup(function() {
+  geo = navigator.geolocation;
+});
+
+// The spec states that an implementation SHOULD acquire user permission before
+// beggining the position acquisition steps. If an implementation follows this
+// advice, set the following flag to aid debugging.
+var isUsingPreemptivePermission = false;
+
+
+var dummyFunction = function() {};
+
+var positionToString = function(pos) {
+  var c = pos.coords;
+  return '[lat: ' + c.latitude + ', lon: ' + c.longitude + ', acc: ' + c.accuracy + ']';
+};
+
+var errorToString = function(err) {
+  var codeString;
+  switch(err.code) {
+    case err.UNKNOWN_ERROR: codeString = 'UNKNOWN_ERROR'; break;
+    case err.PERMISSION_DENIED: codeString = 'PERMISSION_DENIED'; break;
+    case err.POSITION_UNAVAILABLE: codeString = 'POSITION_UNAVAILABLE'; break;
+    case err.TIMEOUT: codeString = 'TIMEOUT'; break;
+    default: codeString = 'undefined error code'; break;
+  }
+  return '[code: ' + codeString + ' (' + err.code + '), message: ' + (err.message ? err.message : '(empty)') + ']';
+};
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/watchPosition_TypeError.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/watchPosition_TypeError.html
new file mode 100644
index 0000000..9d7efd5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/watchPosition_TypeError.html
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML>
+<meta charset='utf-8'>
+<title>Geolocation Test: watchPosition TypeError tests</title>
+<link rel='help' href='http://www.w3.org/TR/geolocation-API/'>
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src='support.js'></script>
+
+<div id='log'></div>
+
+<script>
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00058
+test(function() {
+  assert_throws(new TypeError(), function() {
+    geo.watchPosition();
+  });
+}, 'Call watchPosition without arguments, check that exception is thrown');
+
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00015
+test(function() {
+  assert_throws(new TypeError(), function() {
+    geo.watchPosition(null);
+  });
+}, 'Call watchPosition with null success callback, check that exception is thrown');
+
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00017
+test(function() {
+  assert_throws(new TypeError(), function() {
+    geo.watchPosition(null, null);
+  });
+}, 'Call watchPosition with null success and error callbacks, check that exception is thrown');
+
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00059
+test(function() {
+  assert_throws(new TypeError(), function() {
+    geo.watchPosition(3);
+  });
+}, 'Call watchPosition() with wrong type for first argument. Exception expected.');
+
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00060
+test(function() {
+  assert_throws(new TypeError(), function() {
+    geo.watchPosition(dummyFunction, 4);
+  });
+}, 'Call watchPosition() with wrong type for second argument. Exception expected.');
+
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00061
+test(function() {
+  assert_throws(new TypeError(), function() {
+    geo.watchPosition(dummyFunction, dummyFunction, 4);
+  });
+}, 'Call watchPosition() with wrong type for third argument. Exception expected.');
+
+done();
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/watchPosition_permission-manual.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/watchPosition_permission-manual.html
new file mode 100644
index 0000000..e009801
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/watchPosition_permission-manual.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML>
+<meta charset='utf-8'>
+<title>Call watchPosition, check that there is UI appearing with the document host</title>
+<link rel='help' href='http://www.w3.org/TR/geolocation-API/#privacy_for_uas'>
+
+<p>Clear all Geolocation permissions before running this test.</p>
+
+<p>Test passes if there is a permission prompt including the host <strong id='host'></strong> and no FAIL.</p>
+<div id='log'></div>
+
+<script>
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00019
+try {
+  var dummyFunction = function() {};
+  window.navigator.geolocation.watchPosition(dummyFunction, dummyFunction);
+
+  document.getElementById('host').innerHTML = window.location.hostname;
+} catch (e) {
+  document.getElementById('log').innerHTML = 'FAIL: ' + e.message;
+}
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/watchPosition_permission_deny.https.html b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/watchPosition_permission_deny.https.html
new file mode 100644
index 0000000..1e2a3c4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/geolocation-API/watchPosition_permission_deny.https.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML>
+<meta charset='utf-8'>
+<title>Geolocation Test: watchPosition location access denied</title>
+<link rel='help' href='http://www.w3.org/TR/geolocation-API/#watch-position'>
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src='support.js'></script>
+
+<p>Clear all Geolocation permissions before running this test. If prompted for permission, please deny.</p>
+<div id='log'></div>
+
+<script>
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00062
+var t = async_test('Check that watchPosition returns synchronously before any callbacks are invoked.'),
+    id, checkMethodHasReturned, hasMethodReturned = false;
+
+checkMethodHasReturned = t.step_func_done(function() {
+  assert_true(hasMethodReturned);
+});
+
+try {
+  id = geo.watchPosition(checkMethodHasReturned, checkMethodHasReturned);
+  hasMethodReturned = true;
+} catch(e) {
+  t.unreached_func('An exception was thrown unexpectedly: ' + e.message);
+}
+
+// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00151
+test(function() {
+  assert_greater_than_equal(id, -2147483648);
+  assert_less_than_equal(id, 2147483647);
+}, 'Check that watchPosition returns a long');
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope.https.html b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope.https.html
new file mode 100644
index 0000000..8435912
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope.https.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Gyroscope Test</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<link rel="help" href="https://www.w3.org/TR/gyroscope/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/generic-sensor/generic-sensor-tests.js"></script>
+<div id="log"></div>
+<iframe src="support-iframe.html" id="frame" style="display:none" sandbox="allow-scripts">
+</iframe>
+<script>
+
+runGenericSensorTests(Gyroscope);
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope_insecure_context.html b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope_insecure_context.html
new file mode 100644
index 0000000..f772b0a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope_insecure_context.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Gyroscope Test: insecure context</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<link rel="help" href="https://www.w3.org/TR/gyroscope/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/generic-sensor/generic-sensor-tests.js"></script>
+<div id="log"></div>
+<h2>Precondition</h2>
+<ol>
+  <li>
+    Run test in an insecure context, e.g. http://example.com/.
+  </li>
+</ol>
+<script>
+
+runGenericSensorInsecureContext(Gyroscope);
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope_onerror-manual.https.html b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope_onerror-manual.https.html
new file mode 100644
index 0000000..f012615
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/Gyroscope_onerror-manual.https.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Gyroscope Test: onerror</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<link rel="help" href="https://www.w3.org/TR/gyroscope/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/generic-sensor/generic-sensor-tests.js"></script>
+<div id="log"></div>
+<h2>Precondition</h2>
+<ol>
+  <li>
+    Disable the Gyroscope Sensor or run test on a device without Gyroscope Sensor.
+  </li>
+</ol>
+<script>
+
+runGenericSensorOnerror(Gyroscope);
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/gyroscope/support-iframe.html b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/support-iframe.html
new file mode 100644
index 0000000..5efbbcd
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/gyroscope/support-iframe.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML>
+<meta charset="utf-8">
+<script>
+try {
+  let sensor = new Gyroscope();
+  parent.postMessage("sensor.start() can be fired within iframes", '*');
+} catch (e) {
+  parent.postMessage(e.name, '*');
+}
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html b/third_party/WebKit/LayoutTests/external/wpt/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html
index e3da59e..4594a1e 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html
@@ -47,12 +47,11 @@
       }, function() {
         // coming back from history, scrollRestoration should be set to manual and respected
         assert_equals(iframe.contentWindow.location.href, baseURL + '/resources/page-with-fragment.html#fragment', 'should be back on page-with-fragment page');
-        iframe.contentWindow.requestAnimationFrame(function() {
+        iframe.contentWindow.requestAnimationFrame(t.step_func_done(function() {
           assert_equals(iframe.contentWindow.history.scrollRestoration, 'manual', 'navigating back should retain scrollRestoration value');
           assert_equals(iframe.contentWindow.scrollX, 0, 'should not scroll to fragment');
           assert_equals(iframe.contentWindow.scrollY, 0, 'should not scroll to fragment');
-          t.done();
-        });
+        }));
       }
     ];
 
@@ -64,4 +63,4 @@
     iframe.onload = next;
     next();
   }, 'Manual scroll restoration should take precedent over scrolling to fragment in cross origin navigation');
-</script>
\ No newline at end of file
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/browsers/history/the-location-interface/per-global.window.js b/third_party/WebKit/LayoutTests/external/wpt/html/browsers/history/the-location-interface/per-global.window.js
new file mode 100644
index 0000000..b2956fd
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/browsers/history/the-location-interface/per-global.window.js
@@ -0,0 +1,3 @@
+// META: script=/common/object-association.js
+
+testIsPerWindow("location");
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/references/spelling-markers-001-ref.html b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/references/spelling-markers-001-ref.html
new file mode 100644
index 0000000..68dcc547
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/references/spelling-markers-001-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<title>Reference file for spellcheck tests</title>
+
+<div>This test passes if there is no visual marker indicating the spellinnnnnggg mistake in this sentence, and fails otherwise.</div>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-001.html b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-001.html
new file mode 100644
index 0000000..4a5fd41
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-001.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<title>Turning off spellcheck on editing hosts</title>
+<link rel=match href="references/spelling-markers-001-ref.html">
+<link rel=help href="https://html.spec.whatwg.org/multipage/interaction.html#spelling-and-grammar-checking">
+<meta name=assert content="Spellchecking stops applying to editing hosts when they become non editable">
+
+<div id="test" contenteditable=true>This test passes if there is no visual marker indicating the spellinnnnnggg mistake in this sentence, and fails otherwise.</div>
+
+<script>
+  var test = document.getElementById("test");
+  test.focus(); test.blur(); //alternative to forceSpellCheck(), due to general lack of support
+  test.removeAttribute("contenteditable");
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-002.html b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-002.html
new file mode 100644
index 0000000..44f1ea842
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-002.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<title>Turning off spellcheck on editable elements</title>
+<link rel=match href="references/spelling-markers-001-ref.html">
+<link rel=help href="https://html.spec.whatwg.org/multipage/interaction.html#spelling-and-grammar-checking">
+<meta name=assert content="Spellchecking stops applying to editable elements when they become non editable">
+
+<div id="test" contenteditable=true>This test passes if there is no visual marker indicating the <span id=child>spellinnnnnggg</span> mistake in this sentence, and fails otherwise.</div>
+
+<script>
+  var test = document.getElementById("test");
+  test.focus(); test.blur(); // Alternative to forceSpellCheck(), due to general lack of support
+  var child = document.getElementById("child");
+  child.setAttribute("contenteditable", false);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-003.html b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-003.html
new file mode 100644
index 0000000..9c88660e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-003.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<title>Turning off spellcheck on editing hosts while keeping them editable</title>
+<link rel=match href="references/spelling-markers-001-ref.html">
+<link rel=help href="https://html.spec.whatwg.org/multipage/interaction.html#spelling-and-grammar-checking">
+<meta name=assert content="Spellchecking stops applying to editing hosts when the spellcheck attribute becomes false">
+
+<div id="test" spellcheck=true contenteditable=true>This test passes if there is no visual marker indicating the spellinnnnnggg mistake in this sentence, and fails otherwise.</div>
+
+<script>
+  var test = document.getElementById("test");
+  test.focus(); test.blur(); // Alternative to forceSpellCheck(), due to general lack of support
+  test.setAttribute("spellcheck", false);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-004.html b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-004.html
new file mode 100644
index 0000000..fdeb9064
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-004.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<title>Turning off spellcheck on editable elements while keeping them editable</title>
+<link rel=match href="references/spelling-markers-001-ref.html">
+<link rel=help href="https://html.spec.whatwg.org/multipage/interaction.html#spelling-and-grammar-checking">
+<meta name=assert content="Spellchecking stops applying to editable elements when the spellcheck attribute becomes false">
+
+<div id="test" spellcheck=true contenteditable=true>This test passes if there is no visual marker indicating the <span id=child>spellinnnnnggg</span> mistake in this sentence, and fails otherwise.</div>
+
+<script>
+  var test = document.getElementById("test");
+  test.focus(); test.blur(); // Alternative to forceSpellCheck(), due to general lack of support
+  var child = document.getElementById("child");
+  child.setAttribute("spellcheck", false);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-005.html b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-005.html
new file mode 100644
index 0000000..9ab7a3e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-005.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<title>Turning off spellcheck on editable elements via an ancestor</title>
+<link rel=match href="references/spelling-markers-001-ref.html">
+<link rel=help href="https://html.spec.whatwg.org/multipage/interaction.html#spelling-and-grammar-checking">
+<meta name=assert content="Spellchecking stops applying to editable elements when the spellcheck attribute becomes false on an ancestor">
+
+<div id="test" contenteditable=true>This test passes if there is no visual marker indicating the <span id=child><span>spellinnnnnggg</span></span> mistake in this sentence, and fails otherwise.</div>
+
+<script>
+  var test = document.getElementById("test");
+  test.focus(); test.blur(); // Alternative to forceSpellCheck(), due to general lack of support
+  var child = document.getElementById("child");
+  child.setAttribute("spellcheck", false);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-006.html b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-006.html
new file mode 100644
index 0000000..f0b54da
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-006.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<title>Turning off spellcheck via an ancestor of the editing host</title>
+<link rel=match href="references/spelling-markers-001-ref.html">
+<link rel=help href="https://html.spec.whatwg.org/multipage/interaction.html#spelling-and-grammar-checking">
+<meta name=assert content="Spellchecking stops applying when the spellcheck attribute becomes false on an ancestor, without restrcting the search to the nearest editing host">
+
+<div id=parent>
+  <div id=test contenteditable=true>This test passes if there is no visual marker indicating the spellinnnnnggg mistake in this sentence, and fails otherwise.</div>
+</div>
+
+<script>
+  var test = document.getElementById("test");
+  test.focus(); test.blur(); // Alternative to forceSpellCheck(), due to general lack of support
+  var p = document.getElementById("parent");
+  p.setAttribute("spellcheck", false);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-007.html b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-007.html
new file mode 100644
index 0000000..4bbeca9a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-007.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<title>Turning off spellcheck by making textareas readonly</title>
+<link rel=match href="references/spelling-markers-001-ref.html">
+<link rel=help href="https://html.spec.whatwg.org/multipage/interaction.html#spelling-and-grammar-checking">
+<meta name=assert content="Spellchecking stops applying to textareas when they become readonly">
+
+<style>
+#test {
+  /* Match the ref */
+  all: initial;
+  width: 100%;
+  display: block;
+  font-family: inherit;
+}
+</style>
+
+<textarea id=test>This test passes if there is no visual marker indicating the spellinnnnnggg mistake in this sentence, and fails otherwise.</textarea>
+
+<script>
+  var test = document.getElementById("test");
+  test.focus(); test.blur(); // Alternative to forceSpellCheck(), due to general lack of support
+  test.setAttribute("readonly", true);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-008.html b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-008.html
new file mode 100644
index 0000000..5ed72ab
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-008.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<title>Turning off spellcheck by making textareas disabled</title>
+<link rel=match href="references/spelling-markers-001-ref.html">
+<link rel=help href="https://html.spec.whatwg.org/multipage/interaction.html#spelling-and-grammar-checking">
+<meta name=assert content="Spellchecking stops applying to textareas when they become disabled">
+
+<style>
+#test {
+  /* Match the ref */
+  all: initial;
+  width: 100%;
+  display: block;
+  font-family: inherit;
+}
+</style>
+
+<textarea id=test>This test passes if there is no visual marker indicating the spellinnnnnggg mistake in this sentence, and fails otherwise.</textarea>
+
+<script>
+  var test = document.getElementById("test");
+  test.focus(); test.blur(); // Alternative to forceSpellCheck(), due to general lack of support
+  test.setAttribute("disabled", true);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-009.html b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-009.html
new file mode 100644
index 0000000..577ffd8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-009.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<title>Turning off spellcheck by making input elements readonly</title>
+<link rel=match href="references/spelling-markers-001-ref.html">
+<link rel=help href="https://html.spec.whatwg.org/multipage/interaction.html#spelling-and-grammar-checking">
+<meta name=assert content="Spellchecking stops applying to input elements when they become readonly">
+
+<style>
+#test {
+  /* Match the ref */
+  all: initial;
+  width: 100%;
+  display: block;
+  font-family: inherit;
+}
+</style>
+
+<input type=text id=test value="This test passes if there is no visual marker indicating the spellinnnnnggg mistake in this sentence, and fails otherwise.">
+
+<script>
+  var test = document.getElementById("test");
+  test.focus(); test.blur(); // Alternative to forceSpellCheck(), due to general lack of support
+  test.setAttribute("readonly", true);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-010.html b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-010.html
new file mode 100644
index 0000000..6a2e104
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-010.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<title>Turning off spellcheck by making input elements disabled</title>
+<link rel=match href="references/spelling-markers-001-ref.html">
+<link rel=help href="https://html.spec.whatwg.org/multipage/interaction.html#spelling-and-grammar-checking">
+<meta name=assert content="Spellchecking stops applying to input elements when they become disabled">
+
+<style>
+#test {
+  /* Match the ref */
+  all: initial;
+  width: 100%;
+  display: block;
+  font-family: inherit;
+}
+</style>
+
+<input type=text id=test value="This test passes if there is no visual marker indicating the spellinnnnnggg mistake in this sentence, and fails otherwise.">
+
+<script>
+  var test = document.getElementById("test");
+  test.focus(); test.blur(); // Alternative to forceSpellCheck(), due to general lack of support
+  test.setAttribute("disabled", true);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/radio-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/radio-expected.txt
index a2267a1..591b721 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/radio-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/radio-expected.txt
@@ -6,5 +6,6 @@
 PASS only one control of a radio button group can have its checkedness set to true 
 PASS radio inputs with non-ASCII name attributes belong to the same radio button group 
 PASS changing the name of a radio input element and setting its checkedness to true makes all the other elements' checkedness in the same radio button group be set to false 
+PASS moving radio input element out of or into a form should still work as expected 
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/radio.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/radio.html
index ea51d7b..c37fa7ac 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/radio.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-input-element/radio.html
@@ -23,6 +23,11 @@
 <input type=radio name=group4 id=radio10>
 <input type=radio name=group4 id=radio11 checked>
 
+<form id="testform"></form>
+<input type=radio form=testform name=group6 id=radio12 checked>
+<input type=radio form=testform name=group6 id=radio13>
+<input type=radio form=testform name=group6 id=radio14>
+
 <script>
   var radio1 = document.getElementById('radio1'),
       radio2 = document.getElementById('radio2'),
@@ -36,6 +41,10 @@
       radio9 = document.getElementById('radio9'),
       radio10 = document.getElementById('radio10'),
       radio11 = document.getElementById('radio11'),
+      radio12 = document.getElementById('radio12'),
+      radio13 = document.getElementById('radio13'),
+      radio14 = document.getElementById('radio14'),
+      testform = document.getElementById('testform'),
       t1 = async_test("click on mutable radio fires click event, then input event, then change event"),
       t3 = async_test("click on non-mutable radio doesn't fire the input event"),
       t4 = async_test("click on non-mutable radio doesn't fire the change event"),
@@ -78,6 +87,31 @@
     assert_false(radio11.checked);
   }, "changing the name of a radio input element and setting its checkedness to true makes all the other elements' checkedness in the same radio button group be set to false");
 
+  test(function(){
+    radio12.remove();
+    assert_true(radio12.checked);
+    assert_false(radio13.checked);
+    assert_false(radio14.checked);
+    radio13.checked = true;
+    assert_true(radio13.checked);
+    assert_false(radio14.checked);
+    radio13.removeAttribute("form");
+    radio14.removeAttribute("form");
+    assert_true(radio13.checked);
+    assert_false(radio14.checked);
+    radio14.checked = true;
+    assert_false(radio13.checked);
+    assert_true(radio14.checked);
+    radio13.setAttribute("form", "testform");
+    radio14.setAttribute("form", "testform");
+    radio13.checked = true;
+    assert_true(radio13.checked);
+    assert_false(radio14.checked);
+    testform.remove();
+    assert_true(radio13.checked);
+    assert_false(radio14.checked);
+  }, "moving radio input element out of or into a form should still work as expected");
+
   radio5.onclick = t1.step_func(function(e) {
     click_fired = true;
     assert_false(input_fired, "click event should fire before input event");
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html
index 26eefed6..212ffc1 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html
@@ -11,6 +11,7 @@
 </head>
 <body>
 <script>
+let supportsNoModule = "noModule" in document.getElementsByTagName("script")[0];
 
 waitForLoadEvent = new Promise((resolve) => {
     window.onload = resolve;
@@ -22,13 +23,13 @@
     });
 }
 
-let readyForSecondTest;
 promise_test(() => {
     window.executed = false;
     let loaded = false;
     let errored = false;
 
     let script = document.createElement('script');
+
     script.src = './resources/set-script-executed.js';
     script.onload = () => loaded = true;
     script.onerror = () => errored = true;
@@ -36,6 +37,7 @@
     document.body.appendChild(script);
 
     return waitForAsyncScript().then(() => {
+        assert_true(supportsNoModule);
         assert_true(executed);
         assert_true(loaded);
         assert_false(errored);
@@ -55,6 +57,7 @@
     document.body.appendChild(script);
 
     return waitForAsyncScript().then(() => {
+        assert_true(supportsNoModule);
         assert_false(executed);
         assert_false(loaded);
         assert_false(errored);
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-1-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-1-expected.txt
new file mode 100644
index 0000000..93f0160
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-1-expected.txt
@@ -0,0 +1,2129 @@
+This is a testharness.js-based test.
+Found 2125 tests; 2122 PASS, 3 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS XHTML1.0 Transitional parsing &Aacute; 
+PASS XHTML1.0 Transitional parsing &aacute; 
+PASS XHTML1.0 Transitional parsing &Abreve; 
+PASS XHTML1.0 Transitional parsing &abreve; 
+PASS XHTML1.0 Transitional parsing &ac; 
+PASS XHTML1.0 Transitional parsing &acd; 
+PASS XHTML1.0 Transitional parsing &acE; 
+PASS XHTML1.0 Transitional parsing &Acirc; 
+PASS XHTML1.0 Transitional parsing &acirc; 
+PASS XHTML1.0 Transitional parsing &acute; 
+PASS XHTML1.0 Transitional parsing &Acy; 
+PASS XHTML1.0 Transitional parsing &acy; 
+PASS XHTML1.0 Transitional parsing &AElig; 
+PASS XHTML1.0 Transitional parsing &aelig; 
+PASS XHTML1.0 Transitional parsing &af; 
+PASS XHTML1.0 Transitional parsing &Afr; 
+PASS XHTML1.0 Transitional parsing &afr; 
+PASS XHTML1.0 Transitional parsing &Agrave; 
+PASS XHTML1.0 Transitional parsing &agrave; 
+PASS XHTML1.0 Transitional parsing &alefsym; 
+PASS XHTML1.0 Transitional parsing &aleph; 
+PASS XHTML1.0 Transitional parsing &Alpha; 
+PASS XHTML1.0 Transitional parsing &alpha; 
+PASS XHTML1.0 Transitional parsing &Amacr; 
+PASS XHTML1.0 Transitional parsing &amacr; 
+PASS XHTML1.0 Transitional parsing &amalg; 
+PASS XHTML1.0 Transitional parsing &amp; 
+FAIL XHTML1.0 Transitional parsing &AMP; assert_true: expected true got false
+PASS XHTML1.0 Transitional parsing &andand; 
+PASS XHTML1.0 Transitional parsing &And; 
+PASS XHTML1.0 Transitional parsing &and; 
+PASS XHTML1.0 Transitional parsing &andd; 
+PASS XHTML1.0 Transitional parsing &andslope; 
+PASS XHTML1.0 Transitional parsing &andv; 
+PASS XHTML1.0 Transitional parsing &ang; 
+PASS XHTML1.0 Transitional parsing &ange; 
+PASS XHTML1.0 Transitional parsing &angle; 
+PASS XHTML1.0 Transitional parsing &angmsdaa; 
+PASS XHTML1.0 Transitional parsing &angmsdab; 
+PASS XHTML1.0 Transitional parsing &angmsdac; 
+PASS XHTML1.0 Transitional parsing &angmsdad; 
+PASS XHTML1.0 Transitional parsing &angmsdae; 
+PASS XHTML1.0 Transitional parsing &angmsdaf; 
+PASS XHTML1.0 Transitional parsing &angmsdag; 
+PASS XHTML1.0 Transitional parsing &angmsdah; 
+PASS XHTML1.0 Transitional parsing &angmsd; 
+PASS XHTML1.0 Transitional parsing &angrt; 
+PASS XHTML1.0 Transitional parsing &angrtvb; 
+PASS XHTML1.0 Transitional parsing &angrtvbd; 
+PASS XHTML1.0 Transitional parsing &angsph; 
+PASS XHTML1.0 Transitional parsing &angst; 
+PASS XHTML1.0 Transitional parsing &angzarr; 
+PASS XHTML1.0 Transitional parsing &Aogon; 
+PASS XHTML1.0 Transitional parsing &aogon; 
+PASS XHTML1.0 Transitional parsing &Aopf; 
+PASS XHTML1.0 Transitional parsing &aopf; 
+PASS XHTML1.0 Transitional parsing &apacir; 
+PASS XHTML1.0 Transitional parsing &ap; 
+PASS XHTML1.0 Transitional parsing &apE; 
+PASS XHTML1.0 Transitional parsing &ape; 
+PASS XHTML1.0 Transitional parsing &apid; 
+PASS XHTML1.0 Transitional parsing &apos; 
+PASS XHTML1.0 Transitional parsing &ApplyFunction; 
+PASS XHTML1.0 Transitional parsing &approx; 
+PASS XHTML1.0 Transitional parsing &approxeq; 
+PASS XHTML1.0 Transitional parsing &Aring; 
+PASS XHTML1.0 Transitional parsing &aring; 
+PASS XHTML1.0 Transitional parsing &Ascr; 
+PASS XHTML1.0 Transitional parsing &ascr; 
+PASS XHTML1.0 Transitional parsing &Assign; 
+PASS XHTML1.0 Transitional parsing &ast; 
+PASS XHTML1.0 Transitional parsing &asymp; 
+PASS XHTML1.0 Transitional parsing &asympeq; 
+PASS XHTML1.0 Transitional parsing &Atilde; 
+PASS XHTML1.0 Transitional parsing &atilde; 
+PASS XHTML1.0 Transitional parsing &Auml; 
+PASS XHTML1.0 Transitional parsing &auml; 
+PASS XHTML1.0 Transitional parsing &awconint; 
+PASS XHTML1.0 Transitional parsing &awint; 
+PASS XHTML1.0 Transitional parsing &backcong; 
+PASS XHTML1.0 Transitional parsing &backepsilon; 
+PASS XHTML1.0 Transitional parsing &backprime; 
+PASS XHTML1.0 Transitional parsing &backsim; 
+PASS XHTML1.0 Transitional parsing &backsimeq; 
+PASS XHTML1.0 Transitional parsing &Backslash; 
+PASS XHTML1.0 Transitional parsing &Barv; 
+PASS XHTML1.0 Transitional parsing &barvee; 
+PASS XHTML1.0 Transitional parsing &barwed; 
+PASS XHTML1.0 Transitional parsing &Barwed; 
+PASS XHTML1.0 Transitional parsing &barwedge; 
+PASS XHTML1.0 Transitional parsing &bbrk; 
+PASS XHTML1.0 Transitional parsing &bbrktbrk; 
+PASS XHTML1.0 Transitional parsing &bcong; 
+PASS XHTML1.0 Transitional parsing &Bcy; 
+PASS XHTML1.0 Transitional parsing &bcy; 
+PASS XHTML1.0 Transitional parsing &bdquo; 
+PASS XHTML1.0 Transitional parsing &becaus; 
+PASS XHTML1.0 Transitional parsing &because; 
+PASS XHTML1.0 Transitional parsing &Because; 
+PASS XHTML1.0 Transitional parsing &bemptyv; 
+PASS XHTML1.0 Transitional parsing &bepsi; 
+PASS XHTML1.0 Transitional parsing &bernou; 
+PASS XHTML1.0 Transitional parsing &Bernoullis; 
+PASS XHTML1.0 Transitional parsing &Beta; 
+PASS XHTML1.0 Transitional parsing &beta; 
+PASS XHTML1.0 Transitional parsing &beth; 
+PASS XHTML1.0 Transitional parsing &between; 
+PASS XHTML1.0 Transitional parsing &Bfr; 
+PASS XHTML1.0 Transitional parsing &bfr; 
+PASS XHTML1.0 Transitional parsing &bigcap; 
+PASS XHTML1.0 Transitional parsing &bigcirc; 
+PASS XHTML1.0 Transitional parsing &bigcup; 
+PASS XHTML1.0 Transitional parsing &bigodot; 
+PASS XHTML1.0 Transitional parsing &bigoplus; 
+PASS XHTML1.0 Transitional parsing &bigotimes; 
+PASS XHTML1.0 Transitional parsing &bigsqcup; 
+PASS XHTML1.0 Transitional parsing &bigstar; 
+PASS XHTML1.0 Transitional parsing &bigtriangledown; 
+PASS XHTML1.0 Transitional parsing &bigtriangleup; 
+PASS XHTML1.0 Transitional parsing &biguplus; 
+PASS XHTML1.0 Transitional parsing &bigvee; 
+PASS XHTML1.0 Transitional parsing &bigwedge; 
+PASS XHTML1.0 Transitional parsing &bkarow; 
+PASS XHTML1.0 Transitional parsing &blacklozenge; 
+PASS XHTML1.0 Transitional parsing &blacksquare; 
+PASS XHTML1.0 Transitional parsing &blacktriangle; 
+PASS XHTML1.0 Transitional parsing &blacktriangledown; 
+PASS XHTML1.0 Transitional parsing &blacktriangleleft; 
+PASS XHTML1.0 Transitional parsing &blacktriangleright; 
+PASS XHTML1.0 Transitional parsing &blank; 
+PASS XHTML1.0 Transitional parsing &blk12; 
+PASS XHTML1.0 Transitional parsing &blk14; 
+PASS XHTML1.0 Transitional parsing &blk34; 
+PASS XHTML1.0 Transitional parsing &block; 
+PASS XHTML1.0 Transitional parsing &bne; 
+PASS XHTML1.0 Transitional parsing &bnequiv; 
+PASS XHTML1.0 Transitional parsing &bNot; 
+PASS XHTML1.0 Transitional parsing &bnot; 
+PASS XHTML1.0 Transitional parsing &Bopf; 
+PASS XHTML1.0 Transitional parsing &bopf; 
+PASS XHTML1.0 Transitional parsing &bot; 
+PASS XHTML1.0 Transitional parsing &bottom; 
+PASS XHTML1.0 Transitional parsing &bowtie; 
+PASS XHTML1.0 Transitional parsing &boxbox; 
+PASS XHTML1.0 Transitional parsing &boxdl; 
+PASS XHTML1.0 Transitional parsing &boxdL; 
+PASS XHTML1.0 Transitional parsing &boxDl; 
+PASS XHTML1.0 Transitional parsing &boxDL; 
+PASS XHTML1.0 Transitional parsing &boxdr; 
+PASS XHTML1.0 Transitional parsing &boxdR; 
+PASS XHTML1.0 Transitional parsing &boxDr; 
+PASS XHTML1.0 Transitional parsing &boxDR; 
+PASS XHTML1.0 Transitional parsing &boxh; 
+PASS XHTML1.0 Transitional parsing &boxH; 
+PASS XHTML1.0 Transitional parsing &boxhd; 
+PASS XHTML1.0 Transitional parsing &boxHd; 
+PASS XHTML1.0 Transitional parsing &boxhD; 
+PASS XHTML1.0 Transitional parsing &boxHD; 
+PASS XHTML1.0 Transitional parsing &boxhu; 
+PASS XHTML1.0 Transitional parsing &boxHu; 
+PASS XHTML1.0 Transitional parsing &boxhU; 
+PASS XHTML1.0 Transitional parsing &boxHU; 
+PASS XHTML1.0 Transitional parsing &boxminus; 
+PASS XHTML1.0 Transitional parsing &boxplus; 
+PASS XHTML1.0 Transitional parsing &boxtimes; 
+PASS XHTML1.0 Transitional parsing &boxul; 
+PASS XHTML1.0 Transitional parsing &boxuL; 
+PASS XHTML1.0 Transitional parsing &boxUl; 
+PASS XHTML1.0 Transitional parsing &boxUL; 
+PASS XHTML1.0 Transitional parsing &boxur; 
+PASS XHTML1.0 Transitional parsing &boxuR; 
+PASS XHTML1.0 Transitional parsing &boxUr; 
+PASS XHTML1.0 Transitional parsing &boxUR; 
+PASS XHTML1.0 Transitional parsing &boxv; 
+PASS XHTML1.0 Transitional parsing &boxV; 
+PASS XHTML1.0 Transitional parsing &boxvh; 
+PASS XHTML1.0 Transitional parsing &boxvH; 
+PASS XHTML1.0 Transitional parsing &boxVh; 
+PASS XHTML1.0 Transitional parsing &boxVH; 
+PASS XHTML1.0 Transitional parsing &boxvl; 
+PASS XHTML1.0 Transitional parsing &boxvL; 
+PASS XHTML1.0 Transitional parsing &boxVl; 
+PASS XHTML1.0 Transitional parsing &boxVL; 
+PASS XHTML1.0 Transitional parsing &boxvr; 
+PASS XHTML1.0 Transitional parsing &boxvR; 
+PASS XHTML1.0 Transitional parsing &boxVr; 
+PASS XHTML1.0 Transitional parsing &boxVR; 
+PASS XHTML1.0 Transitional parsing &bprime; 
+PASS XHTML1.0 Transitional parsing &breve; 
+PASS XHTML1.0 Transitional parsing &Breve; 
+PASS XHTML1.0 Transitional parsing &brvbar; 
+PASS XHTML1.0 Transitional parsing &bscr; 
+PASS XHTML1.0 Transitional parsing &Bscr; 
+PASS XHTML1.0 Transitional parsing &bsemi; 
+PASS XHTML1.0 Transitional parsing &bsim; 
+PASS XHTML1.0 Transitional parsing &bsime; 
+PASS XHTML1.0 Transitional parsing &bsolb; 
+PASS XHTML1.0 Transitional parsing &bsol; 
+PASS XHTML1.0 Transitional parsing &bsolhsub; 
+PASS XHTML1.0 Transitional parsing &bull; 
+PASS XHTML1.0 Transitional parsing &bullet; 
+PASS XHTML1.0 Transitional parsing &bump; 
+PASS XHTML1.0 Transitional parsing &bumpE; 
+PASS XHTML1.0 Transitional parsing &bumpe; 
+PASS XHTML1.0 Transitional parsing &Bumpeq; 
+PASS XHTML1.0 Transitional parsing &bumpeq; 
+PASS XHTML1.0 Transitional parsing &Cacute; 
+PASS XHTML1.0 Transitional parsing &cacute; 
+PASS XHTML1.0 Transitional parsing &capand; 
+PASS XHTML1.0 Transitional parsing &capbrcup; 
+PASS XHTML1.0 Transitional parsing &capcap; 
+PASS XHTML1.0 Transitional parsing &cap; 
+PASS XHTML1.0 Transitional parsing &Cap; 
+PASS XHTML1.0 Transitional parsing &capcup; 
+PASS XHTML1.0 Transitional parsing &capdot; 
+PASS XHTML1.0 Transitional parsing &CapitalDifferentialD; 
+PASS XHTML1.0 Transitional parsing &caps; 
+PASS XHTML1.0 Transitional parsing &caret; 
+PASS XHTML1.0 Transitional parsing &caron; 
+PASS XHTML1.0 Transitional parsing &Cayleys; 
+PASS XHTML1.0 Transitional parsing &ccaps; 
+PASS XHTML1.0 Transitional parsing &Ccaron; 
+PASS XHTML1.0 Transitional parsing &ccaron; 
+PASS XHTML1.0 Transitional parsing &Ccedil; 
+PASS XHTML1.0 Transitional parsing &ccedil; 
+PASS XHTML1.0 Transitional parsing &Ccirc; 
+PASS XHTML1.0 Transitional parsing &ccirc; 
+PASS XHTML1.0 Transitional parsing &Cconint; 
+PASS XHTML1.0 Transitional parsing &ccups; 
+PASS XHTML1.0 Transitional parsing &ccupssm; 
+PASS XHTML1.0 Transitional parsing &Cdot; 
+PASS XHTML1.0 Transitional parsing &cdot; 
+PASS XHTML1.0 Transitional parsing &cedil; 
+PASS XHTML1.0 Transitional parsing &Cedilla; 
+PASS XHTML1.0 Transitional parsing &cemptyv; 
+PASS XHTML1.0 Transitional parsing &cent; 
+PASS XHTML1.0 Transitional parsing &centerdot; 
+PASS XHTML1.0 Transitional parsing &CenterDot; 
+PASS XHTML1.0 Transitional parsing &cfr; 
+PASS XHTML1.0 Transitional parsing &Cfr; 
+PASS XHTML1.0 Transitional parsing &CHcy; 
+PASS XHTML1.0 Transitional parsing &chcy; 
+PASS XHTML1.0 Transitional parsing &check; 
+PASS XHTML1.0 Transitional parsing &checkmark; 
+PASS XHTML1.0 Transitional parsing &Chi; 
+PASS XHTML1.0 Transitional parsing &chi; 
+PASS XHTML1.0 Transitional parsing &circ; 
+PASS XHTML1.0 Transitional parsing &circeq; 
+PASS XHTML1.0 Transitional parsing &circlearrowleft; 
+PASS XHTML1.0 Transitional parsing &circlearrowright; 
+PASS XHTML1.0 Transitional parsing &circledast; 
+PASS XHTML1.0 Transitional parsing &circledcirc; 
+PASS XHTML1.0 Transitional parsing &circleddash; 
+PASS XHTML1.0 Transitional parsing &CircleDot; 
+PASS XHTML1.0 Transitional parsing &circledR; 
+PASS XHTML1.0 Transitional parsing &circledS; 
+PASS XHTML1.0 Transitional parsing &CircleMinus; 
+PASS XHTML1.0 Transitional parsing &CirclePlus; 
+PASS XHTML1.0 Transitional parsing &CircleTimes; 
+PASS XHTML1.0 Transitional parsing &cir; 
+PASS XHTML1.0 Transitional parsing &cirE; 
+PASS XHTML1.0 Transitional parsing &cire; 
+PASS XHTML1.0 Transitional parsing &cirfnint; 
+PASS XHTML1.0 Transitional parsing &cirmid; 
+PASS XHTML1.0 Transitional parsing &cirscir; 
+PASS XHTML1.0 Transitional parsing &ClockwiseContourIntegral; 
+PASS XHTML1.0 Transitional parsing &CloseCurlyDoubleQuote; 
+PASS XHTML1.0 Transitional parsing &CloseCurlyQuote; 
+PASS XHTML1.0 Transitional parsing &clubs; 
+PASS XHTML1.0 Transitional parsing &clubsuit; 
+PASS XHTML1.0 Transitional parsing &colon; 
+PASS XHTML1.0 Transitional parsing &Colon; 
+PASS XHTML1.0 Transitional parsing &Colone; 
+PASS XHTML1.0 Transitional parsing &colone; 
+PASS XHTML1.0 Transitional parsing &coloneq; 
+PASS XHTML1.0 Transitional parsing &comma; 
+PASS XHTML1.0 Transitional parsing &commat; 
+PASS XHTML1.0 Transitional parsing &comp; 
+PASS XHTML1.0 Transitional parsing &compfn; 
+PASS XHTML1.0 Transitional parsing &complement; 
+PASS XHTML1.0 Transitional parsing &complexes; 
+PASS XHTML1.0 Transitional parsing &cong; 
+PASS XHTML1.0 Transitional parsing &congdot; 
+PASS XHTML1.0 Transitional parsing &Congruent; 
+PASS XHTML1.0 Transitional parsing &conint; 
+PASS XHTML1.0 Transitional parsing &Conint; 
+PASS XHTML1.0 Transitional parsing &ContourIntegral; 
+PASS XHTML1.0 Transitional parsing &copf; 
+PASS XHTML1.0 Transitional parsing &Copf; 
+PASS XHTML1.0 Transitional parsing &coprod; 
+PASS XHTML1.0 Transitional parsing &Coproduct; 
+PASS XHTML1.0 Transitional parsing &copy; 
+PASS XHTML1.0 Transitional parsing &COPY; 
+PASS XHTML1.0 Transitional parsing &copysr; 
+PASS XHTML1.0 Transitional parsing &CounterClockwiseContourIntegral; 
+PASS XHTML1.0 Transitional parsing &crarr; 
+PASS XHTML1.0 Transitional parsing &cross; 
+PASS XHTML1.0 Transitional parsing &Cross; 
+PASS XHTML1.0 Transitional parsing &Cscr; 
+PASS XHTML1.0 Transitional parsing &cscr; 
+PASS XHTML1.0 Transitional parsing &csub; 
+PASS XHTML1.0 Transitional parsing &csube; 
+PASS XHTML1.0 Transitional parsing &csup; 
+PASS XHTML1.0 Transitional parsing &csupe; 
+PASS XHTML1.0 Transitional parsing &ctdot; 
+PASS XHTML1.0 Transitional parsing &cudarrl; 
+PASS XHTML1.0 Transitional parsing &cudarrr; 
+PASS XHTML1.0 Transitional parsing &cuepr; 
+PASS XHTML1.0 Transitional parsing &cuesc; 
+PASS XHTML1.0 Transitional parsing &cularr; 
+PASS XHTML1.0 Transitional parsing &cularrp; 
+PASS XHTML1.0 Transitional parsing &cupbrcap; 
+PASS XHTML1.0 Transitional parsing &cupcap; 
+PASS XHTML1.0 Transitional parsing &CupCap; 
+PASS XHTML1.0 Transitional parsing &cup; 
+PASS XHTML1.0 Transitional parsing &Cup; 
+PASS XHTML1.0 Transitional parsing &cupcup; 
+PASS XHTML1.0 Transitional parsing &cupdot; 
+PASS XHTML1.0 Transitional parsing &cupor; 
+PASS XHTML1.0 Transitional parsing &cups; 
+PASS XHTML1.0 Transitional parsing &curarr; 
+PASS XHTML1.0 Transitional parsing &curarrm; 
+PASS XHTML1.0 Transitional parsing &curlyeqprec; 
+PASS XHTML1.0 Transitional parsing &curlyeqsucc; 
+PASS XHTML1.0 Transitional parsing &curlyvee; 
+PASS XHTML1.0 Transitional parsing &curlywedge; 
+PASS XHTML1.0 Transitional parsing &curren; 
+PASS XHTML1.0 Transitional parsing &curvearrowleft; 
+PASS XHTML1.0 Transitional parsing &curvearrowright; 
+PASS XHTML1.0 Transitional parsing &cuvee; 
+PASS XHTML1.0 Transitional parsing &cuwed; 
+PASS XHTML1.0 Transitional parsing &cwconint; 
+PASS XHTML1.0 Transitional parsing &cwint; 
+PASS XHTML1.0 Transitional parsing &cylcty; 
+PASS XHTML1.0 Transitional parsing &dagger; 
+PASS XHTML1.0 Transitional parsing &Dagger; 
+PASS XHTML1.0 Transitional parsing &daleth; 
+PASS XHTML1.0 Transitional parsing &darr; 
+PASS XHTML1.0 Transitional parsing &Darr; 
+PASS XHTML1.0 Transitional parsing &dArr; 
+PASS XHTML1.0 Transitional parsing &dash; 
+PASS XHTML1.0 Transitional parsing &Dashv; 
+PASS XHTML1.0 Transitional parsing &dashv; 
+PASS XHTML1.0 Transitional parsing &dbkarow; 
+PASS XHTML1.0 Transitional parsing &dblac; 
+PASS XHTML1.0 Transitional parsing &Dcaron; 
+PASS XHTML1.0 Transitional parsing &dcaron; 
+PASS XHTML1.0 Transitional parsing &Dcy; 
+PASS XHTML1.0 Transitional parsing &dcy; 
+PASS XHTML1.0 Transitional parsing &ddagger; 
+PASS XHTML1.0 Transitional parsing &ddarr; 
+PASS XHTML1.0 Transitional parsing &DD; 
+PASS XHTML1.0 Transitional parsing &dd; 
+PASS XHTML1.0 Transitional parsing &DDotrahd; 
+PASS XHTML1.0 Transitional parsing &ddotseq; 
+PASS XHTML1.0 Transitional parsing &deg; 
+PASS XHTML1.0 Transitional parsing &Del; 
+PASS XHTML1.0 Transitional parsing &Delta; 
+PASS XHTML1.0 Transitional parsing &delta; 
+PASS XHTML1.0 Transitional parsing &demptyv; 
+PASS XHTML1.0 Transitional parsing &dfisht; 
+PASS XHTML1.0 Transitional parsing &Dfr; 
+PASS XHTML1.0 Transitional parsing &dfr; 
+PASS XHTML1.0 Transitional parsing &dHar; 
+PASS XHTML1.0 Transitional parsing &dharl; 
+PASS XHTML1.0 Transitional parsing &dharr; 
+PASS XHTML1.0 Transitional parsing &DiacriticalAcute; 
+PASS XHTML1.0 Transitional parsing &DiacriticalDot; 
+PASS XHTML1.0 Transitional parsing &DiacriticalDoubleAcute; 
+PASS XHTML1.0 Transitional parsing &DiacriticalGrave; 
+PASS XHTML1.0 Transitional parsing &DiacriticalTilde; 
+PASS XHTML1.0 Transitional parsing &diam; 
+PASS XHTML1.0 Transitional parsing &diamond; 
+PASS XHTML1.0 Transitional parsing &Diamond; 
+PASS XHTML1.0 Transitional parsing &diamondsuit; 
+PASS XHTML1.0 Transitional parsing &diams; 
+PASS XHTML1.0 Transitional parsing &die; 
+PASS XHTML1.0 Transitional parsing &DifferentialD; 
+PASS XHTML1.0 Transitional parsing &digamma; 
+PASS XHTML1.0 Transitional parsing &disin; 
+PASS XHTML1.0 Transitional parsing &div; 
+PASS XHTML1.0 Transitional parsing &divide; 
+PASS XHTML1.0 Transitional parsing &divideontimes; 
+PASS XHTML1.0 Transitional parsing &divonx; 
+PASS XHTML1.0 Transitional parsing &DJcy; 
+PASS XHTML1.0 Transitional parsing &djcy; 
+PASS XHTML1.0 Transitional parsing &dlcorn; 
+PASS XHTML1.0 Transitional parsing &dlcrop; 
+PASS XHTML1.0 Transitional parsing &dollar; 
+PASS XHTML1.0 Transitional parsing &Dopf; 
+PASS XHTML1.0 Transitional parsing &dopf; 
+PASS XHTML1.0 Transitional parsing &Dot; 
+PASS XHTML1.0 Transitional parsing &dot; 
+PASS XHTML1.0 Transitional parsing &DotDot; 
+PASS XHTML1.0 Transitional parsing &doteq; 
+PASS XHTML1.0 Transitional parsing &doteqdot; 
+PASS XHTML1.0 Transitional parsing &DotEqual; 
+PASS XHTML1.0 Transitional parsing &dotminus; 
+PASS XHTML1.0 Transitional parsing &dotplus; 
+PASS XHTML1.0 Transitional parsing &dotsquare; 
+PASS XHTML1.0 Transitional parsing &doublebarwedge; 
+PASS XHTML1.0 Transitional parsing &DoubleContourIntegral; 
+PASS XHTML1.0 Transitional parsing &DoubleDot; 
+PASS XHTML1.0 Transitional parsing &DoubleDownArrow; 
+PASS XHTML1.0 Transitional parsing &DoubleLeftArrow; 
+PASS XHTML1.0 Transitional parsing &DoubleLeftRightArrow; 
+PASS XHTML1.0 Transitional parsing &DoubleLeftTee; 
+PASS XHTML1.0 Transitional parsing &DoubleLongLeftArrow; 
+PASS XHTML1.0 Transitional parsing &DoubleLongLeftRightArrow; 
+PASS XHTML1.0 Transitional parsing &DoubleLongRightArrow; 
+PASS XHTML1.0 Transitional parsing &DoubleRightArrow; 
+PASS XHTML1.0 Transitional parsing &DoubleRightTee; 
+PASS XHTML1.0 Transitional parsing &DoubleUpArrow; 
+PASS XHTML1.0 Transitional parsing &DoubleUpDownArrow; 
+PASS XHTML1.0 Transitional parsing &DoubleVerticalBar; 
+PASS XHTML1.0 Transitional parsing &DownArrowBar; 
+PASS XHTML1.0 Transitional parsing &downarrow; 
+PASS XHTML1.0 Transitional parsing &DownArrow; 
+PASS XHTML1.0 Transitional parsing &Downarrow; 
+PASS XHTML1.0 Transitional parsing &DownArrowUpArrow; 
+PASS XHTML1.0 Transitional parsing &DownBreve; 
+PASS XHTML1.0 Transitional parsing &downdownarrows; 
+PASS XHTML1.0 Transitional parsing &downharpoonleft; 
+PASS XHTML1.0 Transitional parsing &downharpoonright; 
+PASS XHTML1.0 Transitional parsing &DownLeftRightVector; 
+PASS XHTML1.0 Transitional parsing &DownLeftTeeVector; 
+PASS XHTML1.0 Transitional parsing &DownLeftVectorBar; 
+PASS XHTML1.0 Transitional parsing &DownLeftVector; 
+PASS XHTML1.0 Transitional parsing &DownRightTeeVector; 
+PASS XHTML1.0 Transitional parsing &DownRightVectorBar; 
+PASS XHTML1.0 Transitional parsing &DownRightVector; 
+PASS XHTML1.0 Transitional parsing &DownTeeArrow; 
+PASS XHTML1.0 Transitional parsing &DownTee; 
+PASS XHTML1.0 Transitional parsing &drbkarow; 
+PASS XHTML1.0 Transitional parsing &drcorn; 
+PASS XHTML1.0 Transitional parsing &drcrop; 
+PASS XHTML1.0 Transitional parsing &Dscr; 
+PASS XHTML1.0 Transitional parsing &dscr; 
+PASS XHTML1.0 Transitional parsing &DScy; 
+PASS XHTML1.0 Transitional parsing &dscy; 
+PASS XHTML1.0 Transitional parsing &dsol; 
+PASS XHTML1.0 Transitional parsing &Dstrok; 
+PASS XHTML1.0 Transitional parsing &dstrok; 
+PASS XHTML1.0 Transitional parsing &dtdot; 
+PASS XHTML1.0 Transitional parsing &dtri; 
+PASS XHTML1.0 Transitional parsing &dtrif; 
+PASS XHTML1.0 Transitional parsing &duarr; 
+PASS XHTML1.0 Transitional parsing &duhar; 
+PASS XHTML1.0 Transitional parsing &dwangle; 
+PASS XHTML1.0 Transitional parsing &DZcy; 
+PASS XHTML1.0 Transitional parsing &dzcy; 
+PASS XHTML1.0 Transitional parsing &dzigrarr; 
+PASS XHTML1.0 Transitional parsing &Eacute; 
+PASS XHTML1.0 Transitional parsing &eacute; 
+PASS XHTML1.0 Transitional parsing &easter; 
+PASS XHTML1.0 Transitional parsing &Ecaron; 
+PASS XHTML1.0 Transitional parsing &ecaron; 
+PASS XHTML1.0 Transitional parsing &Ecirc; 
+PASS XHTML1.0 Transitional parsing &ecirc; 
+PASS XHTML1.0 Transitional parsing &ecir; 
+PASS XHTML1.0 Transitional parsing &ecolon; 
+PASS XHTML1.0 Transitional parsing &Ecy; 
+PASS XHTML1.0 Transitional parsing &ecy; 
+PASS XHTML1.0 Transitional parsing &eDDot; 
+PASS XHTML1.0 Transitional parsing &Edot; 
+PASS XHTML1.0 Transitional parsing &edot; 
+PASS XHTML1.0 Transitional parsing &eDot; 
+PASS XHTML1.0 Transitional parsing &ee; 
+PASS XHTML1.0 Transitional parsing &efDot; 
+PASS XHTML1.0 Transitional parsing &Efr; 
+PASS XHTML1.0 Transitional parsing &efr; 
+PASS XHTML1.0 Transitional parsing &eg; 
+PASS XHTML1.0 Transitional parsing &Egrave; 
+PASS XHTML1.0 Transitional parsing &egrave; 
+PASS XHTML1.0 Transitional parsing &egs; 
+PASS XHTML1.0 Transitional parsing &egsdot; 
+PASS XHTML1.0 Transitional parsing &el; 
+PASS XHTML1.0 Transitional parsing &Element; 
+PASS XHTML1.0 Transitional parsing &elinters; 
+PASS XHTML1.0 Transitional parsing &ell; 
+PASS XHTML1.0 Transitional parsing &els; 
+PASS XHTML1.0 Transitional parsing &elsdot; 
+PASS XHTML1.0 Transitional parsing &Emacr; 
+PASS XHTML1.0 Transitional parsing &emacr; 
+PASS XHTML1.0 Transitional parsing &empty; 
+PASS XHTML1.0 Transitional parsing &emptyset; 
+PASS XHTML1.0 Transitional parsing &EmptySmallSquare; 
+PASS XHTML1.0 Transitional parsing &emptyv; 
+PASS XHTML1.0 Transitional parsing &EmptyVerySmallSquare; 
+PASS XHTML1.0 Transitional parsing &emsp13; 
+PASS XHTML1.0 Transitional parsing &emsp14; 
+PASS XHTML1.0 Transitional parsing &emsp; 
+PASS XHTML1.0 Transitional parsing &ENG; 
+PASS XHTML1.0 Transitional parsing &eng; 
+PASS XHTML1.0 Transitional parsing &ensp; 
+PASS XHTML1.0 Transitional parsing &Eogon; 
+PASS XHTML1.0 Transitional parsing &eogon; 
+PASS XHTML1.0 Transitional parsing &Eopf; 
+PASS XHTML1.0 Transitional parsing &eopf; 
+PASS XHTML1.0 Transitional parsing &epar; 
+PASS XHTML1.0 Transitional parsing &eparsl; 
+PASS XHTML1.0 Transitional parsing &eplus; 
+PASS XHTML1.0 Transitional parsing &epsi; 
+PASS XHTML1.0 Transitional parsing &Epsilon; 
+PASS XHTML1.0 Transitional parsing &epsilon; 
+PASS XHTML1.0 Transitional parsing &epsiv; 
+PASS XHTML1.0 Transitional parsing &eqcirc; 
+PASS XHTML1.0 Transitional parsing &eqcolon; 
+PASS XHTML1.0 Transitional parsing &eqsim; 
+PASS XHTML1.0 Transitional parsing &eqslantgtr; 
+PASS XHTML1.0 Transitional parsing &eqslantless; 
+PASS XHTML1.0 Transitional parsing &Equal; 
+PASS XHTML1.0 Transitional parsing &equals; 
+PASS XHTML1.0 Transitional parsing &EqualTilde; 
+PASS XHTML1.0 Transitional parsing &equest; 
+PASS XHTML1.0 Transitional parsing &Equilibrium; 
+PASS XHTML1.0 Transitional parsing &equiv; 
+PASS XHTML1.0 Transitional parsing &equivDD; 
+PASS XHTML1.0 Transitional parsing &eqvparsl; 
+PASS XHTML1.0 Transitional parsing &erarr; 
+PASS XHTML1.0 Transitional parsing &erDot; 
+PASS XHTML1.0 Transitional parsing &escr; 
+PASS XHTML1.0 Transitional parsing &Escr; 
+PASS XHTML1.0 Transitional parsing &esdot; 
+PASS XHTML1.0 Transitional parsing &Esim; 
+PASS XHTML1.0 Transitional parsing &esim; 
+PASS XHTML1.0 Transitional parsing &Eta; 
+PASS XHTML1.0 Transitional parsing &eta; 
+PASS XHTML1.0 Transitional parsing &ETH; 
+PASS XHTML1.0 Transitional parsing &eth; 
+PASS XHTML1.0 Transitional parsing &Euml; 
+PASS XHTML1.0 Transitional parsing &euml; 
+PASS XHTML1.0 Transitional parsing &euro; 
+PASS XHTML1.0 Transitional parsing &excl; 
+PASS XHTML1.0 Transitional parsing &exist; 
+PASS XHTML1.0 Transitional parsing &Exists; 
+PASS XHTML1.0 Transitional parsing &expectation; 
+PASS XHTML1.0 Transitional parsing &exponentiale; 
+PASS XHTML1.0 Transitional parsing &ExponentialE; 
+PASS XHTML1.0 Transitional parsing &fallingdotseq; 
+PASS XHTML1.0 Transitional parsing &Fcy; 
+PASS XHTML1.0 Transitional parsing &fcy; 
+PASS XHTML1.0 Transitional parsing &female; 
+PASS XHTML1.0 Transitional parsing &ffilig; 
+PASS XHTML1.0 Transitional parsing &fflig; 
+PASS XHTML1.0 Transitional parsing &ffllig; 
+PASS XHTML1.0 Transitional parsing &Ffr; 
+PASS XHTML1.0 Transitional parsing &ffr; 
+PASS XHTML1.0 Transitional parsing &filig; 
+PASS XHTML1.0 Transitional parsing &FilledSmallSquare; 
+PASS XHTML1.0 Transitional parsing &FilledVerySmallSquare; 
+PASS XHTML1.0 Transitional parsing &fjlig; 
+PASS XHTML1.0 Transitional parsing &flat; 
+PASS XHTML1.0 Transitional parsing &fllig; 
+PASS XHTML1.0 Transitional parsing &fltns; 
+PASS XHTML1.0 Transitional parsing &fnof; 
+PASS XHTML1.0 Transitional parsing &Fopf; 
+PASS XHTML1.0 Transitional parsing &fopf; 
+PASS XHTML1.0 Transitional parsing &forall; 
+PASS XHTML1.0 Transitional parsing &ForAll; 
+PASS XHTML1.0 Transitional parsing &fork; 
+PASS XHTML1.0 Transitional parsing &forkv; 
+PASS XHTML1.0 Transitional parsing &Fouriertrf; 
+PASS XHTML1.0 Transitional parsing &fpartint; 
+PASS XHTML1.0 Transitional parsing &frac12; 
+PASS XHTML1.0 Transitional parsing &frac13; 
+PASS XHTML1.0 Transitional parsing &frac14; 
+PASS XHTML1.0 Transitional parsing &frac15; 
+PASS XHTML1.0 Transitional parsing &frac16; 
+PASS XHTML1.0 Transitional parsing &frac18; 
+PASS XHTML1.0 Transitional parsing &frac23; 
+PASS XHTML1.0 Transitional parsing &frac25; 
+PASS XHTML1.0 Transitional parsing &frac34; 
+PASS XHTML1.0 Transitional parsing &frac35; 
+PASS XHTML1.0 Transitional parsing &frac38; 
+PASS XHTML1.0 Transitional parsing &frac45; 
+PASS XHTML1.0 Transitional parsing &frac56; 
+PASS XHTML1.0 Transitional parsing &frac58; 
+PASS XHTML1.0 Transitional parsing &frac78; 
+PASS XHTML1.0 Transitional parsing &frasl; 
+PASS XHTML1.0 Transitional parsing &frown; 
+PASS XHTML1.0 Transitional parsing &fscr; 
+PASS XHTML1.0 Transitional parsing &Fscr; 
+PASS XHTML1.0 Transitional parsing &gacute; 
+PASS XHTML1.0 Transitional parsing &Gamma; 
+PASS XHTML1.0 Transitional parsing &gamma; 
+PASS XHTML1.0 Transitional parsing &Gammad; 
+PASS XHTML1.0 Transitional parsing &gammad; 
+PASS XHTML1.0 Transitional parsing &gap; 
+PASS XHTML1.0 Transitional parsing &Gbreve; 
+PASS XHTML1.0 Transitional parsing &gbreve; 
+PASS XHTML1.0 Transitional parsing &Gcedil; 
+PASS XHTML1.0 Transitional parsing &Gcirc; 
+PASS XHTML1.0 Transitional parsing &gcirc; 
+PASS XHTML1.0 Transitional parsing &Gcy; 
+PASS XHTML1.0 Transitional parsing &gcy; 
+PASS XHTML1.0 Transitional parsing &Gdot; 
+PASS XHTML1.0 Transitional parsing &gdot; 
+PASS XHTML1.0 Transitional parsing &ge; 
+PASS XHTML1.0 Transitional parsing &gE; 
+PASS XHTML1.0 Transitional parsing &gEl; 
+PASS XHTML1.0 Transitional parsing &gel; 
+PASS XHTML1.0 Transitional parsing &geq; 
+PASS XHTML1.0 Transitional parsing &geqq; 
+PASS XHTML1.0 Transitional parsing &geqslant; 
+PASS XHTML1.0 Transitional parsing &gescc; 
+PASS XHTML1.0 Transitional parsing &ges; 
+PASS XHTML1.0 Transitional parsing &gesdot; 
+PASS XHTML1.0 Transitional parsing &gesdoto; 
+PASS XHTML1.0 Transitional parsing &gesdotol; 
+PASS XHTML1.0 Transitional parsing &gesl; 
+PASS XHTML1.0 Transitional parsing &gesles; 
+PASS XHTML1.0 Transitional parsing &Gfr; 
+PASS XHTML1.0 Transitional parsing &gfr; 
+PASS XHTML1.0 Transitional parsing &gg; 
+PASS XHTML1.0 Transitional parsing &Gg; 
+PASS XHTML1.0 Transitional parsing &ggg; 
+PASS XHTML1.0 Transitional parsing &gimel; 
+PASS XHTML1.0 Transitional parsing &GJcy; 
+PASS XHTML1.0 Transitional parsing &gjcy; 
+PASS XHTML1.0 Transitional parsing &gla; 
+PASS XHTML1.0 Transitional parsing &gl; 
+PASS XHTML1.0 Transitional parsing &glE; 
+PASS XHTML1.0 Transitional parsing &glj; 
+PASS XHTML1.0 Transitional parsing &gnap; 
+PASS XHTML1.0 Transitional parsing &gnapprox; 
+PASS XHTML1.0 Transitional parsing &gne; 
+PASS XHTML1.0 Transitional parsing &gnE; 
+PASS XHTML1.0 Transitional parsing &gneq; 
+PASS XHTML1.0 Transitional parsing &gneqq; 
+PASS XHTML1.0 Transitional parsing &gnsim; 
+PASS XHTML1.0 Transitional parsing &Gopf; 
+PASS XHTML1.0 Transitional parsing &gopf; 
+PASS XHTML1.0 Transitional parsing &grave; 
+PASS XHTML1.0 Transitional parsing &GreaterEqual; 
+PASS XHTML1.0 Transitional parsing &GreaterEqualLess; 
+PASS XHTML1.0 Transitional parsing &GreaterFullEqual; 
+PASS XHTML1.0 Transitional parsing &GreaterGreater; 
+PASS XHTML1.0 Transitional parsing &GreaterLess; 
+PASS XHTML1.0 Transitional parsing &GreaterSlantEqual; 
+PASS XHTML1.0 Transitional parsing &GreaterTilde; 
+PASS XHTML1.0 Transitional parsing &Gscr; 
+PASS XHTML1.0 Transitional parsing &gscr; 
+PASS XHTML1.0 Transitional parsing &gsim; 
+PASS XHTML1.0 Transitional parsing &gsime; 
+PASS XHTML1.0 Transitional parsing &gsiml; 
+PASS XHTML1.0 Transitional parsing &gtcc; 
+PASS XHTML1.0 Transitional parsing &gtcir; 
+PASS XHTML1.0 Transitional parsing &gt; 
+PASS XHTML1.0 Transitional parsing &GT; 
+PASS XHTML1.0 Transitional parsing &Gt; 
+PASS XHTML1.0 Transitional parsing &gtdot; 
+PASS XHTML1.0 Transitional parsing &gtlPar; 
+PASS XHTML1.0 Transitional parsing &gtquest; 
+PASS XHTML1.0 Transitional parsing &gtrapprox; 
+PASS XHTML1.0 Transitional parsing &gtrarr; 
+PASS XHTML1.0 Transitional parsing &gtrdot; 
+PASS XHTML1.0 Transitional parsing &gtreqless; 
+PASS XHTML1.0 Transitional parsing &gtreqqless; 
+PASS XHTML1.0 Transitional parsing &gtrless; 
+PASS XHTML1.0 Transitional parsing &gtrsim; 
+PASS XHTML1.0 Transitional parsing &gvertneqq; 
+PASS XHTML1.0 Transitional parsing &gvnE; 
+PASS XHTML1.0 Transitional parsing &Hacek; 
+PASS XHTML1.0 Transitional parsing &hairsp; 
+PASS XHTML1.0 Transitional parsing &half; 
+PASS XHTML1.0 Transitional parsing &hamilt; 
+PASS XHTML1.0 Transitional parsing &HARDcy; 
+PASS XHTML1.0 Transitional parsing &hardcy; 
+PASS XHTML1.0 Transitional parsing &harrcir; 
+PASS XHTML1.0 Transitional parsing &harr; 
+PASS XHTML1.0 Transitional parsing &hArr; 
+PASS XHTML1.0 Transitional parsing &harrw; 
+PASS XHTML1.0 Transitional parsing &Hat; 
+PASS XHTML1.0 Transitional parsing &hbar; 
+PASS XHTML1.0 Transitional parsing &Hcirc; 
+PASS XHTML1.0 Transitional parsing &hcirc; 
+PASS XHTML1.0 Transitional parsing &hearts; 
+PASS XHTML1.0 Transitional parsing &heartsuit; 
+PASS XHTML1.0 Transitional parsing &hellip; 
+PASS XHTML1.0 Transitional parsing &hercon; 
+PASS XHTML1.0 Transitional parsing &hfr; 
+PASS XHTML1.0 Transitional parsing &Hfr; 
+PASS XHTML1.0 Transitional parsing &HilbertSpace; 
+PASS XHTML1.0 Transitional parsing &hksearow; 
+PASS XHTML1.0 Transitional parsing &hkswarow; 
+PASS XHTML1.0 Transitional parsing &hoarr; 
+PASS XHTML1.0 Transitional parsing &homtht; 
+PASS XHTML1.0 Transitional parsing &hookleftarrow; 
+PASS XHTML1.0 Transitional parsing &hookrightarrow; 
+PASS XHTML1.0 Transitional parsing &hopf; 
+PASS XHTML1.0 Transitional parsing &Hopf; 
+PASS XHTML1.0 Transitional parsing &horbar; 
+PASS XHTML1.0 Transitional parsing &HorizontalLine; 
+PASS XHTML1.0 Transitional parsing &hscr; 
+PASS XHTML1.0 Transitional parsing &Hscr; 
+PASS XHTML1.0 Transitional parsing &hslash; 
+PASS XHTML1.0 Transitional parsing &Hstrok; 
+PASS XHTML1.0 Transitional parsing &hstrok; 
+PASS XHTML1.0 Transitional parsing &HumpDownHump; 
+PASS XHTML1.0 Transitional parsing &HumpEqual; 
+PASS XHTML1.0 Transitional parsing &hybull; 
+PASS XHTML1.0 Transitional parsing &hyphen; 
+PASS XHTML1.0 Transitional parsing &Iacute; 
+PASS XHTML1.0 Transitional parsing &iacute; 
+PASS XHTML1.0 Transitional parsing &ic; 
+PASS XHTML1.0 Transitional parsing &Icirc; 
+PASS XHTML1.0 Transitional parsing &icirc; 
+PASS XHTML1.0 Transitional parsing &Icy; 
+PASS XHTML1.0 Transitional parsing &icy; 
+PASS XHTML1.0 Transitional parsing &Idot; 
+PASS XHTML1.0 Transitional parsing &IEcy; 
+PASS XHTML1.0 Transitional parsing &iecy; 
+PASS XHTML1.0 Transitional parsing &iexcl; 
+PASS XHTML1.0 Transitional parsing &iff; 
+PASS XHTML1.0 Transitional parsing &ifr; 
+PASS XHTML1.0 Transitional parsing &Ifr; 
+PASS XHTML1.0 Transitional parsing &Igrave; 
+PASS XHTML1.0 Transitional parsing &igrave; 
+PASS XHTML1.0 Transitional parsing &ii; 
+PASS XHTML1.0 Transitional parsing &iiiint; 
+PASS XHTML1.0 Transitional parsing &iiint; 
+PASS XHTML1.0 Transitional parsing &iinfin; 
+PASS XHTML1.0 Transitional parsing &iiota; 
+PASS XHTML1.0 Transitional parsing &IJlig; 
+PASS XHTML1.0 Transitional parsing &ijlig; 
+PASS XHTML1.0 Transitional parsing &Imacr; 
+PASS XHTML1.0 Transitional parsing &imacr; 
+PASS XHTML1.0 Transitional parsing &image; 
+PASS XHTML1.0 Transitional parsing &ImaginaryI; 
+PASS XHTML1.0 Transitional parsing &imagline; 
+PASS XHTML1.0 Transitional parsing &imagpart; 
+PASS XHTML1.0 Transitional parsing &imath; 
+PASS XHTML1.0 Transitional parsing &Im; 
+PASS XHTML1.0 Transitional parsing &imof; 
+PASS XHTML1.0 Transitional parsing &imped; 
+PASS XHTML1.0 Transitional parsing &Implies; 
+PASS XHTML1.0 Transitional parsing &incare; 
+PASS XHTML1.0 Transitional parsing &in; 
+PASS XHTML1.0 Transitional parsing &infin; 
+PASS XHTML1.0 Transitional parsing &infintie; 
+PASS XHTML1.0 Transitional parsing &inodot; 
+PASS XHTML1.0 Transitional parsing &intcal; 
+PASS XHTML1.0 Transitional parsing &int; 
+PASS XHTML1.0 Transitional parsing &Int; 
+PASS XHTML1.0 Transitional parsing &integers; 
+PASS XHTML1.0 Transitional parsing &Integral; 
+PASS XHTML1.0 Transitional parsing &intercal; 
+PASS XHTML1.0 Transitional parsing &Intersection; 
+PASS XHTML1.0 Transitional parsing &intlarhk; 
+PASS XHTML1.0 Transitional parsing &intprod; 
+PASS XHTML1.0 Transitional parsing &InvisibleComma; 
+PASS XHTML1.0 Transitional parsing &InvisibleTimes; 
+PASS XHTML1.0 Transitional parsing &IOcy; 
+PASS XHTML1.0 Transitional parsing &iocy; 
+PASS XHTML1.0 Transitional parsing &Iogon; 
+PASS XHTML1.0 Transitional parsing &iogon; 
+PASS XHTML1.0 Transitional parsing &Iopf; 
+PASS XHTML1.0 Transitional parsing &iopf; 
+PASS XHTML1.0 Transitional parsing &Iota; 
+PASS XHTML1.0 Transitional parsing &iota; 
+PASS XHTML1.0 Transitional parsing &iprod; 
+PASS XHTML1.0 Transitional parsing &iquest; 
+PASS XHTML1.0 Transitional parsing &iscr; 
+PASS XHTML1.0 Transitional parsing &Iscr; 
+PASS XHTML1.0 Transitional parsing &isin; 
+PASS XHTML1.0 Transitional parsing &isindot; 
+PASS XHTML1.0 Transitional parsing &isinE; 
+PASS XHTML1.0 Transitional parsing &isins; 
+PASS XHTML1.0 Transitional parsing &isinsv; 
+PASS XHTML1.0 Transitional parsing &isinv; 
+PASS XHTML1.0 Transitional parsing &it; 
+PASS XHTML1.0 Transitional parsing &Itilde; 
+PASS XHTML1.0 Transitional parsing &itilde; 
+PASS XHTML1.0 Transitional parsing &Iukcy; 
+PASS XHTML1.0 Transitional parsing &iukcy; 
+PASS XHTML1.0 Transitional parsing &Iuml; 
+PASS XHTML1.0 Transitional parsing &iuml; 
+PASS XHTML1.0 Transitional parsing &Jcirc; 
+PASS XHTML1.0 Transitional parsing &jcirc; 
+PASS XHTML1.0 Transitional parsing &Jcy; 
+PASS XHTML1.0 Transitional parsing &jcy; 
+PASS XHTML1.0 Transitional parsing &Jfr; 
+PASS XHTML1.0 Transitional parsing &jfr; 
+PASS XHTML1.0 Transitional parsing &jmath; 
+PASS XHTML1.0 Transitional parsing &Jopf; 
+PASS XHTML1.0 Transitional parsing &jopf; 
+PASS XHTML1.0 Transitional parsing &Jscr; 
+PASS XHTML1.0 Transitional parsing &jscr; 
+PASS XHTML1.0 Transitional parsing &Jsercy; 
+PASS XHTML1.0 Transitional parsing &jsercy; 
+PASS XHTML1.0 Transitional parsing &Jukcy; 
+PASS XHTML1.0 Transitional parsing &jukcy; 
+PASS XHTML1.0 Transitional parsing &Kappa; 
+PASS XHTML1.0 Transitional parsing &kappa; 
+PASS XHTML1.0 Transitional parsing &kappav; 
+PASS XHTML1.0 Transitional parsing &Kcedil; 
+PASS XHTML1.0 Transitional parsing &kcedil; 
+PASS XHTML1.0 Transitional parsing &Kcy; 
+PASS XHTML1.0 Transitional parsing &kcy; 
+PASS XHTML1.0 Transitional parsing &Kfr; 
+PASS XHTML1.0 Transitional parsing &kfr; 
+PASS XHTML1.0 Transitional parsing &kgreen; 
+PASS XHTML1.0 Transitional parsing &KHcy; 
+PASS XHTML1.0 Transitional parsing &khcy; 
+PASS XHTML1.0 Transitional parsing &KJcy; 
+PASS XHTML1.0 Transitional parsing &kjcy; 
+PASS XHTML1.0 Transitional parsing &Kopf; 
+PASS XHTML1.0 Transitional parsing &kopf; 
+PASS XHTML1.0 Transitional parsing &Kscr; 
+PASS XHTML1.0 Transitional parsing &kscr; 
+PASS XHTML1.0 Transitional parsing &lAarr; 
+PASS XHTML1.0 Transitional parsing &Lacute; 
+PASS XHTML1.0 Transitional parsing &lacute; 
+PASS XHTML1.0 Transitional parsing &laemptyv; 
+PASS XHTML1.0 Transitional parsing &lagran; 
+PASS XHTML1.0 Transitional parsing &Lambda; 
+PASS XHTML1.0 Transitional parsing &lambda; 
+PASS XHTML1.0 Transitional parsing &lang; 
+PASS XHTML1.0 Transitional parsing &Lang; 
+PASS XHTML1.0 Transitional parsing &langd; 
+PASS XHTML1.0 Transitional parsing &langle; 
+PASS XHTML1.0 Transitional parsing &lap; 
+PASS XHTML1.0 Transitional parsing &Laplacetrf; 
+PASS XHTML1.0 Transitional parsing &laquo; 
+PASS XHTML1.0 Transitional parsing &larrb; 
+PASS XHTML1.0 Transitional parsing &larrbfs; 
+PASS XHTML1.0 Transitional parsing &larr; 
+PASS XHTML1.0 Transitional parsing &Larr; 
+PASS XHTML1.0 Transitional parsing &lArr; 
+PASS XHTML1.0 Transitional parsing &larrfs; 
+PASS XHTML1.0 Transitional parsing &larrhk; 
+PASS XHTML1.0 Transitional parsing &larrlp; 
+PASS XHTML1.0 Transitional parsing &larrpl; 
+PASS XHTML1.0 Transitional parsing &larrsim; 
+PASS XHTML1.0 Transitional parsing &larrtl; 
+PASS XHTML1.0 Transitional parsing &latail; 
+PASS XHTML1.0 Transitional parsing &lAtail; 
+PASS XHTML1.0 Transitional parsing &lat; 
+PASS XHTML1.0 Transitional parsing &late; 
+PASS XHTML1.0 Transitional parsing &lates; 
+PASS XHTML1.0 Transitional parsing &lbarr; 
+PASS XHTML1.0 Transitional parsing &lBarr; 
+PASS XHTML1.0 Transitional parsing &lbbrk; 
+PASS XHTML1.0 Transitional parsing &lbrace; 
+PASS XHTML1.0 Transitional parsing &lbrack; 
+PASS XHTML1.0 Transitional parsing &lbrke; 
+PASS XHTML1.0 Transitional parsing &lbrksld; 
+PASS XHTML1.0 Transitional parsing &lbrkslu; 
+PASS XHTML1.0 Transitional parsing &Lcaron; 
+PASS XHTML1.0 Transitional parsing &lcaron; 
+PASS XHTML1.0 Transitional parsing &Lcedil; 
+PASS XHTML1.0 Transitional parsing &lcedil; 
+PASS XHTML1.0 Transitional parsing &lceil; 
+PASS XHTML1.0 Transitional parsing &lcub; 
+PASS XHTML1.0 Transitional parsing &Lcy; 
+PASS XHTML1.0 Transitional parsing &lcy; 
+PASS XHTML1.0 Transitional parsing &ldca; 
+PASS XHTML1.0 Transitional parsing &ldquo; 
+PASS XHTML1.0 Transitional parsing &ldquor; 
+PASS XHTML1.0 Transitional parsing &ldrdhar; 
+PASS XHTML1.0 Transitional parsing &ldrushar; 
+PASS XHTML1.0 Transitional parsing &ldsh; 
+PASS XHTML1.0 Transitional parsing &le; 
+PASS XHTML1.0 Transitional parsing &lE; 
+PASS XHTML1.0 Transitional parsing &LeftAngleBracket; 
+PASS XHTML1.0 Transitional parsing &LeftArrowBar; 
+PASS XHTML1.0 Transitional parsing &leftarrow; 
+PASS XHTML1.0 Transitional parsing &LeftArrow; 
+PASS XHTML1.0 Transitional parsing &Leftarrow; 
+PASS XHTML1.0 Transitional parsing &LeftArrowRightArrow; 
+PASS XHTML1.0 Transitional parsing &leftarrowtail; 
+PASS XHTML1.0 Transitional parsing &LeftCeiling; 
+PASS XHTML1.0 Transitional parsing &LeftDoubleBracket; 
+PASS XHTML1.0 Transitional parsing &LeftDownTeeVector; 
+PASS XHTML1.0 Transitional parsing &LeftDownVectorBar; 
+PASS XHTML1.0 Transitional parsing &LeftDownVector; 
+PASS XHTML1.0 Transitional parsing &LeftFloor; 
+PASS XHTML1.0 Transitional parsing &leftharpoondown; 
+PASS XHTML1.0 Transitional parsing &leftharpoonup; 
+PASS XHTML1.0 Transitional parsing &leftleftarrows; 
+PASS XHTML1.0 Transitional parsing &leftrightarrow; 
+PASS XHTML1.0 Transitional parsing &LeftRightArrow; 
+PASS XHTML1.0 Transitional parsing &Leftrightarrow; 
+PASS XHTML1.0 Transitional parsing &leftrightarrows; 
+PASS XHTML1.0 Transitional parsing &leftrightharpoons; 
+PASS XHTML1.0 Transitional parsing &leftrightsquigarrow; 
+PASS XHTML1.0 Transitional parsing &LeftRightVector; 
+PASS XHTML1.0 Transitional parsing &LeftTeeArrow; 
+PASS XHTML1.0 Transitional parsing &LeftTee; 
+PASS XHTML1.0 Transitional parsing &LeftTeeVector; 
+PASS XHTML1.0 Transitional parsing &leftthreetimes; 
+PASS XHTML1.0 Transitional parsing &LeftTriangleBar; 
+PASS XHTML1.0 Transitional parsing &LeftTriangle; 
+PASS XHTML1.0 Transitional parsing &LeftTriangleEqual; 
+PASS XHTML1.0 Transitional parsing &LeftUpDownVector; 
+PASS XHTML1.0 Transitional parsing &LeftUpTeeVector; 
+PASS XHTML1.0 Transitional parsing &LeftUpVectorBar; 
+PASS XHTML1.0 Transitional parsing &LeftUpVector; 
+PASS XHTML1.0 Transitional parsing &LeftVectorBar; 
+PASS XHTML1.0 Transitional parsing &LeftVector; 
+PASS XHTML1.0 Transitional parsing &lEg; 
+PASS XHTML1.0 Transitional parsing &leg; 
+PASS XHTML1.0 Transitional parsing &leq; 
+PASS XHTML1.0 Transitional parsing &leqq; 
+PASS XHTML1.0 Transitional parsing &leqslant; 
+PASS XHTML1.0 Transitional parsing &lescc; 
+PASS XHTML1.0 Transitional parsing &les; 
+PASS XHTML1.0 Transitional parsing &lesdot; 
+PASS XHTML1.0 Transitional parsing &lesdoto; 
+PASS XHTML1.0 Transitional parsing &lesdotor; 
+PASS XHTML1.0 Transitional parsing &lesg; 
+PASS XHTML1.0 Transitional parsing &lesges; 
+PASS XHTML1.0 Transitional parsing &lessapprox; 
+PASS XHTML1.0 Transitional parsing &lessdot; 
+PASS XHTML1.0 Transitional parsing &lesseqgtr; 
+PASS XHTML1.0 Transitional parsing &lesseqqgtr; 
+PASS XHTML1.0 Transitional parsing &LessEqualGreater; 
+PASS XHTML1.0 Transitional parsing &LessFullEqual; 
+PASS XHTML1.0 Transitional parsing &LessGreater; 
+PASS XHTML1.0 Transitional parsing &lessgtr; 
+PASS XHTML1.0 Transitional parsing &LessLess; 
+PASS XHTML1.0 Transitional parsing &lesssim; 
+PASS XHTML1.0 Transitional parsing &LessSlantEqual; 
+PASS XHTML1.0 Transitional parsing &LessTilde; 
+PASS XHTML1.0 Transitional parsing &lfisht; 
+PASS XHTML1.0 Transitional parsing &lfloor; 
+PASS XHTML1.0 Transitional parsing &Lfr; 
+PASS XHTML1.0 Transitional parsing &lfr; 
+PASS XHTML1.0 Transitional parsing &lg; 
+PASS XHTML1.0 Transitional parsing &lgE; 
+PASS XHTML1.0 Transitional parsing &lHar; 
+PASS XHTML1.0 Transitional parsing &lhard; 
+PASS XHTML1.0 Transitional parsing &lharu; 
+PASS XHTML1.0 Transitional parsing &lharul; 
+PASS XHTML1.0 Transitional parsing &lhblk; 
+PASS XHTML1.0 Transitional parsing &LJcy; 
+PASS XHTML1.0 Transitional parsing &ljcy; 
+PASS XHTML1.0 Transitional parsing &llarr; 
+PASS XHTML1.0 Transitional parsing &ll; 
+PASS XHTML1.0 Transitional parsing &Ll; 
+PASS XHTML1.0 Transitional parsing &llcorner; 
+PASS XHTML1.0 Transitional parsing &Lleftarrow; 
+PASS XHTML1.0 Transitional parsing &llhard; 
+PASS XHTML1.0 Transitional parsing &lltri; 
+PASS XHTML1.0 Transitional parsing &Lmidot; 
+PASS XHTML1.0 Transitional parsing &lmidot; 
+PASS XHTML1.0 Transitional parsing &lmoustache; 
+PASS XHTML1.0 Transitional parsing &lmoust; 
+PASS XHTML1.0 Transitional parsing &lnap; 
+PASS XHTML1.0 Transitional parsing &lnapprox; 
+PASS XHTML1.0 Transitional parsing &lne; 
+PASS XHTML1.0 Transitional parsing &lnE; 
+PASS XHTML1.0 Transitional parsing &lneq; 
+PASS XHTML1.0 Transitional parsing &lneqq; 
+PASS XHTML1.0 Transitional parsing &lnsim; 
+PASS XHTML1.0 Transitional parsing &loang; 
+PASS XHTML1.0 Transitional parsing &loarr; 
+PASS XHTML1.0 Transitional parsing &lobrk; 
+PASS XHTML1.0 Transitional parsing &longleftarrow; 
+PASS XHTML1.0 Transitional parsing &LongLeftArrow; 
+PASS XHTML1.0 Transitional parsing &Longleftarrow; 
+PASS XHTML1.0 Transitional parsing &longleftrightarrow; 
+PASS XHTML1.0 Transitional parsing &LongLeftRightArrow; 
+PASS XHTML1.0 Transitional parsing &Longleftrightarrow; 
+PASS XHTML1.0 Transitional parsing &longmapsto; 
+PASS XHTML1.0 Transitional parsing &longrightarrow; 
+PASS XHTML1.0 Transitional parsing &LongRightArrow; 
+PASS XHTML1.0 Transitional parsing &Longrightarrow; 
+PASS XHTML1.0 Transitional parsing &looparrowleft; 
+PASS XHTML1.0 Transitional parsing &looparrowright; 
+PASS XHTML1.0 Transitional parsing &lopar; 
+PASS XHTML1.0 Transitional parsing &Lopf; 
+PASS XHTML1.0 Transitional parsing &lopf; 
+PASS XHTML1.0 Transitional parsing &loplus; 
+PASS XHTML1.0 Transitional parsing &lotimes; 
+PASS XHTML1.0 Transitional parsing &lowast; 
+PASS XHTML1.0 Transitional parsing &lowbar; 
+PASS XHTML1.0 Transitional parsing &LowerLeftArrow; 
+PASS XHTML1.0 Transitional parsing &LowerRightArrow; 
+PASS XHTML1.0 Transitional parsing &loz; 
+PASS XHTML1.0 Transitional parsing &lozenge; 
+PASS XHTML1.0 Transitional parsing &lozf; 
+PASS XHTML1.0 Transitional parsing &lpar; 
+PASS XHTML1.0 Transitional parsing &lparlt; 
+PASS XHTML1.0 Transitional parsing &lrarr; 
+PASS XHTML1.0 Transitional parsing &lrcorner; 
+PASS XHTML1.0 Transitional parsing &lrhar; 
+PASS XHTML1.0 Transitional parsing &lrhard; 
+PASS XHTML1.0 Transitional parsing &lrm; 
+PASS XHTML1.0 Transitional parsing &lrtri; 
+PASS XHTML1.0 Transitional parsing &lsaquo; 
+PASS XHTML1.0 Transitional parsing &lscr; 
+PASS XHTML1.0 Transitional parsing &Lscr; 
+PASS XHTML1.0 Transitional parsing &lsh; 
+PASS XHTML1.0 Transitional parsing &Lsh; 
+PASS XHTML1.0 Transitional parsing &lsim; 
+PASS XHTML1.0 Transitional parsing &lsime; 
+PASS XHTML1.0 Transitional parsing &lsimg; 
+PASS XHTML1.0 Transitional parsing &lsqb; 
+PASS XHTML1.0 Transitional parsing &lsquo; 
+PASS XHTML1.0 Transitional parsing &lsquor; 
+PASS XHTML1.0 Transitional parsing &Lstrok; 
+PASS XHTML1.0 Transitional parsing &lstrok; 
+PASS XHTML1.0 Transitional parsing &ltcc; 
+PASS XHTML1.0 Transitional parsing &ltcir; 
+PASS XHTML1.0 Transitional parsing &lt; 
+FAIL XHTML1.0 Transitional parsing &LT; assert_true: expected true got false
+PASS XHTML1.0 Transitional parsing &Lt; 
+PASS XHTML1.0 Transitional parsing &ltdot; 
+PASS XHTML1.0 Transitional parsing &lthree; 
+PASS XHTML1.0 Transitional parsing &ltimes; 
+PASS XHTML1.0 Transitional parsing &ltlarr; 
+PASS XHTML1.0 Transitional parsing &ltquest; 
+PASS XHTML1.0 Transitional parsing &ltri; 
+PASS XHTML1.0 Transitional parsing &ltrie; 
+PASS XHTML1.0 Transitional parsing &ltrif; 
+PASS XHTML1.0 Transitional parsing &ltrPar; 
+PASS XHTML1.0 Transitional parsing &lurdshar; 
+PASS XHTML1.0 Transitional parsing &luruhar; 
+PASS XHTML1.0 Transitional parsing &lvertneqq; 
+PASS XHTML1.0 Transitional parsing &lvnE; 
+PASS XHTML1.0 Transitional parsing &macr; 
+PASS XHTML1.0 Transitional parsing &male; 
+PASS XHTML1.0 Transitional parsing &malt; 
+PASS XHTML1.0 Transitional parsing &maltese; 
+PASS XHTML1.0 Transitional parsing &Map; 
+PASS XHTML1.0 Transitional parsing &map; 
+PASS XHTML1.0 Transitional parsing &mapsto; 
+PASS XHTML1.0 Transitional parsing &mapstodown; 
+PASS XHTML1.0 Transitional parsing &mapstoleft; 
+PASS XHTML1.0 Transitional parsing &mapstoup; 
+PASS XHTML1.0 Transitional parsing &marker; 
+PASS XHTML1.0 Transitional parsing &mcomma; 
+PASS XHTML1.0 Transitional parsing &Mcy; 
+PASS XHTML1.0 Transitional parsing &mcy; 
+PASS XHTML1.0 Transitional parsing &mdash; 
+PASS XHTML1.0 Transitional parsing &mDDot; 
+PASS XHTML1.0 Transitional parsing &measuredangle; 
+PASS XHTML1.0 Transitional parsing &MediumSpace; 
+PASS XHTML1.0 Transitional parsing &Mellintrf; 
+PASS XHTML1.0 Transitional parsing &Mfr; 
+PASS XHTML1.0 Transitional parsing &mfr; 
+PASS XHTML1.0 Transitional parsing &mho; 
+PASS XHTML1.0 Transitional parsing &micro; 
+PASS XHTML1.0 Transitional parsing &midast; 
+PASS XHTML1.0 Transitional parsing &midcir; 
+PASS XHTML1.0 Transitional parsing &mid; 
+PASS XHTML1.0 Transitional parsing &middot; 
+PASS XHTML1.0 Transitional parsing &minusb; 
+PASS XHTML1.0 Transitional parsing &minus; 
+PASS XHTML1.0 Transitional parsing &minusd; 
+PASS XHTML1.0 Transitional parsing &minusdu; 
+PASS XHTML1.0 Transitional parsing &MinusPlus; 
+PASS XHTML1.0 Transitional parsing &mlcp; 
+PASS XHTML1.0 Transitional parsing &mldr; 
+PASS XHTML1.0 Transitional parsing &mnplus; 
+PASS XHTML1.0 Transitional parsing &models; 
+PASS XHTML1.0 Transitional parsing &Mopf; 
+PASS XHTML1.0 Transitional parsing &mopf; 
+PASS XHTML1.0 Transitional parsing &mp; 
+PASS XHTML1.0 Transitional parsing &mscr; 
+PASS XHTML1.0 Transitional parsing &Mscr; 
+PASS XHTML1.0 Transitional parsing &mstpos; 
+PASS XHTML1.0 Transitional parsing &Mu; 
+PASS XHTML1.0 Transitional parsing &mu; 
+PASS XHTML1.0 Transitional parsing &multimap; 
+PASS XHTML1.0 Transitional parsing &mumap; 
+PASS XHTML1.0 Transitional parsing &nabla; 
+PASS XHTML1.0 Transitional parsing &Nacute; 
+PASS XHTML1.0 Transitional parsing &nacute; 
+PASS XHTML1.0 Transitional parsing &nang; 
+PASS XHTML1.0 Transitional parsing &nap; 
+PASS XHTML1.0 Transitional parsing &napE; 
+PASS XHTML1.0 Transitional parsing &napid; 
+PASS XHTML1.0 Transitional parsing &napos; 
+PASS XHTML1.0 Transitional parsing &napprox; 
+PASS XHTML1.0 Transitional parsing &natural; 
+PASS XHTML1.0 Transitional parsing &naturals; 
+PASS XHTML1.0 Transitional parsing &natur; 
+PASS XHTML1.0 Transitional parsing &nbsp; 
+PASS XHTML1.0 Transitional parsing &nbump; 
+PASS XHTML1.0 Transitional parsing &nbumpe; 
+PASS XHTML1.0 Transitional parsing &ncap; 
+PASS XHTML1.0 Transitional parsing &Ncaron; 
+PASS XHTML1.0 Transitional parsing &ncaron; 
+PASS XHTML1.0 Transitional parsing &Ncedil; 
+PASS XHTML1.0 Transitional parsing &ncedil; 
+PASS XHTML1.0 Transitional parsing &ncong; 
+PASS XHTML1.0 Transitional parsing &ncongdot; 
+PASS XHTML1.0 Transitional parsing &ncup; 
+PASS XHTML1.0 Transitional parsing &Ncy; 
+PASS XHTML1.0 Transitional parsing &ncy; 
+PASS XHTML1.0 Transitional parsing &ndash; 
+PASS XHTML1.0 Transitional parsing &nearhk; 
+PASS XHTML1.0 Transitional parsing &nearr; 
+PASS XHTML1.0 Transitional parsing &neArr; 
+PASS XHTML1.0 Transitional parsing &nearrow; 
+PASS XHTML1.0 Transitional parsing &ne; 
+PASS XHTML1.0 Transitional parsing &nedot; 
+PASS XHTML1.0 Transitional parsing &NegativeMediumSpace; 
+PASS XHTML1.0 Transitional parsing &NegativeThickSpace; 
+PASS XHTML1.0 Transitional parsing &NegativeThinSpace; 
+PASS XHTML1.0 Transitional parsing &NegativeVeryThinSpace; 
+PASS XHTML1.0 Transitional parsing &nequiv; 
+PASS XHTML1.0 Transitional parsing &nesear; 
+PASS XHTML1.0 Transitional parsing &nesim; 
+PASS XHTML1.0 Transitional parsing &NestedGreaterGreater; 
+PASS XHTML1.0 Transitional parsing &NestedLessLess; 
+PASS XHTML1.0 Transitional parsing &NewLine; 
+PASS XHTML1.0 Transitional parsing &nexist; 
+PASS XHTML1.0 Transitional parsing &nexists; 
+PASS XHTML1.0 Transitional parsing &Nfr; 
+PASS XHTML1.0 Transitional parsing &nfr; 
+PASS XHTML1.0 Transitional parsing &ngE; 
+PASS XHTML1.0 Transitional parsing &nge; 
+PASS XHTML1.0 Transitional parsing &ngeq; 
+PASS XHTML1.0 Transitional parsing &ngeqq; 
+PASS XHTML1.0 Transitional parsing &ngeqslant; 
+PASS XHTML1.0 Transitional parsing &nges; 
+PASS XHTML1.0 Transitional parsing &nGg; 
+PASS XHTML1.0 Transitional parsing &ngsim; 
+PASS XHTML1.0 Transitional parsing &nGt; 
+PASS XHTML1.0 Transitional parsing &ngt; 
+PASS XHTML1.0 Transitional parsing &ngtr; 
+PASS XHTML1.0 Transitional parsing &nGtv; 
+PASS XHTML1.0 Transitional parsing &nharr; 
+PASS XHTML1.0 Transitional parsing &nhArr; 
+PASS XHTML1.0 Transitional parsing &nhpar; 
+PASS XHTML1.0 Transitional parsing &ni; 
+PASS XHTML1.0 Transitional parsing &nis; 
+PASS XHTML1.0 Transitional parsing &nisd; 
+PASS XHTML1.0 Transitional parsing &niv; 
+PASS XHTML1.0 Transitional parsing &NJcy; 
+PASS XHTML1.0 Transitional parsing &njcy; 
+PASS XHTML1.0 Transitional parsing &nlarr; 
+PASS XHTML1.0 Transitional parsing &nlArr; 
+PASS XHTML1.0 Transitional parsing &nldr; 
+PASS XHTML1.0 Transitional parsing &nlE; 
+PASS XHTML1.0 Transitional parsing &nle; 
+PASS XHTML1.0 Transitional parsing &nleftarrow; 
+PASS XHTML1.0 Transitional parsing &nLeftarrow; 
+PASS XHTML1.0 Transitional parsing &nleftrightarrow; 
+PASS XHTML1.0 Transitional parsing &nLeftrightarrow; 
+PASS XHTML1.0 Transitional parsing &nleq; 
+PASS XHTML1.0 Transitional parsing &nleqq; 
+PASS XHTML1.0 Transitional parsing &nleqslant; 
+PASS XHTML1.0 Transitional parsing &nles; 
+PASS XHTML1.0 Transitional parsing &nless; 
+PASS XHTML1.0 Transitional parsing &nLl; 
+PASS XHTML1.0 Transitional parsing &nlsim; 
+PASS XHTML1.0 Transitional parsing &nLt; 
+PASS XHTML1.0 Transitional parsing &nlt; 
+PASS XHTML1.0 Transitional parsing &nltri; 
+PASS XHTML1.0 Transitional parsing &nltrie; 
+PASS XHTML1.0 Transitional parsing &nLtv; 
+PASS XHTML1.0 Transitional parsing &nmid; 
+PASS XHTML1.0 Transitional parsing &NoBreak; 
+PASS XHTML1.0 Transitional parsing &NonBreakingSpace; 
+PASS XHTML1.0 Transitional parsing &nopf; 
+PASS XHTML1.0 Transitional parsing &Nopf; 
+PASS XHTML1.0 Transitional parsing &Not; 
+PASS XHTML1.0 Transitional parsing &not; 
+PASS XHTML1.0 Transitional parsing &NotCongruent; 
+PASS XHTML1.0 Transitional parsing &NotCupCap; 
+PASS XHTML1.0 Transitional parsing &NotDoubleVerticalBar; 
+PASS XHTML1.0 Transitional parsing &NotElement; 
+PASS XHTML1.0 Transitional parsing &NotEqual; 
+PASS XHTML1.0 Transitional parsing &NotEqualTilde; 
+PASS XHTML1.0 Transitional parsing &NotExists; 
+PASS XHTML1.0 Transitional parsing &NotGreater; 
+PASS XHTML1.0 Transitional parsing &NotGreaterEqual; 
+PASS XHTML1.0 Transitional parsing &NotGreaterFullEqual; 
+PASS XHTML1.0 Transitional parsing &NotGreaterGreater; 
+PASS XHTML1.0 Transitional parsing &NotGreaterLess; 
+PASS XHTML1.0 Transitional parsing &NotGreaterSlantEqual; 
+PASS XHTML1.0 Transitional parsing &NotGreaterTilde; 
+PASS XHTML1.0 Transitional parsing &NotHumpDownHump; 
+PASS XHTML1.0 Transitional parsing &NotHumpEqual; 
+PASS XHTML1.0 Transitional parsing &notin; 
+PASS XHTML1.0 Transitional parsing &notindot; 
+PASS XHTML1.0 Transitional parsing &notinE; 
+PASS XHTML1.0 Transitional parsing &notinva; 
+PASS XHTML1.0 Transitional parsing &notinvb; 
+PASS XHTML1.0 Transitional parsing &notinvc; 
+PASS XHTML1.0 Transitional parsing &NotLeftTriangleBar; 
+PASS XHTML1.0 Transitional parsing &NotLeftTriangle; 
+PASS XHTML1.0 Transitional parsing &NotLeftTriangleEqual; 
+PASS XHTML1.0 Transitional parsing &NotLess; 
+PASS XHTML1.0 Transitional parsing &NotLessEqual; 
+PASS XHTML1.0 Transitional parsing &NotLessGreater; 
+PASS XHTML1.0 Transitional parsing &NotLessLess; 
+PASS XHTML1.0 Transitional parsing &NotLessSlantEqual; 
+PASS XHTML1.0 Transitional parsing &NotLessTilde; 
+PASS XHTML1.0 Transitional parsing &NotNestedGreaterGreater; 
+PASS XHTML1.0 Transitional parsing &NotNestedLessLess; 
+PASS XHTML1.0 Transitional parsing &notni; 
+PASS XHTML1.0 Transitional parsing &notniva; 
+PASS XHTML1.0 Transitional parsing &notnivb; 
+PASS XHTML1.0 Transitional parsing &notnivc; 
+PASS XHTML1.0 Transitional parsing &NotPrecedes; 
+PASS XHTML1.0 Transitional parsing &NotPrecedesEqual; 
+PASS XHTML1.0 Transitional parsing &NotPrecedesSlantEqual; 
+PASS XHTML1.0 Transitional parsing &NotReverseElement; 
+PASS XHTML1.0 Transitional parsing &NotRightTriangleBar; 
+PASS XHTML1.0 Transitional parsing &NotRightTriangle; 
+PASS XHTML1.0 Transitional parsing &NotRightTriangleEqual; 
+PASS XHTML1.0 Transitional parsing &NotSquareSubset; 
+PASS XHTML1.0 Transitional parsing &NotSquareSubsetEqual; 
+PASS XHTML1.0 Transitional parsing &NotSquareSuperset; 
+PASS XHTML1.0 Transitional parsing &NotSquareSupersetEqual; 
+PASS XHTML1.0 Transitional parsing &NotSubset; 
+PASS XHTML1.0 Transitional parsing &NotSubsetEqual; 
+PASS XHTML1.0 Transitional parsing &NotSucceeds; 
+PASS XHTML1.0 Transitional parsing &NotSucceedsEqual; 
+PASS XHTML1.0 Transitional parsing &NotSucceedsSlantEqual; 
+PASS XHTML1.0 Transitional parsing &NotSucceedsTilde; 
+PASS XHTML1.0 Transitional parsing &NotSuperset; 
+PASS XHTML1.0 Transitional parsing &NotSupersetEqual; 
+PASS XHTML1.0 Transitional parsing &NotTilde; 
+PASS XHTML1.0 Transitional parsing &NotTildeEqual; 
+PASS XHTML1.0 Transitional parsing &NotTildeFullEqual; 
+PASS XHTML1.0 Transitional parsing &NotTildeTilde; 
+PASS XHTML1.0 Transitional parsing &NotVerticalBar; 
+PASS XHTML1.0 Transitional parsing &nparallel; 
+PASS XHTML1.0 Transitional parsing &npar; 
+PASS XHTML1.0 Transitional parsing &nparsl; 
+PASS XHTML1.0 Transitional parsing &npart; 
+PASS XHTML1.0 Transitional parsing &npolint; 
+PASS XHTML1.0 Transitional parsing &npr; 
+PASS XHTML1.0 Transitional parsing &nprcue; 
+PASS XHTML1.0 Transitional parsing &nprec; 
+PASS XHTML1.0 Transitional parsing &npreceq; 
+PASS XHTML1.0 Transitional parsing &npre; 
+PASS XHTML1.0 Transitional parsing &nrarrc; 
+PASS XHTML1.0 Transitional parsing &nrarr; 
+PASS XHTML1.0 Transitional parsing &nrArr; 
+PASS XHTML1.0 Transitional parsing &nrarrw; 
+PASS XHTML1.0 Transitional parsing &nrightarrow; 
+PASS XHTML1.0 Transitional parsing &nRightarrow; 
+PASS XHTML1.0 Transitional parsing &nrtri; 
+PASS XHTML1.0 Transitional parsing &nrtrie; 
+PASS XHTML1.0 Transitional parsing &nsc; 
+PASS XHTML1.0 Transitional parsing &nsccue; 
+PASS XHTML1.0 Transitional parsing &nsce; 
+PASS XHTML1.0 Transitional parsing &Nscr; 
+PASS XHTML1.0 Transitional parsing &nscr; 
+PASS XHTML1.0 Transitional parsing &nshortmid; 
+PASS XHTML1.0 Transitional parsing &nshortparallel; 
+PASS XHTML1.0 Transitional parsing &nsim; 
+PASS XHTML1.0 Transitional parsing &nsime; 
+PASS XHTML1.0 Transitional parsing &nsimeq; 
+PASS XHTML1.0 Transitional parsing &nsmid; 
+PASS XHTML1.0 Transitional parsing &nspar; 
+PASS XHTML1.0 Transitional parsing &nsqsube; 
+PASS XHTML1.0 Transitional parsing &nsqsupe; 
+PASS XHTML1.0 Transitional parsing &nsub; 
+PASS XHTML1.0 Transitional parsing &nsubE; 
+PASS XHTML1.0 Transitional parsing &nsube; 
+PASS XHTML1.0 Transitional parsing &nsubset; 
+PASS XHTML1.0 Transitional parsing &nsubseteq; 
+PASS XHTML1.0 Transitional parsing &nsubseteqq; 
+PASS XHTML1.0 Transitional parsing &nsucc; 
+PASS XHTML1.0 Transitional parsing &nsucceq; 
+PASS XHTML1.0 Transitional parsing &nsup; 
+PASS XHTML1.0 Transitional parsing &nsupE; 
+PASS XHTML1.0 Transitional parsing &nsupe; 
+PASS XHTML1.0 Transitional parsing &nsupset; 
+PASS XHTML1.0 Transitional parsing &nsupseteq; 
+PASS XHTML1.0 Transitional parsing &nsupseteqq; 
+PASS XHTML1.0 Transitional parsing &ntgl; 
+PASS XHTML1.0 Transitional parsing &Ntilde; 
+PASS XHTML1.0 Transitional parsing &ntilde; 
+PASS XHTML1.0 Transitional parsing &ntlg; 
+PASS XHTML1.0 Transitional parsing &ntriangleleft; 
+PASS XHTML1.0 Transitional parsing &ntrianglelefteq; 
+PASS XHTML1.0 Transitional parsing &ntriangleright; 
+PASS XHTML1.0 Transitional parsing &ntrianglerighteq; 
+PASS XHTML1.0 Transitional parsing &Nu; 
+PASS XHTML1.0 Transitional parsing &nu; 
+PASS XHTML1.0 Transitional parsing &num; 
+PASS XHTML1.0 Transitional parsing &numero; 
+PASS XHTML1.0 Transitional parsing &numsp; 
+PASS XHTML1.0 Transitional parsing &nvap; 
+PASS XHTML1.0 Transitional parsing &nvdash; 
+PASS XHTML1.0 Transitional parsing &nvDash; 
+PASS XHTML1.0 Transitional parsing &nVdash; 
+PASS XHTML1.0 Transitional parsing &nVDash; 
+PASS XHTML1.0 Transitional parsing &nvge; 
+PASS XHTML1.0 Transitional parsing &nvgt; 
+PASS XHTML1.0 Transitional parsing &nvHarr; 
+PASS XHTML1.0 Transitional parsing &nvinfin; 
+PASS XHTML1.0 Transitional parsing &nvlArr; 
+PASS XHTML1.0 Transitional parsing &nvle; 
+FAIL XHTML1.0 Transitional parsing &nvlt; assert_equals: XHTML1.0 Transitional parsing the entity reference caused a parse error; expected 3 but got 1
+PASS XHTML1.0 Transitional parsing &nvltrie; 
+PASS XHTML1.0 Transitional parsing &nvrArr; 
+PASS XHTML1.0 Transitional parsing &nvrtrie; 
+PASS XHTML1.0 Transitional parsing &nvsim; 
+PASS XHTML1.0 Transitional parsing &nwarhk; 
+PASS XHTML1.0 Transitional parsing &nwarr; 
+PASS XHTML1.0 Transitional parsing &nwArr; 
+PASS XHTML1.0 Transitional parsing &nwarrow; 
+PASS XHTML1.0 Transitional parsing &nwnear; 
+PASS XHTML1.0 Transitional parsing &Oacute; 
+PASS XHTML1.0 Transitional parsing &oacute; 
+PASS XHTML1.0 Transitional parsing &oast; 
+PASS XHTML1.0 Transitional parsing &Ocirc; 
+PASS XHTML1.0 Transitional parsing &ocirc; 
+PASS XHTML1.0 Transitional parsing &ocir; 
+PASS XHTML1.0 Transitional parsing &Ocy; 
+PASS XHTML1.0 Transitional parsing &ocy; 
+PASS XHTML1.0 Transitional parsing &odash; 
+PASS XHTML1.0 Transitional parsing &Odblac; 
+PASS XHTML1.0 Transitional parsing &odblac; 
+PASS XHTML1.0 Transitional parsing &odiv; 
+PASS XHTML1.0 Transitional parsing &odot; 
+PASS XHTML1.0 Transitional parsing &odsold; 
+PASS XHTML1.0 Transitional parsing &OElig; 
+PASS XHTML1.0 Transitional parsing &oelig; 
+PASS XHTML1.0 Transitional parsing &ofcir; 
+PASS XHTML1.0 Transitional parsing &Ofr; 
+PASS XHTML1.0 Transitional parsing &ofr; 
+PASS XHTML1.0 Transitional parsing &ogon; 
+PASS XHTML1.0 Transitional parsing &Ograve; 
+PASS XHTML1.0 Transitional parsing &ograve; 
+PASS XHTML1.0 Transitional parsing &ogt; 
+PASS XHTML1.0 Transitional parsing &ohbar; 
+PASS XHTML1.0 Transitional parsing &ohm; 
+PASS XHTML1.0 Transitional parsing &oint; 
+PASS XHTML1.0 Transitional parsing &olarr; 
+PASS XHTML1.0 Transitional parsing &olcir; 
+PASS XHTML1.0 Transitional parsing &olcross; 
+PASS XHTML1.0 Transitional parsing &oline; 
+PASS XHTML1.0 Transitional parsing &olt; 
+PASS XHTML1.0 Transitional parsing &Omacr; 
+PASS XHTML1.0 Transitional parsing &omacr; 
+PASS XHTML1.0 Transitional parsing &Omega; 
+PASS XHTML1.0 Transitional parsing &omega; 
+PASS XHTML1.0 Transitional parsing &Omicron; 
+PASS XHTML1.0 Transitional parsing &omicron; 
+PASS XHTML1.0 Transitional parsing &omid; 
+PASS XHTML1.0 Transitional parsing &ominus; 
+PASS XHTML1.0 Transitional parsing &Oopf; 
+PASS XHTML1.0 Transitional parsing &oopf; 
+PASS XHTML1.0 Transitional parsing &opar; 
+PASS XHTML1.0 Transitional parsing &OpenCurlyDoubleQuote; 
+PASS XHTML1.0 Transitional parsing &OpenCurlyQuote; 
+PASS XHTML1.0 Transitional parsing &operp; 
+PASS XHTML1.0 Transitional parsing &oplus; 
+PASS XHTML1.0 Transitional parsing &orarr; 
+PASS XHTML1.0 Transitional parsing &Or; 
+PASS XHTML1.0 Transitional parsing &or; 
+PASS XHTML1.0 Transitional parsing &ord; 
+PASS XHTML1.0 Transitional parsing &order; 
+PASS XHTML1.0 Transitional parsing &orderof; 
+PASS XHTML1.0 Transitional parsing &ordf; 
+PASS XHTML1.0 Transitional parsing &ordm; 
+PASS XHTML1.0 Transitional parsing &origof; 
+PASS XHTML1.0 Transitional parsing &oror; 
+PASS XHTML1.0 Transitional parsing &orslope; 
+PASS XHTML1.0 Transitional parsing &orv; 
+PASS XHTML1.0 Transitional parsing &oS; 
+PASS XHTML1.0 Transitional parsing &Oscr; 
+PASS XHTML1.0 Transitional parsing &oscr; 
+PASS XHTML1.0 Transitional parsing &Oslash; 
+PASS XHTML1.0 Transitional parsing &oslash; 
+PASS XHTML1.0 Transitional parsing &osol; 
+PASS XHTML1.0 Transitional parsing &Otilde; 
+PASS XHTML1.0 Transitional parsing &otilde; 
+PASS XHTML1.0 Transitional parsing &otimesas; 
+PASS XHTML1.0 Transitional parsing &Otimes; 
+PASS XHTML1.0 Transitional parsing &otimes; 
+PASS XHTML1.0 Transitional parsing &Ouml; 
+PASS XHTML1.0 Transitional parsing &ouml; 
+PASS XHTML1.0 Transitional parsing &ovbar; 
+PASS XHTML1.0 Transitional parsing &OverBar; 
+PASS XHTML1.0 Transitional parsing &OverBrace; 
+PASS XHTML1.0 Transitional parsing &OverBracket; 
+PASS XHTML1.0 Transitional parsing &OverParenthesis; 
+PASS XHTML1.0 Transitional parsing &para; 
+PASS XHTML1.0 Transitional parsing &parallel; 
+PASS XHTML1.0 Transitional parsing &par; 
+PASS XHTML1.0 Transitional parsing &parsim; 
+PASS XHTML1.0 Transitional parsing &parsl; 
+PASS XHTML1.0 Transitional parsing &part; 
+PASS XHTML1.0 Transitional parsing &PartialD; 
+PASS XHTML1.0 Transitional parsing &Pcy; 
+PASS XHTML1.0 Transitional parsing &pcy; 
+PASS XHTML1.0 Transitional parsing &percnt; 
+PASS XHTML1.0 Transitional parsing &period; 
+PASS XHTML1.0 Transitional parsing &permil; 
+PASS XHTML1.0 Transitional parsing &perp; 
+PASS XHTML1.0 Transitional parsing &pertenk; 
+PASS XHTML1.0 Transitional parsing &Pfr; 
+PASS XHTML1.0 Transitional parsing &pfr; 
+PASS XHTML1.0 Transitional parsing &Phi; 
+PASS XHTML1.0 Transitional parsing &phi; 
+PASS XHTML1.0 Transitional parsing &phiv; 
+PASS XHTML1.0 Transitional parsing &phmmat; 
+PASS XHTML1.0 Transitional parsing &phone; 
+PASS XHTML1.0 Transitional parsing &Pi; 
+PASS XHTML1.0 Transitional parsing &pi; 
+PASS XHTML1.0 Transitional parsing &pitchfork; 
+PASS XHTML1.0 Transitional parsing &piv; 
+PASS XHTML1.0 Transitional parsing &planck; 
+PASS XHTML1.0 Transitional parsing &planckh; 
+PASS XHTML1.0 Transitional parsing &plankv; 
+PASS XHTML1.0 Transitional parsing &plusacir; 
+PASS XHTML1.0 Transitional parsing &plusb; 
+PASS XHTML1.0 Transitional parsing &pluscir; 
+PASS XHTML1.0 Transitional parsing &plus; 
+PASS XHTML1.0 Transitional parsing &plusdo; 
+PASS XHTML1.0 Transitional parsing &plusdu; 
+PASS XHTML1.0 Transitional parsing &pluse; 
+PASS XHTML1.0 Transitional parsing &PlusMinus; 
+PASS XHTML1.0 Transitional parsing &plusmn; 
+PASS XHTML1.0 Transitional parsing &plussim; 
+PASS XHTML1.0 Transitional parsing &plustwo; 
+PASS XHTML1.0 Transitional parsing &pm; 
+PASS XHTML1.0 Transitional parsing &Poincareplane; 
+PASS XHTML1.0 Transitional parsing &pointint; 
+PASS XHTML1.0 Transitional parsing &popf; 
+PASS XHTML1.0 Transitional parsing &Popf; 
+PASS XHTML1.0 Transitional parsing &pound; 
+PASS XHTML1.0 Transitional parsing &prap; 
+PASS XHTML1.0 Transitional parsing &Pr; 
+PASS XHTML1.0 Transitional parsing &pr; 
+PASS XHTML1.0 Transitional parsing &prcue; 
+PASS XHTML1.0 Transitional parsing &precapprox; 
+PASS XHTML1.0 Transitional parsing &prec; 
+PASS XHTML1.0 Transitional parsing &preccurlyeq; 
+PASS XHTML1.0 Transitional parsing &Precedes; 
+PASS XHTML1.0 Transitional parsing &PrecedesEqual; 
+PASS XHTML1.0 Transitional parsing &PrecedesSlantEqual; 
+PASS XHTML1.0 Transitional parsing &PrecedesTilde; 
+PASS XHTML1.0 Transitional parsing &preceq; 
+PASS XHTML1.0 Transitional parsing &precnapprox; 
+PASS XHTML1.0 Transitional parsing &precneqq; 
+PASS XHTML1.0 Transitional parsing &precnsim; 
+PASS XHTML1.0 Transitional parsing &pre; 
+PASS XHTML1.0 Transitional parsing &prE; 
+PASS XHTML1.0 Transitional parsing &precsim; 
+PASS XHTML1.0 Transitional parsing &prime; 
+PASS XHTML1.0 Transitional parsing &Prime; 
+PASS XHTML1.0 Transitional parsing &primes; 
+PASS XHTML1.0 Transitional parsing &prnap; 
+PASS XHTML1.0 Transitional parsing &prnE; 
+PASS XHTML1.0 Transitional parsing &prnsim; 
+PASS XHTML1.0 Transitional parsing &prod; 
+PASS XHTML1.0 Transitional parsing &Product; 
+PASS XHTML1.0 Transitional parsing &profalar; 
+PASS XHTML1.0 Transitional parsing &profline; 
+PASS XHTML1.0 Transitional parsing &profsurf; 
+PASS XHTML1.0 Transitional parsing &prop; 
+PASS XHTML1.0 Transitional parsing &Proportional; 
+PASS XHTML1.0 Transitional parsing &Proportion; 
+PASS XHTML1.0 Transitional parsing &propto; 
+PASS XHTML1.0 Transitional parsing &prsim; 
+PASS XHTML1.0 Transitional parsing &prurel; 
+PASS XHTML1.0 Transitional parsing &Pscr; 
+PASS XHTML1.0 Transitional parsing &pscr; 
+PASS XHTML1.0 Transitional parsing &Psi; 
+PASS XHTML1.0 Transitional parsing &psi; 
+PASS XHTML1.0 Transitional parsing &puncsp; 
+PASS XHTML1.0 Transitional parsing &Qfr; 
+PASS XHTML1.0 Transitional parsing &qfr; 
+PASS XHTML1.0 Transitional parsing &qint; 
+PASS XHTML1.0 Transitional parsing &qopf; 
+PASS XHTML1.0 Transitional parsing &Qopf; 
+PASS XHTML1.0 Transitional parsing &qprime; 
+PASS XHTML1.0 Transitional parsing &Qscr; 
+PASS XHTML1.0 Transitional parsing &qscr; 
+PASS XHTML1.0 Transitional parsing &quaternions; 
+PASS XHTML1.0 Transitional parsing &quatint; 
+PASS XHTML1.0 Transitional parsing &quest; 
+PASS XHTML1.0 Transitional parsing &questeq; 
+PASS XHTML1.0 Transitional parsing &quot; 
+PASS XHTML1.0 Transitional parsing &QUOT; 
+PASS XHTML1.0 Transitional parsing &rAarr; 
+PASS XHTML1.0 Transitional parsing &race; 
+PASS XHTML1.0 Transitional parsing &Racute; 
+PASS XHTML1.0 Transitional parsing &racute; 
+PASS XHTML1.0 Transitional parsing &radic; 
+PASS XHTML1.0 Transitional parsing &raemptyv; 
+PASS XHTML1.0 Transitional parsing &rang; 
+PASS XHTML1.0 Transitional parsing &Rang; 
+PASS XHTML1.0 Transitional parsing &rangd; 
+PASS XHTML1.0 Transitional parsing &range; 
+PASS XHTML1.0 Transitional parsing &rangle; 
+PASS XHTML1.0 Transitional parsing &raquo; 
+PASS XHTML1.0 Transitional parsing &rarrap; 
+PASS XHTML1.0 Transitional parsing &rarrb; 
+PASS XHTML1.0 Transitional parsing &rarrbfs; 
+PASS XHTML1.0 Transitional parsing &rarrc; 
+PASS XHTML1.0 Transitional parsing &rarr; 
+PASS XHTML1.0 Transitional parsing &Rarr; 
+PASS XHTML1.0 Transitional parsing &rArr; 
+PASS XHTML1.0 Transitional parsing &rarrfs; 
+PASS XHTML1.0 Transitional parsing &rarrhk; 
+PASS XHTML1.0 Transitional parsing &rarrlp; 
+PASS XHTML1.0 Transitional parsing &rarrpl; 
+PASS XHTML1.0 Transitional parsing &rarrsim; 
+PASS XHTML1.0 Transitional parsing &Rarrtl; 
+PASS XHTML1.0 Transitional parsing &rarrtl; 
+PASS XHTML1.0 Transitional parsing &rarrw; 
+PASS XHTML1.0 Transitional parsing &ratail; 
+PASS XHTML1.0 Transitional parsing &rAtail; 
+PASS XHTML1.0 Transitional parsing &ratio; 
+PASS XHTML1.0 Transitional parsing &rationals; 
+PASS XHTML1.0 Transitional parsing &rbarr; 
+PASS XHTML1.0 Transitional parsing &rBarr; 
+PASS XHTML1.0 Transitional parsing &RBarr; 
+PASS XHTML1.0 Transitional parsing &rbbrk; 
+PASS XHTML1.0 Transitional parsing &rbrace; 
+PASS XHTML1.0 Transitional parsing &rbrack; 
+PASS XHTML1.0 Transitional parsing &rbrke; 
+PASS XHTML1.0 Transitional parsing &rbrksld; 
+PASS XHTML1.0 Transitional parsing &rbrkslu; 
+PASS XHTML1.0 Transitional parsing &Rcaron; 
+PASS XHTML1.0 Transitional parsing &rcaron; 
+PASS XHTML1.0 Transitional parsing &Rcedil; 
+PASS XHTML1.0 Transitional parsing &rcedil; 
+PASS XHTML1.0 Transitional parsing &rceil; 
+PASS XHTML1.0 Transitional parsing &rcub; 
+PASS XHTML1.0 Transitional parsing &Rcy; 
+PASS XHTML1.0 Transitional parsing &rcy; 
+PASS XHTML1.0 Transitional parsing &rdca; 
+PASS XHTML1.0 Transitional parsing &rdldhar; 
+PASS XHTML1.0 Transitional parsing &rdquo; 
+PASS XHTML1.0 Transitional parsing &rdquor; 
+PASS XHTML1.0 Transitional parsing &rdsh; 
+PASS XHTML1.0 Transitional parsing &real; 
+PASS XHTML1.0 Transitional parsing &realine; 
+PASS XHTML1.0 Transitional parsing &realpart; 
+PASS XHTML1.0 Transitional parsing &reals; 
+PASS XHTML1.0 Transitional parsing &Re; 
+PASS XHTML1.0 Transitional parsing &rect; 
+PASS XHTML1.0 Transitional parsing &reg; 
+PASS XHTML1.0 Transitional parsing &REG; 
+PASS XHTML1.0 Transitional parsing &ReverseElement; 
+PASS XHTML1.0 Transitional parsing &ReverseEquilibrium; 
+PASS XHTML1.0 Transitional parsing &ReverseUpEquilibrium; 
+PASS XHTML1.0 Transitional parsing &rfisht; 
+PASS XHTML1.0 Transitional parsing &rfloor; 
+PASS XHTML1.0 Transitional parsing &rfr; 
+PASS XHTML1.0 Transitional parsing &Rfr; 
+PASS XHTML1.0 Transitional parsing &rHar; 
+PASS XHTML1.0 Transitional parsing &rhard; 
+PASS XHTML1.0 Transitional parsing &rharu; 
+PASS XHTML1.0 Transitional parsing &rharul; 
+PASS XHTML1.0 Transitional parsing &Rho; 
+PASS XHTML1.0 Transitional parsing &rho; 
+PASS XHTML1.0 Transitional parsing &rhov; 
+PASS XHTML1.0 Transitional parsing &RightAngleBracket; 
+PASS XHTML1.0 Transitional parsing &RightArrowBar; 
+PASS XHTML1.0 Transitional parsing &rightarrow; 
+PASS XHTML1.0 Transitional parsing &RightArrow; 
+PASS XHTML1.0 Transitional parsing &Rightarrow; 
+PASS XHTML1.0 Transitional parsing &RightArrowLeftArrow; 
+PASS XHTML1.0 Transitional parsing &rightarrowtail; 
+PASS XHTML1.0 Transitional parsing &RightCeiling; 
+PASS XHTML1.0 Transitional parsing &RightDoubleBracket; 
+PASS XHTML1.0 Transitional parsing &RightDownTeeVector; 
+PASS XHTML1.0 Transitional parsing &RightDownVectorBar; 
+PASS XHTML1.0 Transitional parsing &RightDownVector; 
+PASS XHTML1.0 Transitional parsing &RightFloor; 
+PASS XHTML1.0 Transitional parsing &rightharpoondown; 
+PASS XHTML1.0 Transitional parsing &rightharpoonup; 
+PASS XHTML1.0 Transitional parsing &rightleftarrows; 
+PASS XHTML1.0 Transitional parsing &rightleftharpoons; 
+PASS XHTML1.0 Transitional parsing &rightrightarrows; 
+PASS XHTML1.0 Transitional parsing &rightsquigarrow; 
+PASS XHTML1.0 Transitional parsing &RightTeeArrow; 
+PASS XHTML1.0 Transitional parsing &RightTee; 
+PASS XHTML1.0 Transitional parsing &RightTeeVector; 
+PASS XHTML1.0 Transitional parsing &rightthreetimes; 
+PASS XHTML1.0 Transitional parsing &RightTriangleBar; 
+PASS XHTML1.0 Transitional parsing &RightTriangle; 
+PASS XHTML1.0 Transitional parsing &RightTriangleEqual; 
+PASS XHTML1.0 Transitional parsing &RightUpDownVector; 
+PASS XHTML1.0 Transitional parsing &RightUpTeeVector; 
+PASS XHTML1.0 Transitional parsing &RightUpVectorBar; 
+PASS XHTML1.0 Transitional parsing &RightUpVector; 
+PASS XHTML1.0 Transitional parsing &RightVectorBar; 
+PASS XHTML1.0 Transitional parsing &RightVector; 
+PASS XHTML1.0 Transitional parsing &ring; 
+PASS XHTML1.0 Transitional parsing &risingdotseq; 
+PASS XHTML1.0 Transitional parsing &rlarr; 
+PASS XHTML1.0 Transitional parsing &rlhar; 
+PASS XHTML1.0 Transitional parsing &rlm; 
+PASS XHTML1.0 Transitional parsing &rmoustache; 
+PASS XHTML1.0 Transitional parsing &rmoust; 
+PASS XHTML1.0 Transitional parsing &rnmid; 
+PASS XHTML1.0 Transitional parsing &roang; 
+PASS XHTML1.0 Transitional parsing &roarr; 
+PASS XHTML1.0 Transitional parsing &robrk; 
+PASS XHTML1.0 Transitional parsing &ropar; 
+PASS XHTML1.0 Transitional parsing &ropf; 
+PASS XHTML1.0 Transitional parsing &Ropf; 
+PASS XHTML1.0 Transitional parsing &roplus; 
+PASS XHTML1.0 Transitional parsing &rotimes; 
+PASS XHTML1.0 Transitional parsing &RoundImplies; 
+PASS XHTML1.0 Transitional parsing &rpar; 
+PASS XHTML1.0 Transitional parsing &rpargt; 
+PASS XHTML1.0 Transitional parsing &rppolint; 
+PASS XHTML1.0 Transitional parsing &rrarr; 
+PASS XHTML1.0 Transitional parsing &Rrightarrow; 
+PASS XHTML1.0 Transitional parsing &rsaquo; 
+PASS XHTML1.0 Transitional parsing &rscr; 
+PASS XHTML1.0 Transitional parsing &Rscr; 
+PASS XHTML1.0 Transitional parsing &rsh; 
+PASS XHTML1.0 Transitional parsing &Rsh; 
+PASS XHTML1.0 Transitional parsing &rsqb; 
+PASS XHTML1.0 Transitional parsing &rsquo; 
+PASS XHTML1.0 Transitional parsing &rsquor; 
+PASS XHTML1.0 Transitional parsing &rthree; 
+PASS XHTML1.0 Transitional parsing &rtimes; 
+PASS XHTML1.0 Transitional parsing &rtri; 
+PASS XHTML1.0 Transitional parsing &rtrie; 
+PASS XHTML1.0 Transitional parsing &rtrif; 
+PASS XHTML1.0 Transitional parsing &rtriltri; 
+PASS XHTML1.0 Transitional parsing &RuleDelayed; 
+PASS XHTML1.0 Transitional parsing &ruluhar; 
+PASS XHTML1.0 Transitional parsing &rx; 
+PASS XHTML1.0 Transitional parsing &Sacute; 
+PASS XHTML1.0 Transitional parsing &sacute; 
+PASS XHTML1.0 Transitional parsing &sbquo; 
+PASS XHTML1.0 Transitional parsing &scap; 
+PASS XHTML1.0 Transitional parsing &Scaron; 
+PASS XHTML1.0 Transitional parsing &scaron; 
+PASS XHTML1.0 Transitional parsing &Sc; 
+PASS XHTML1.0 Transitional parsing &sc; 
+PASS XHTML1.0 Transitional parsing &sccue; 
+PASS XHTML1.0 Transitional parsing &sce; 
+PASS XHTML1.0 Transitional parsing &scE; 
+PASS XHTML1.0 Transitional parsing &Scedil; 
+PASS XHTML1.0 Transitional parsing &scedil; 
+PASS XHTML1.0 Transitional parsing &Scirc; 
+PASS XHTML1.0 Transitional parsing &scirc; 
+PASS XHTML1.0 Transitional parsing &scnap; 
+PASS XHTML1.0 Transitional parsing &scnE; 
+PASS XHTML1.0 Transitional parsing &scnsim; 
+PASS XHTML1.0 Transitional parsing &scpolint; 
+PASS XHTML1.0 Transitional parsing &scsim; 
+PASS XHTML1.0 Transitional parsing &Scy; 
+PASS XHTML1.0 Transitional parsing &scy; 
+PASS XHTML1.0 Transitional parsing &sdotb; 
+PASS XHTML1.0 Transitional parsing &sdot; 
+PASS XHTML1.0 Transitional parsing &sdote; 
+PASS XHTML1.0 Transitional parsing &searhk; 
+PASS XHTML1.0 Transitional parsing &searr; 
+PASS XHTML1.0 Transitional parsing &seArr; 
+PASS XHTML1.0 Transitional parsing &searrow; 
+PASS XHTML1.0 Transitional parsing &sect; 
+PASS XHTML1.0 Transitional parsing &semi; 
+PASS XHTML1.0 Transitional parsing &seswar; 
+PASS XHTML1.0 Transitional parsing &setminus; 
+PASS XHTML1.0 Transitional parsing &setmn; 
+PASS XHTML1.0 Transitional parsing &sext; 
+PASS XHTML1.0 Transitional parsing &Sfr; 
+PASS XHTML1.0 Transitional parsing &sfr; 
+PASS XHTML1.0 Transitional parsing &sfrown; 
+PASS XHTML1.0 Transitional parsing &sharp; 
+PASS XHTML1.0 Transitional parsing &SHCHcy; 
+PASS XHTML1.0 Transitional parsing &shchcy; 
+PASS XHTML1.0 Transitional parsing &SHcy; 
+PASS XHTML1.0 Transitional parsing &shcy; 
+PASS XHTML1.0 Transitional parsing &ShortDownArrow; 
+PASS XHTML1.0 Transitional parsing &ShortLeftArrow; 
+PASS XHTML1.0 Transitional parsing &shortmid; 
+PASS XHTML1.0 Transitional parsing &shortparallel; 
+PASS XHTML1.0 Transitional parsing &ShortRightArrow; 
+PASS XHTML1.0 Transitional parsing &ShortUpArrow; 
+PASS XHTML1.0 Transitional parsing &shy; 
+PASS XHTML1.0 Transitional parsing &Sigma; 
+PASS XHTML1.0 Transitional parsing &sigma; 
+PASS XHTML1.0 Transitional parsing &sigmaf; 
+PASS XHTML1.0 Transitional parsing &sigmav; 
+PASS XHTML1.0 Transitional parsing &sim; 
+PASS XHTML1.0 Transitional parsing &simdot; 
+PASS XHTML1.0 Transitional parsing &sime; 
+PASS XHTML1.0 Transitional parsing &simeq; 
+PASS XHTML1.0 Transitional parsing &simg; 
+PASS XHTML1.0 Transitional parsing &simgE; 
+PASS XHTML1.0 Transitional parsing &siml; 
+PASS XHTML1.0 Transitional parsing &simlE; 
+PASS XHTML1.0 Transitional parsing &simne; 
+PASS XHTML1.0 Transitional parsing &simplus; 
+PASS XHTML1.0 Transitional parsing &simrarr; 
+PASS XHTML1.0 Transitional parsing &slarr; 
+PASS XHTML1.0 Transitional parsing &SmallCircle; 
+PASS XHTML1.0 Transitional parsing &smallsetminus; 
+PASS XHTML1.0 Transitional parsing &smashp; 
+PASS XHTML1.0 Transitional parsing &smeparsl; 
+PASS XHTML1.0 Transitional parsing &smid; 
+PASS XHTML1.0 Transitional parsing &smile; 
+PASS XHTML1.0 Transitional parsing &smt; 
+PASS XHTML1.0 Transitional parsing &smte; 
+PASS XHTML1.0 Transitional parsing &smtes; 
+PASS XHTML1.0 Transitional parsing &SOFTcy; 
+PASS XHTML1.0 Transitional parsing &softcy; 
+PASS XHTML1.0 Transitional parsing &solbar; 
+PASS XHTML1.0 Transitional parsing &solb; 
+PASS XHTML1.0 Transitional parsing &sol; 
+PASS XHTML1.0 Transitional parsing &Sopf; 
+PASS XHTML1.0 Transitional parsing &sopf; 
+PASS XHTML1.0 Transitional parsing &spades; 
+PASS XHTML1.0 Transitional parsing &spadesuit; 
+PASS XHTML1.0 Transitional parsing &spar; 
+PASS XHTML1.0 Transitional parsing &sqcap; 
+PASS XHTML1.0 Transitional parsing &sqcaps; 
+PASS XHTML1.0 Transitional parsing &sqcup; 
+PASS XHTML1.0 Transitional parsing &sqcups; 
+PASS XHTML1.0 Transitional parsing &Sqrt; 
+PASS XHTML1.0 Transitional parsing &sqsub; 
+PASS XHTML1.0 Transitional parsing &sqsube; 
+PASS XHTML1.0 Transitional parsing &sqsubset; 
+PASS XHTML1.0 Transitional parsing &sqsubseteq; 
+PASS XHTML1.0 Transitional parsing &sqsup; 
+PASS XHTML1.0 Transitional parsing &sqsupe; 
+PASS XHTML1.0 Transitional parsing &sqsupset; 
+PASS XHTML1.0 Transitional parsing &sqsupseteq; 
+PASS XHTML1.0 Transitional parsing &square; 
+PASS XHTML1.0 Transitional parsing &Square; 
+PASS XHTML1.0 Transitional parsing &SquareIntersection; 
+PASS XHTML1.0 Transitional parsing &SquareSubset; 
+PASS XHTML1.0 Transitional parsing &SquareSubsetEqual; 
+PASS XHTML1.0 Transitional parsing &SquareSuperset; 
+PASS XHTML1.0 Transitional parsing &SquareSupersetEqual; 
+PASS XHTML1.0 Transitional parsing &SquareUnion; 
+PASS XHTML1.0 Transitional parsing &squarf; 
+PASS XHTML1.0 Transitional parsing &squ; 
+PASS XHTML1.0 Transitional parsing &squf; 
+PASS XHTML1.0 Transitional parsing &srarr; 
+PASS XHTML1.0 Transitional parsing &Sscr; 
+PASS XHTML1.0 Transitional parsing &sscr; 
+PASS XHTML1.0 Transitional parsing &ssetmn; 
+PASS XHTML1.0 Transitional parsing &ssmile; 
+PASS XHTML1.0 Transitional parsing &sstarf; 
+PASS XHTML1.0 Transitional parsing &Star; 
+PASS XHTML1.0 Transitional parsing &star; 
+PASS XHTML1.0 Transitional parsing &starf; 
+PASS XHTML1.0 Transitional parsing &straightepsilon; 
+PASS XHTML1.0 Transitional parsing &straightphi; 
+PASS XHTML1.0 Transitional parsing &strns; 
+PASS XHTML1.0 Transitional parsing &sub; 
+PASS XHTML1.0 Transitional parsing &Sub; 
+PASS XHTML1.0 Transitional parsing &subdot; 
+PASS XHTML1.0 Transitional parsing &subE; 
+PASS XHTML1.0 Transitional parsing &sube; 
+PASS XHTML1.0 Transitional parsing &subedot; 
+PASS XHTML1.0 Transitional parsing &submult; 
+PASS XHTML1.0 Transitional parsing &subnE; 
+PASS XHTML1.0 Transitional parsing &subne; 
+PASS XHTML1.0 Transitional parsing &subplus; 
+PASS XHTML1.0 Transitional parsing &subrarr; 
+PASS XHTML1.0 Transitional parsing &subset; 
+PASS XHTML1.0 Transitional parsing &Subset; 
+PASS XHTML1.0 Transitional parsing &subseteq; 
+PASS XHTML1.0 Transitional parsing &subseteqq; 
+PASS XHTML1.0 Transitional parsing &SubsetEqual; 
+PASS XHTML1.0 Transitional parsing &subsetneq; 
+PASS XHTML1.0 Transitional parsing &subsetneqq; 
+PASS XHTML1.0 Transitional parsing &subsim; 
+PASS XHTML1.0 Transitional parsing &subsub; 
+PASS XHTML1.0 Transitional parsing &subsup; 
+PASS XHTML1.0 Transitional parsing &succapprox; 
+PASS XHTML1.0 Transitional parsing &succ; 
+PASS XHTML1.0 Transitional parsing &succcurlyeq; 
+PASS XHTML1.0 Transitional parsing &Succeeds; 
+PASS XHTML1.0 Transitional parsing &SucceedsEqual; 
+PASS XHTML1.0 Transitional parsing &SucceedsSlantEqual; 
+PASS XHTML1.0 Transitional parsing &SucceedsTilde; 
+PASS XHTML1.0 Transitional parsing &succeq; 
+PASS XHTML1.0 Transitional parsing &succnapprox; 
+PASS XHTML1.0 Transitional parsing &succneqq; 
+PASS XHTML1.0 Transitional parsing &succnsim; 
+PASS XHTML1.0 Transitional parsing &succsim; 
+PASS XHTML1.0 Transitional parsing &SuchThat; 
+PASS XHTML1.0 Transitional parsing &sum; 
+PASS XHTML1.0 Transitional parsing &Sum; 
+PASS XHTML1.0 Transitional parsing &sung; 
+PASS XHTML1.0 Transitional parsing &sup1; 
+PASS XHTML1.0 Transitional parsing &sup2; 
+PASS XHTML1.0 Transitional parsing &sup3; 
+PASS XHTML1.0 Transitional parsing &sup; 
+PASS XHTML1.0 Transitional parsing &Sup; 
+PASS XHTML1.0 Transitional parsing &supdot; 
+PASS XHTML1.0 Transitional parsing &supdsub; 
+PASS XHTML1.0 Transitional parsing &supE; 
+PASS XHTML1.0 Transitional parsing &supe; 
+PASS XHTML1.0 Transitional parsing &supedot; 
+PASS XHTML1.0 Transitional parsing &Superset; 
+PASS XHTML1.0 Transitional parsing &SupersetEqual; 
+PASS XHTML1.0 Transitional parsing &suphsol; 
+PASS XHTML1.0 Transitional parsing &suphsub; 
+PASS XHTML1.0 Transitional parsing &suplarr; 
+PASS XHTML1.0 Transitional parsing &supmult; 
+PASS XHTML1.0 Transitional parsing &supnE; 
+PASS XHTML1.0 Transitional parsing &supne; 
+PASS XHTML1.0 Transitional parsing &supplus; 
+PASS XHTML1.0 Transitional parsing &supset; 
+PASS XHTML1.0 Transitional parsing &Supset; 
+PASS XHTML1.0 Transitional parsing &supseteq; 
+PASS XHTML1.0 Transitional parsing &supseteqq; 
+PASS XHTML1.0 Transitional parsing &supsetneq; 
+PASS XHTML1.0 Transitional parsing &supsetneqq; 
+PASS XHTML1.0 Transitional parsing &supsim; 
+PASS XHTML1.0 Transitional parsing &supsub; 
+PASS XHTML1.0 Transitional parsing &supsup; 
+PASS XHTML1.0 Transitional parsing &swarhk; 
+PASS XHTML1.0 Transitional parsing &swarr; 
+PASS XHTML1.0 Transitional parsing &swArr; 
+PASS XHTML1.0 Transitional parsing &swarrow; 
+PASS XHTML1.0 Transitional parsing &swnwar; 
+PASS XHTML1.0 Transitional parsing &szlig; 
+PASS XHTML1.0 Transitional parsing &Tab; 
+PASS XHTML1.0 Transitional parsing &target; 
+PASS XHTML1.0 Transitional parsing &Tau; 
+PASS XHTML1.0 Transitional parsing &tau; 
+PASS XHTML1.0 Transitional parsing &tbrk; 
+PASS XHTML1.0 Transitional parsing &Tcaron; 
+PASS XHTML1.0 Transitional parsing &tcaron; 
+PASS XHTML1.0 Transitional parsing &Tcedil; 
+PASS XHTML1.0 Transitional parsing &tcedil; 
+PASS XHTML1.0 Transitional parsing &Tcy; 
+PASS XHTML1.0 Transitional parsing &tcy; 
+PASS XHTML1.0 Transitional parsing &tdot; 
+PASS XHTML1.0 Transitional parsing &telrec; 
+PASS XHTML1.0 Transitional parsing &Tfr; 
+PASS XHTML1.0 Transitional parsing &tfr; 
+PASS XHTML1.0 Transitional parsing &there4; 
+PASS XHTML1.0 Transitional parsing &therefore; 
+PASS XHTML1.0 Transitional parsing &Therefore; 
+PASS XHTML1.0 Transitional parsing &Theta; 
+PASS XHTML1.0 Transitional parsing &theta; 
+PASS XHTML1.0 Transitional parsing &thetasym; 
+PASS XHTML1.0 Transitional parsing &thetav; 
+PASS XHTML1.0 Transitional parsing &thickapprox; 
+PASS XHTML1.0 Transitional parsing &thicksim; 
+PASS XHTML1.0 Transitional parsing &ThickSpace; 
+PASS XHTML1.0 Transitional parsing &ThinSpace; 
+PASS XHTML1.0 Transitional parsing &thinsp; 
+PASS XHTML1.0 Transitional parsing &thkap; 
+PASS XHTML1.0 Transitional parsing &thksim; 
+PASS XHTML1.0 Transitional parsing &THORN; 
+PASS XHTML1.0 Transitional parsing &thorn; 
+PASS XHTML1.0 Transitional parsing &tilde; 
+PASS XHTML1.0 Transitional parsing &Tilde; 
+PASS XHTML1.0 Transitional parsing &TildeEqual; 
+PASS XHTML1.0 Transitional parsing &TildeFullEqual; 
+PASS XHTML1.0 Transitional parsing &TildeTilde; 
+PASS XHTML1.0 Transitional parsing &timesbar; 
+PASS XHTML1.0 Transitional parsing &timesb; 
+PASS XHTML1.0 Transitional parsing &times; 
+PASS XHTML1.0 Transitional parsing &timesd; 
+PASS XHTML1.0 Transitional parsing &tint; 
+PASS XHTML1.0 Transitional parsing &toea; 
+PASS XHTML1.0 Transitional parsing &topbot; 
+PASS XHTML1.0 Transitional parsing &topcir; 
+PASS XHTML1.0 Transitional parsing &top; 
+PASS XHTML1.0 Transitional parsing &Topf; 
+PASS XHTML1.0 Transitional parsing &topf; 
+PASS XHTML1.0 Transitional parsing &topfork; 
+PASS XHTML1.0 Transitional parsing &tosa; 
+PASS XHTML1.0 Transitional parsing &tprime; 
+PASS XHTML1.0 Transitional parsing &trade; 
+PASS XHTML1.0 Transitional parsing &TRADE; 
+PASS XHTML1.0 Transitional parsing &triangle; 
+PASS XHTML1.0 Transitional parsing &triangledown; 
+PASS XHTML1.0 Transitional parsing &triangleleft; 
+PASS XHTML1.0 Transitional parsing &trianglelefteq; 
+PASS XHTML1.0 Transitional parsing &triangleq; 
+PASS XHTML1.0 Transitional parsing &triangleright; 
+PASS XHTML1.0 Transitional parsing &trianglerighteq; 
+PASS XHTML1.0 Transitional parsing &tridot; 
+PASS XHTML1.0 Transitional parsing &trie; 
+PASS XHTML1.0 Transitional parsing &triminus; 
+PASS XHTML1.0 Transitional parsing &TripleDot; 
+PASS XHTML1.0 Transitional parsing &triplus; 
+PASS XHTML1.0 Transitional parsing &trisb; 
+PASS XHTML1.0 Transitional parsing &tritime; 
+PASS XHTML1.0 Transitional parsing &trpezium; 
+PASS XHTML1.0 Transitional parsing &Tscr; 
+PASS XHTML1.0 Transitional parsing &tscr; 
+PASS XHTML1.0 Transitional parsing &TScy; 
+PASS XHTML1.0 Transitional parsing &tscy; 
+PASS XHTML1.0 Transitional parsing &TSHcy; 
+PASS XHTML1.0 Transitional parsing &tshcy; 
+PASS XHTML1.0 Transitional parsing &Tstrok; 
+PASS XHTML1.0 Transitional parsing &tstrok; 
+PASS XHTML1.0 Transitional parsing &twixt; 
+PASS XHTML1.0 Transitional parsing &twoheadleftarrow; 
+PASS XHTML1.0 Transitional parsing &twoheadrightarrow; 
+PASS XHTML1.0 Transitional parsing &Uacute; 
+PASS XHTML1.0 Transitional parsing &uacute; 
+PASS XHTML1.0 Transitional parsing &uarr; 
+PASS XHTML1.0 Transitional parsing &Uarr; 
+PASS XHTML1.0 Transitional parsing &uArr; 
+PASS XHTML1.0 Transitional parsing &Uarrocir; 
+PASS XHTML1.0 Transitional parsing &Ubrcy; 
+PASS XHTML1.0 Transitional parsing &ubrcy; 
+PASS XHTML1.0 Transitional parsing &Ubreve; 
+PASS XHTML1.0 Transitional parsing &ubreve; 
+PASS XHTML1.0 Transitional parsing &Ucirc; 
+PASS XHTML1.0 Transitional parsing &ucirc; 
+PASS XHTML1.0 Transitional parsing &Ucy; 
+PASS XHTML1.0 Transitional parsing &ucy; 
+PASS XHTML1.0 Transitional parsing &udarr; 
+PASS XHTML1.0 Transitional parsing &Udblac; 
+PASS XHTML1.0 Transitional parsing &udblac; 
+PASS XHTML1.0 Transitional parsing &udhar; 
+PASS XHTML1.0 Transitional parsing &ufisht; 
+PASS XHTML1.0 Transitional parsing &Ufr; 
+PASS XHTML1.0 Transitional parsing &ufr; 
+PASS XHTML1.0 Transitional parsing &Ugrave; 
+PASS XHTML1.0 Transitional parsing &ugrave; 
+PASS XHTML1.0 Transitional parsing &uHar; 
+PASS XHTML1.0 Transitional parsing &uharl; 
+PASS XHTML1.0 Transitional parsing &uharr; 
+PASS XHTML1.0 Transitional parsing &uhblk; 
+PASS XHTML1.0 Transitional parsing &ulcorn; 
+PASS XHTML1.0 Transitional parsing &ulcorner; 
+PASS XHTML1.0 Transitional parsing &ulcrop; 
+PASS XHTML1.0 Transitional parsing &ultri; 
+PASS XHTML1.0 Transitional parsing &Umacr; 
+PASS XHTML1.0 Transitional parsing &umacr; 
+PASS XHTML1.0 Transitional parsing &uml; 
+PASS XHTML1.0 Transitional parsing &UnderBar; 
+PASS XHTML1.0 Transitional parsing &UnderBrace; 
+PASS XHTML1.0 Transitional parsing &UnderBracket; 
+PASS XHTML1.0 Transitional parsing &UnderParenthesis; 
+PASS XHTML1.0 Transitional parsing &Union; 
+PASS XHTML1.0 Transitional parsing &UnionPlus; 
+PASS XHTML1.0 Transitional parsing &Uogon; 
+PASS XHTML1.0 Transitional parsing &uogon; 
+PASS XHTML1.0 Transitional parsing &Uopf; 
+PASS XHTML1.0 Transitional parsing &uopf; 
+PASS XHTML1.0 Transitional parsing &UpArrowBar; 
+PASS XHTML1.0 Transitional parsing &uparrow; 
+PASS XHTML1.0 Transitional parsing &UpArrow; 
+PASS XHTML1.0 Transitional parsing &Uparrow; 
+PASS XHTML1.0 Transitional parsing &UpArrowDownArrow; 
+PASS XHTML1.0 Transitional parsing &updownarrow; 
+PASS XHTML1.0 Transitional parsing &UpDownArrow; 
+PASS XHTML1.0 Transitional parsing &Updownarrow; 
+PASS XHTML1.0 Transitional parsing &UpEquilibrium; 
+PASS XHTML1.0 Transitional parsing &upharpoonleft; 
+PASS XHTML1.0 Transitional parsing &upharpoonright; 
+PASS XHTML1.0 Transitional parsing &uplus; 
+PASS XHTML1.0 Transitional parsing &UpperLeftArrow; 
+PASS XHTML1.0 Transitional parsing &UpperRightArrow; 
+PASS XHTML1.0 Transitional parsing &upsi; 
+PASS XHTML1.0 Transitional parsing &Upsi; 
+PASS XHTML1.0 Transitional parsing &upsih; 
+PASS XHTML1.0 Transitional parsing &Upsilon; 
+PASS XHTML1.0 Transitional parsing &upsilon; 
+PASS XHTML1.0 Transitional parsing &UpTeeArrow; 
+PASS XHTML1.0 Transitional parsing &UpTee; 
+PASS XHTML1.0 Transitional parsing &upuparrows; 
+PASS XHTML1.0 Transitional parsing &urcorn; 
+PASS XHTML1.0 Transitional parsing &urcorner; 
+PASS XHTML1.0 Transitional parsing &urcrop; 
+PASS XHTML1.0 Transitional parsing &Uring; 
+PASS XHTML1.0 Transitional parsing &uring; 
+PASS XHTML1.0 Transitional parsing &urtri; 
+PASS XHTML1.0 Transitional parsing &Uscr; 
+PASS XHTML1.0 Transitional parsing &uscr; 
+PASS XHTML1.0 Transitional parsing &utdot; 
+PASS XHTML1.0 Transitional parsing &Utilde; 
+PASS XHTML1.0 Transitional parsing &utilde; 
+PASS XHTML1.0 Transitional parsing &utri; 
+PASS XHTML1.0 Transitional parsing &utrif; 
+PASS XHTML1.0 Transitional parsing &uuarr; 
+PASS XHTML1.0 Transitional parsing &Uuml; 
+PASS XHTML1.0 Transitional parsing &uuml; 
+PASS XHTML1.0 Transitional parsing &uwangle; 
+PASS XHTML1.0 Transitional parsing &vangrt; 
+PASS XHTML1.0 Transitional parsing &varepsilon; 
+PASS XHTML1.0 Transitional parsing &varkappa; 
+PASS XHTML1.0 Transitional parsing &varnothing; 
+PASS XHTML1.0 Transitional parsing &varphi; 
+PASS XHTML1.0 Transitional parsing &varpi; 
+PASS XHTML1.0 Transitional parsing &varpropto; 
+PASS XHTML1.0 Transitional parsing &varr; 
+PASS XHTML1.0 Transitional parsing &vArr; 
+PASS XHTML1.0 Transitional parsing &varrho; 
+PASS XHTML1.0 Transitional parsing &varsigma; 
+PASS XHTML1.0 Transitional parsing &varsubsetneq; 
+PASS XHTML1.0 Transitional parsing &varsubsetneqq; 
+PASS XHTML1.0 Transitional parsing &varsupsetneq; 
+PASS XHTML1.0 Transitional parsing &varsupsetneqq; 
+PASS XHTML1.0 Transitional parsing &vartheta; 
+PASS XHTML1.0 Transitional parsing &vartriangleleft; 
+PASS XHTML1.0 Transitional parsing &vartriangleright; 
+PASS XHTML1.0 Transitional parsing &vBar; 
+PASS XHTML1.0 Transitional parsing &Vbar; 
+PASS XHTML1.0 Transitional parsing &vBarv; 
+PASS XHTML1.0 Transitional parsing &Vcy; 
+PASS XHTML1.0 Transitional parsing &vcy; 
+PASS XHTML1.0 Transitional parsing &vdash; 
+PASS XHTML1.0 Transitional parsing &vDash; 
+PASS XHTML1.0 Transitional parsing &Vdash; 
+PASS XHTML1.0 Transitional parsing &VDash; 
+PASS XHTML1.0 Transitional parsing &Vdashl; 
+PASS XHTML1.0 Transitional parsing &veebar; 
+PASS XHTML1.0 Transitional parsing &vee; 
+PASS XHTML1.0 Transitional parsing &Vee; 
+PASS XHTML1.0 Transitional parsing &veeeq; 
+PASS XHTML1.0 Transitional parsing &vellip; 
+PASS XHTML1.0 Transitional parsing &verbar; 
+PASS XHTML1.0 Transitional parsing &Verbar; 
+PASS XHTML1.0 Transitional parsing &vert; 
+PASS XHTML1.0 Transitional parsing &Vert; 
+PASS XHTML1.0 Transitional parsing &VerticalBar; 
+PASS XHTML1.0 Transitional parsing &VerticalLine; 
+PASS XHTML1.0 Transitional parsing &VerticalSeparator; 
+PASS XHTML1.0 Transitional parsing &VerticalTilde; 
+PASS XHTML1.0 Transitional parsing &VeryThinSpace; 
+PASS XHTML1.0 Transitional parsing &Vfr; 
+PASS XHTML1.0 Transitional parsing &vfr; 
+PASS XHTML1.0 Transitional parsing &vltri; 
+PASS XHTML1.0 Transitional parsing &vnsub; 
+PASS XHTML1.0 Transitional parsing &vnsup; 
+PASS XHTML1.0 Transitional parsing &Vopf; 
+PASS XHTML1.0 Transitional parsing &vopf; 
+PASS XHTML1.0 Transitional parsing &vprop; 
+PASS XHTML1.0 Transitional parsing &vrtri; 
+PASS XHTML1.0 Transitional parsing &Vscr; 
+PASS XHTML1.0 Transitional parsing &vscr; 
+PASS XHTML1.0 Transitional parsing &vsubnE; 
+PASS XHTML1.0 Transitional parsing &vsubne; 
+PASS XHTML1.0 Transitional parsing &vsupnE; 
+PASS XHTML1.0 Transitional parsing &vsupne; 
+PASS XHTML1.0 Transitional parsing &Vvdash; 
+PASS XHTML1.0 Transitional parsing &vzigzag; 
+PASS XHTML1.0 Transitional parsing &Wcirc; 
+PASS XHTML1.0 Transitional parsing &wcirc; 
+PASS XHTML1.0 Transitional parsing &wedbar; 
+PASS XHTML1.0 Transitional parsing &wedge; 
+PASS XHTML1.0 Transitional parsing &Wedge; 
+PASS XHTML1.0 Transitional parsing &wedgeq; 
+PASS XHTML1.0 Transitional parsing &weierp; 
+PASS XHTML1.0 Transitional parsing &Wfr; 
+PASS XHTML1.0 Transitional parsing &wfr; 
+PASS XHTML1.0 Transitional parsing &Wopf; 
+PASS XHTML1.0 Transitional parsing &wopf; 
+PASS XHTML1.0 Transitional parsing &wp; 
+PASS XHTML1.0 Transitional parsing &wr; 
+PASS XHTML1.0 Transitional parsing &wreath; 
+PASS XHTML1.0 Transitional parsing &Wscr; 
+PASS XHTML1.0 Transitional parsing &wscr; 
+PASS XHTML1.0 Transitional parsing &xcap; 
+PASS XHTML1.0 Transitional parsing &xcirc; 
+PASS XHTML1.0 Transitional parsing &xcup; 
+PASS XHTML1.0 Transitional parsing &xdtri; 
+PASS XHTML1.0 Transitional parsing &Xfr; 
+PASS XHTML1.0 Transitional parsing &xfr; 
+PASS XHTML1.0 Transitional parsing &xharr; 
+PASS XHTML1.0 Transitional parsing &xhArr; 
+PASS XHTML1.0 Transitional parsing &Xi; 
+PASS XHTML1.0 Transitional parsing &xi; 
+PASS XHTML1.0 Transitional parsing &xlarr; 
+PASS XHTML1.0 Transitional parsing &xlArr; 
+PASS XHTML1.0 Transitional parsing &xmap; 
+PASS XHTML1.0 Transitional parsing &xnis; 
+PASS XHTML1.0 Transitional parsing &xodot; 
+PASS XHTML1.0 Transitional parsing &Xopf; 
+PASS XHTML1.0 Transitional parsing &xopf; 
+PASS XHTML1.0 Transitional parsing &xoplus; 
+PASS XHTML1.0 Transitional parsing &xotime; 
+PASS XHTML1.0 Transitional parsing &xrarr; 
+PASS XHTML1.0 Transitional parsing &xrArr; 
+PASS XHTML1.0 Transitional parsing &Xscr; 
+PASS XHTML1.0 Transitional parsing &xscr; 
+PASS XHTML1.0 Transitional parsing &xsqcup; 
+PASS XHTML1.0 Transitional parsing &xuplus; 
+PASS XHTML1.0 Transitional parsing &xutri; 
+PASS XHTML1.0 Transitional parsing &xvee; 
+PASS XHTML1.0 Transitional parsing &xwedge; 
+PASS XHTML1.0 Transitional parsing &Yacute; 
+PASS XHTML1.0 Transitional parsing &yacute; 
+PASS XHTML1.0 Transitional parsing &YAcy; 
+PASS XHTML1.0 Transitional parsing &yacy; 
+PASS XHTML1.0 Transitional parsing &Ycirc; 
+PASS XHTML1.0 Transitional parsing &ycirc; 
+PASS XHTML1.0 Transitional parsing &Ycy; 
+PASS XHTML1.0 Transitional parsing &ycy; 
+PASS XHTML1.0 Transitional parsing &yen; 
+PASS XHTML1.0 Transitional parsing &Yfr; 
+PASS XHTML1.0 Transitional parsing &yfr; 
+PASS XHTML1.0 Transitional parsing &YIcy; 
+PASS XHTML1.0 Transitional parsing &yicy; 
+PASS XHTML1.0 Transitional parsing &Yopf; 
+PASS XHTML1.0 Transitional parsing &yopf; 
+PASS XHTML1.0 Transitional parsing &Yscr; 
+PASS XHTML1.0 Transitional parsing &yscr; 
+PASS XHTML1.0 Transitional parsing &YUcy; 
+PASS XHTML1.0 Transitional parsing &yucy; 
+PASS XHTML1.0 Transitional parsing &yuml; 
+PASS XHTML1.0 Transitional parsing &Yuml; 
+PASS XHTML1.0 Transitional parsing &Zacute; 
+PASS XHTML1.0 Transitional parsing &zacute; 
+PASS XHTML1.0 Transitional parsing &Zcaron; 
+PASS XHTML1.0 Transitional parsing &zcaron; 
+PASS XHTML1.0 Transitional parsing &Zcy; 
+PASS XHTML1.0 Transitional parsing &zcy; 
+PASS XHTML1.0 Transitional parsing &Zdot; 
+PASS XHTML1.0 Transitional parsing &zdot; 
+PASS XHTML1.0 Transitional parsing &zeetrf; 
+PASS XHTML1.0 Transitional parsing &ZeroWidthSpace; 
+PASS XHTML1.0 Transitional parsing &Zeta; 
+PASS XHTML1.0 Transitional parsing &zeta; 
+PASS XHTML1.0 Transitional parsing &zfr; 
+PASS XHTML1.0 Transitional parsing &Zfr; 
+PASS XHTML1.0 Transitional parsing &ZHcy; 
+PASS XHTML1.0 Transitional parsing &zhcy; 
+PASS XHTML1.0 Transitional parsing &zigrarr; 
+PASS XHTML1.0 Transitional parsing &zopf; 
+PASS XHTML1.0 Transitional parsing &Zopf; 
+PASS XHTML1.0 Transitional parsing &Zscr; 
+PASS XHTML1.0 Transitional parsing &zscr; 
+PASS XHTML1.0 Transitional parsing &zwj; 
+PASS XHTML1.0 Transitional parsing &zwnj; 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-1.htm b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-1.htm
new file mode 100644
index 0000000..4025e2a4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-1.htm
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta name=timeout content=long>
+<title>HTML entities for various XHTML Doctype</title>
+<link rel=help href="http://w3c.github.io/html/xhtml.html#parsing-xhtml-documents">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe id="test" src="xhtml-mathml-dtd-entity-support.htm"></iframe>
+
+<script>
+onload = () => document.getElementById("test").contentWindow.run(
+["application/xhtml+xml", "-//W3C//DTD XHTML 1.0 Transitional//EN", "foo", "XHTML1.0 Transitional"]);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-10.htm b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-10.htm
new file mode 100644
index 0000000..698239e1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-10.htm
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta name=timeout content=long>
+<title>HTML entities for various XHTML Doctype</title>
+<link rel=help href="http://w3c.github.io/html/xhtml.html#parsing-xhtml-documents">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe id="test" src="xhtml-mathml-dtd-entity-support.htm"></iframe>
+
+<script>
+onload = () => document.getElementById("test").contentWindow.run(
+["text/html", null, null, "HTML"]);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-2-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-2-expected.txt
new file mode 100644
index 0000000..7c9166ed
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-2-expected.txt
@@ -0,0 +1,2129 @@
+This is a testharness.js-based test.
+Found 2125 tests; 2122 PASS, 3 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS XHTML1.1 parsing &Aacute; 
+PASS XHTML1.1 parsing &aacute; 
+PASS XHTML1.1 parsing &Abreve; 
+PASS XHTML1.1 parsing &abreve; 
+PASS XHTML1.1 parsing &ac; 
+PASS XHTML1.1 parsing &acd; 
+PASS XHTML1.1 parsing &acE; 
+PASS XHTML1.1 parsing &Acirc; 
+PASS XHTML1.1 parsing &acirc; 
+PASS XHTML1.1 parsing &acute; 
+PASS XHTML1.1 parsing &Acy; 
+PASS XHTML1.1 parsing &acy; 
+PASS XHTML1.1 parsing &AElig; 
+PASS XHTML1.1 parsing &aelig; 
+PASS XHTML1.1 parsing &af; 
+PASS XHTML1.1 parsing &Afr; 
+PASS XHTML1.1 parsing &afr; 
+PASS XHTML1.1 parsing &Agrave; 
+PASS XHTML1.1 parsing &agrave; 
+PASS XHTML1.1 parsing &alefsym; 
+PASS XHTML1.1 parsing &aleph; 
+PASS XHTML1.1 parsing &Alpha; 
+PASS XHTML1.1 parsing &alpha; 
+PASS XHTML1.1 parsing &Amacr; 
+PASS XHTML1.1 parsing &amacr; 
+PASS XHTML1.1 parsing &amalg; 
+PASS XHTML1.1 parsing &amp; 
+FAIL XHTML1.1 parsing &AMP; assert_true: expected true got false
+PASS XHTML1.1 parsing &andand; 
+PASS XHTML1.1 parsing &And; 
+PASS XHTML1.1 parsing &and; 
+PASS XHTML1.1 parsing &andd; 
+PASS XHTML1.1 parsing &andslope; 
+PASS XHTML1.1 parsing &andv; 
+PASS XHTML1.1 parsing &ang; 
+PASS XHTML1.1 parsing &ange; 
+PASS XHTML1.1 parsing &angle; 
+PASS XHTML1.1 parsing &angmsdaa; 
+PASS XHTML1.1 parsing &angmsdab; 
+PASS XHTML1.1 parsing &angmsdac; 
+PASS XHTML1.1 parsing &angmsdad; 
+PASS XHTML1.1 parsing &angmsdae; 
+PASS XHTML1.1 parsing &angmsdaf; 
+PASS XHTML1.1 parsing &angmsdag; 
+PASS XHTML1.1 parsing &angmsdah; 
+PASS XHTML1.1 parsing &angmsd; 
+PASS XHTML1.1 parsing &angrt; 
+PASS XHTML1.1 parsing &angrtvb; 
+PASS XHTML1.1 parsing &angrtvbd; 
+PASS XHTML1.1 parsing &angsph; 
+PASS XHTML1.1 parsing &angst; 
+PASS XHTML1.1 parsing &angzarr; 
+PASS XHTML1.1 parsing &Aogon; 
+PASS XHTML1.1 parsing &aogon; 
+PASS XHTML1.1 parsing &Aopf; 
+PASS XHTML1.1 parsing &aopf; 
+PASS XHTML1.1 parsing &apacir; 
+PASS XHTML1.1 parsing &ap; 
+PASS XHTML1.1 parsing &apE; 
+PASS XHTML1.1 parsing &ape; 
+PASS XHTML1.1 parsing &apid; 
+PASS XHTML1.1 parsing &apos; 
+PASS XHTML1.1 parsing &ApplyFunction; 
+PASS XHTML1.1 parsing &approx; 
+PASS XHTML1.1 parsing &approxeq; 
+PASS XHTML1.1 parsing &Aring; 
+PASS XHTML1.1 parsing &aring; 
+PASS XHTML1.1 parsing &Ascr; 
+PASS XHTML1.1 parsing &ascr; 
+PASS XHTML1.1 parsing &Assign; 
+PASS XHTML1.1 parsing &ast; 
+PASS XHTML1.1 parsing &asymp; 
+PASS XHTML1.1 parsing &asympeq; 
+PASS XHTML1.1 parsing &Atilde; 
+PASS XHTML1.1 parsing &atilde; 
+PASS XHTML1.1 parsing &Auml; 
+PASS XHTML1.1 parsing &auml; 
+PASS XHTML1.1 parsing &awconint; 
+PASS XHTML1.1 parsing &awint; 
+PASS XHTML1.1 parsing &backcong; 
+PASS XHTML1.1 parsing &backepsilon; 
+PASS XHTML1.1 parsing &backprime; 
+PASS XHTML1.1 parsing &backsim; 
+PASS XHTML1.1 parsing &backsimeq; 
+PASS XHTML1.1 parsing &Backslash; 
+PASS XHTML1.1 parsing &Barv; 
+PASS XHTML1.1 parsing &barvee; 
+PASS XHTML1.1 parsing &barwed; 
+PASS XHTML1.1 parsing &Barwed; 
+PASS XHTML1.1 parsing &barwedge; 
+PASS XHTML1.1 parsing &bbrk; 
+PASS XHTML1.1 parsing &bbrktbrk; 
+PASS XHTML1.1 parsing &bcong; 
+PASS XHTML1.1 parsing &Bcy; 
+PASS XHTML1.1 parsing &bcy; 
+PASS XHTML1.1 parsing &bdquo; 
+PASS XHTML1.1 parsing &becaus; 
+PASS XHTML1.1 parsing &because; 
+PASS XHTML1.1 parsing &Because; 
+PASS XHTML1.1 parsing &bemptyv; 
+PASS XHTML1.1 parsing &bepsi; 
+PASS XHTML1.1 parsing &bernou; 
+PASS XHTML1.1 parsing &Bernoullis; 
+PASS XHTML1.1 parsing &Beta; 
+PASS XHTML1.1 parsing &beta; 
+PASS XHTML1.1 parsing &beth; 
+PASS XHTML1.1 parsing &between; 
+PASS XHTML1.1 parsing &Bfr; 
+PASS XHTML1.1 parsing &bfr; 
+PASS XHTML1.1 parsing &bigcap; 
+PASS XHTML1.1 parsing &bigcirc; 
+PASS XHTML1.1 parsing &bigcup; 
+PASS XHTML1.1 parsing &bigodot; 
+PASS XHTML1.1 parsing &bigoplus; 
+PASS XHTML1.1 parsing &bigotimes; 
+PASS XHTML1.1 parsing &bigsqcup; 
+PASS XHTML1.1 parsing &bigstar; 
+PASS XHTML1.1 parsing &bigtriangledown; 
+PASS XHTML1.1 parsing &bigtriangleup; 
+PASS XHTML1.1 parsing &biguplus; 
+PASS XHTML1.1 parsing &bigvee; 
+PASS XHTML1.1 parsing &bigwedge; 
+PASS XHTML1.1 parsing &bkarow; 
+PASS XHTML1.1 parsing &blacklozenge; 
+PASS XHTML1.1 parsing &blacksquare; 
+PASS XHTML1.1 parsing &blacktriangle; 
+PASS XHTML1.1 parsing &blacktriangledown; 
+PASS XHTML1.1 parsing &blacktriangleleft; 
+PASS XHTML1.1 parsing &blacktriangleright; 
+PASS XHTML1.1 parsing &blank; 
+PASS XHTML1.1 parsing &blk12; 
+PASS XHTML1.1 parsing &blk14; 
+PASS XHTML1.1 parsing &blk34; 
+PASS XHTML1.1 parsing &block; 
+PASS XHTML1.1 parsing &bne; 
+PASS XHTML1.1 parsing &bnequiv; 
+PASS XHTML1.1 parsing &bNot; 
+PASS XHTML1.1 parsing &bnot; 
+PASS XHTML1.1 parsing &Bopf; 
+PASS XHTML1.1 parsing &bopf; 
+PASS XHTML1.1 parsing &bot; 
+PASS XHTML1.1 parsing &bottom; 
+PASS XHTML1.1 parsing &bowtie; 
+PASS XHTML1.1 parsing &boxbox; 
+PASS XHTML1.1 parsing &boxdl; 
+PASS XHTML1.1 parsing &boxdL; 
+PASS XHTML1.1 parsing &boxDl; 
+PASS XHTML1.1 parsing &boxDL; 
+PASS XHTML1.1 parsing &boxdr; 
+PASS XHTML1.1 parsing &boxdR; 
+PASS XHTML1.1 parsing &boxDr; 
+PASS XHTML1.1 parsing &boxDR; 
+PASS XHTML1.1 parsing &boxh; 
+PASS XHTML1.1 parsing &boxH; 
+PASS XHTML1.1 parsing &boxhd; 
+PASS XHTML1.1 parsing &boxHd; 
+PASS XHTML1.1 parsing &boxhD; 
+PASS XHTML1.1 parsing &boxHD; 
+PASS XHTML1.1 parsing &boxhu; 
+PASS XHTML1.1 parsing &boxHu; 
+PASS XHTML1.1 parsing &boxhU; 
+PASS XHTML1.1 parsing &boxHU; 
+PASS XHTML1.1 parsing &boxminus; 
+PASS XHTML1.1 parsing &boxplus; 
+PASS XHTML1.1 parsing &boxtimes; 
+PASS XHTML1.1 parsing &boxul; 
+PASS XHTML1.1 parsing &boxuL; 
+PASS XHTML1.1 parsing &boxUl; 
+PASS XHTML1.1 parsing &boxUL; 
+PASS XHTML1.1 parsing &boxur; 
+PASS XHTML1.1 parsing &boxuR; 
+PASS XHTML1.1 parsing &boxUr; 
+PASS XHTML1.1 parsing &boxUR; 
+PASS XHTML1.1 parsing &boxv; 
+PASS XHTML1.1 parsing &boxV; 
+PASS XHTML1.1 parsing &boxvh; 
+PASS XHTML1.1 parsing &boxvH; 
+PASS XHTML1.1 parsing &boxVh; 
+PASS XHTML1.1 parsing &boxVH; 
+PASS XHTML1.1 parsing &boxvl; 
+PASS XHTML1.1 parsing &boxvL; 
+PASS XHTML1.1 parsing &boxVl; 
+PASS XHTML1.1 parsing &boxVL; 
+PASS XHTML1.1 parsing &boxvr; 
+PASS XHTML1.1 parsing &boxvR; 
+PASS XHTML1.1 parsing &boxVr; 
+PASS XHTML1.1 parsing &boxVR; 
+PASS XHTML1.1 parsing &bprime; 
+PASS XHTML1.1 parsing &breve; 
+PASS XHTML1.1 parsing &Breve; 
+PASS XHTML1.1 parsing &brvbar; 
+PASS XHTML1.1 parsing &bscr; 
+PASS XHTML1.1 parsing &Bscr; 
+PASS XHTML1.1 parsing &bsemi; 
+PASS XHTML1.1 parsing &bsim; 
+PASS XHTML1.1 parsing &bsime; 
+PASS XHTML1.1 parsing &bsolb; 
+PASS XHTML1.1 parsing &bsol; 
+PASS XHTML1.1 parsing &bsolhsub; 
+PASS XHTML1.1 parsing &bull; 
+PASS XHTML1.1 parsing &bullet; 
+PASS XHTML1.1 parsing &bump; 
+PASS XHTML1.1 parsing &bumpE; 
+PASS XHTML1.1 parsing &bumpe; 
+PASS XHTML1.1 parsing &Bumpeq; 
+PASS XHTML1.1 parsing &bumpeq; 
+PASS XHTML1.1 parsing &Cacute; 
+PASS XHTML1.1 parsing &cacute; 
+PASS XHTML1.1 parsing &capand; 
+PASS XHTML1.1 parsing &capbrcup; 
+PASS XHTML1.1 parsing &capcap; 
+PASS XHTML1.1 parsing &cap; 
+PASS XHTML1.1 parsing &Cap; 
+PASS XHTML1.1 parsing &capcup; 
+PASS XHTML1.1 parsing &capdot; 
+PASS XHTML1.1 parsing &CapitalDifferentialD; 
+PASS XHTML1.1 parsing &caps; 
+PASS XHTML1.1 parsing &caret; 
+PASS XHTML1.1 parsing &caron; 
+PASS XHTML1.1 parsing &Cayleys; 
+PASS XHTML1.1 parsing &ccaps; 
+PASS XHTML1.1 parsing &Ccaron; 
+PASS XHTML1.1 parsing &ccaron; 
+PASS XHTML1.1 parsing &Ccedil; 
+PASS XHTML1.1 parsing &ccedil; 
+PASS XHTML1.1 parsing &Ccirc; 
+PASS XHTML1.1 parsing &ccirc; 
+PASS XHTML1.1 parsing &Cconint; 
+PASS XHTML1.1 parsing &ccups; 
+PASS XHTML1.1 parsing &ccupssm; 
+PASS XHTML1.1 parsing &Cdot; 
+PASS XHTML1.1 parsing &cdot; 
+PASS XHTML1.1 parsing &cedil; 
+PASS XHTML1.1 parsing &Cedilla; 
+PASS XHTML1.1 parsing &cemptyv; 
+PASS XHTML1.1 parsing &cent; 
+PASS XHTML1.1 parsing &centerdot; 
+PASS XHTML1.1 parsing &CenterDot; 
+PASS XHTML1.1 parsing &cfr; 
+PASS XHTML1.1 parsing &Cfr; 
+PASS XHTML1.1 parsing &CHcy; 
+PASS XHTML1.1 parsing &chcy; 
+PASS XHTML1.1 parsing &check; 
+PASS XHTML1.1 parsing &checkmark; 
+PASS XHTML1.1 parsing &Chi; 
+PASS XHTML1.1 parsing &chi; 
+PASS XHTML1.1 parsing &circ; 
+PASS XHTML1.1 parsing &circeq; 
+PASS XHTML1.1 parsing &circlearrowleft; 
+PASS XHTML1.1 parsing &circlearrowright; 
+PASS XHTML1.1 parsing &circledast; 
+PASS XHTML1.1 parsing &circledcirc; 
+PASS XHTML1.1 parsing &circleddash; 
+PASS XHTML1.1 parsing &CircleDot; 
+PASS XHTML1.1 parsing &circledR; 
+PASS XHTML1.1 parsing &circledS; 
+PASS XHTML1.1 parsing &CircleMinus; 
+PASS XHTML1.1 parsing &CirclePlus; 
+PASS XHTML1.1 parsing &CircleTimes; 
+PASS XHTML1.1 parsing &cir; 
+PASS XHTML1.1 parsing &cirE; 
+PASS XHTML1.1 parsing &cire; 
+PASS XHTML1.1 parsing &cirfnint; 
+PASS XHTML1.1 parsing &cirmid; 
+PASS XHTML1.1 parsing &cirscir; 
+PASS XHTML1.1 parsing &ClockwiseContourIntegral; 
+PASS XHTML1.1 parsing &CloseCurlyDoubleQuote; 
+PASS XHTML1.1 parsing &CloseCurlyQuote; 
+PASS XHTML1.1 parsing &clubs; 
+PASS XHTML1.1 parsing &clubsuit; 
+PASS XHTML1.1 parsing &colon; 
+PASS XHTML1.1 parsing &Colon; 
+PASS XHTML1.1 parsing &Colone; 
+PASS XHTML1.1 parsing &colone; 
+PASS XHTML1.1 parsing &coloneq; 
+PASS XHTML1.1 parsing &comma; 
+PASS XHTML1.1 parsing &commat; 
+PASS XHTML1.1 parsing &comp; 
+PASS XHTML1.1 parsing &compfn; 
+PASS XHTML1.1 parsing &complement; 
+PASS XHTML1.1 parsing &complexes; 
+PASS XHTML1.1 parsing &cong; 
+PASS XHTML1.1 parsing &congdot; 
+PASS XHTML1.1 parsing &Congruent; 
+PASS XHTML1.1 parsing &conint; 
+PASS XHTML1.1 parsing &Conint; 
+PASS XHTML1.1 parsing &ContourIntegral; 
+PASS XHTML1.1 parsing &copf; 
+PASS XHTML1.1 parsing &Copf; 
+PASS XHTML1.1 parsing &coprod; 
+PASS XHTML1.1 parsing &Coproduct; 
+PASS XHTML1.1 parsing &copy; 
+PASS XHTML1.1 parsing &COPY; 
+PASS XHTML1.1 parsing &copysr; 
+PASS XHTML1.1 parsing &CounterClockwiseContourIntegral; 
+PASS XHTML1.1 parsing &crarr; 
+PASS XHTML1.1 parsing &cross; 
+PASS XHTML1.1 parsing &Cross; 
+PASS XHTML1.1 parsing &Cscr; 
+PASS XHTML1.1 parsing &cscr; 
+PASS XHTML1.1 parsing &csub; 
+PASS XHTML1.1 parsing &csube; 
+PASS XHTML1.1 parsing &csup; 
+PASS XHTML1.1 parsing &csupe; 
+PASS XHTML1.1 parsing &ctdot; 
+PASS XHTML1.1 parsing &cudarrl; 
+PASS XHTML1.1 parsing &cudarrr; 
+PASS XHTML1.1 parsing &cuepr; 
+PASS XHTML1.1 parsing &cuesc; 
+PASS XHTML1.1 parsing &cularr; 
+PASS XHTML1.1 parsing &cularrp; 
+PASS XHTML1.1 parsing &cupbrcap; 
+PASS XHTML1.1 parsing &cupcap; 
+PASS XHTML1.1 parsing &CupCap; 
+PASS XHTML1.1 parsing &cup; 
+PASS XHTML1.1 parsing &Cup; 
+PASS XHTML1.1 parsing &cupcup; 
+PASS XHTML1.1 parsing &cupdot; 
+PASS XHTML1.1 parsing &cupor; 
+PASS XHTML1.1 parsing &cups; 
+PASS XHTML1.1 parsing &curarr; 
+PASS XHTML1.1 parsing &curarrm; 
+PASS XHTML1.1 parsing &curlyeqprec; 
+PASS XHTML1.1 parsing &curlyeqsucc; 
+PASS XHTML1.1 parsing &curlyvee; 
+PASS XHTML1.1 parsing &curlywedge; 
+PASS XHTML1.1 parsing &curren; 
+PASS XHTML1.1 parsing &curvearrowleft; 
+PASS XHTML1.1 parsing &curvearrowright; 
+PASS XHTML1.1 parsing &cuvee; 
+PASS XHTML1.1 parsing &cuwed; 
+PASS XHTML1.1 parsing &cwconint; 
+PASS XHTML1.1 parsing &cwint; 
+PASS XHTML1.1 parsing &cylcty; 
+PASS XHTML1.1 parsing &dagger; 
+PASS XHTML1.1 parsing &Dagger; 
+PASS XHTML1.1 parsing &daleth; 
+PASS XHTML1.1 parsing &darr; 
+PASS XHTML1.1 parsing &Darr; 
+PASS XHTML1.1 parsing &dArr; 
+PASS XHTML1.1 parsing &dash; 
+PASS XHTML1.1 parsing &Dashv; 
+PASS XHTML1.1 parsing &dashv; 
+PASS XHTML1.1 parsing &dbkarow; 
+PASS XHTML1.1 parsing &dblac; 
+PASS XHTML1.1 parsing &Dcaron; 
+PASS XHTML1.1 parsing &dcaron; 
+PASS XHTML1.1 parsing &Dcy; 
+PASS XHTML1.1 parsing &dcy; 
+PASS XHTML1.1 parsing &ddagger; 
+PASS XHTML1.1 parsing &ddarr; 
+PASS XHTML1.1 parsing &DD; 
+PASS XHTML1.1 parsing &dd; 
+PASS XHTML1.1 parsing &DDotrahd; 
+PASS XHTML1.1 parsing &ddotseq; 
+PASS XHTML1.1 parsing &deg; 
+PASS XHTML1.1 parsing &Del; 
+PASS XHTML1.1 parsing &Delta; 
+PASS XHTML1.1 parsing &delta; 
+PASS XHTML1.1 parsing &demptyv; 
+PASS XHTML1.1 parsing &dfisht; 
+PASS XHTML1.1 parsing &Dfr; 
+PASS XHTML1.1 parsing &dfr; 
+PASS XHTML1.1 parsing &dHar; 
+PASS XHTML1.1 parsing &dharl; 
+PASS XHTML1.1 parsing &dharr; 
+PASS XHTML1.1 parsing &DiacriticalAcute; 
+PASS XHTML1.1 parsing &DiacriticalDot; 
+PASS XHTML1.1 parsing &DiacriticalDoubleAcute; 
+PASS XHTML1.1 parsing &DiacriticalGrave; 
+PASS XHTML1.1 parsing &DiacriticalTilde; 
+PASS XHTML1.1 parsing &diam; 
+PASS XHTML1.1 parsing &diamond; 
+PASS XHTML1.1 parsing &Diamond; 
+PASS XHTML1.1 parsing &diamondsuit; 
+PASS XHTML1.1 parsing &diams; 
+PASS XHTML1.1 parsing &die; 
+PASS XHTML1.1 parsing &DifferentialD; 
+PASS XHTML1.1 parsing &digamma; 
+PASS XHTML1.1 parsing &disin; 
+PASS XHTML1.1 parsing &div; 
+PASS XHTML1.1 parsing &divide; 
+PASS XHTML1.1 parsing &divideontimes; 
+PASS XHTML1.1 parsing &divonx; 
+PASS XHTML1.1 parsing &DJcy; 
+PASS XHTML1.1 parsing &djcy; 
+PASS XHTML1.1 parsing &dlcorn; 
+PASS XHTML1.1 parsing &dlcrop; 
+PASS XHTML1.1 parsing &dollar; 
+PASS XHTML1.1 parsing &Dopf; 
+PASS XHTML1.1 parsing &dopf; 
+PASS XHTML1.1 parsing &Dot; 
+PASS XHTML1.1 parsing &dot; 
+PASS XHTML1.1 parsing &DotDot; 
+PASS XHTML1.1 parsing &doteq; 
+PASS XHTML1.1 parsing &doteqdot; 
+PASS XHTML1.1 parsing &DotEqual; 
+PASS XHTML1.1 parsing &dotminus; 
+PASS XHTML1.1 parsing &dotplus; 
+PASS XHTML1.1 parsing &dotsquare; 
+PASS XHTML1.1 parsing &doublebarwedge; 
+PASS XHTML1.1 parsing &DoubleContourIntegral; 
+PASS XHTML1.1 parsing &DoubleDot; 
+PASS XHTML1.1 parsing &DoubleDownArrow; 
+PASS XHTML1.1 parsing &DoubleLeftArrow; 
+PASS XHTML1.1 parsing &DoubleLeftRightArrow; 
+PASS XHTML1.1 parsing &DoubleLeftTee; 
+PASS XHTML1.1 parsing &DoubleLongLeftArrow; 
+PASS XHTML1.1 parsing &DoubleLongLeftRightArrow; 
+PASS XHTML1.1 parsing &DoubleLongRightArrow; 
+PASS XHTML1.1 parsing &DoubleRightArrow; 
+PASS XHTML1.1 parsing &DoubleRightTee; 
+PASS XHTML1.1 parsing &DoubleUpArrow; 
+PASS XHTML1.1 parsing &DoubleUpDownArrow; 
+PASS XHTML1.1 parsing &DoubleVerticalBar; 
+PASS XHTML1.1 parsing &DownArrowBar; 
+PASS XHTML1.1 parsing &downarrow; 
+PASS XHTML1.1 parsing &DownArrow; 
+PASS XHTML1.1 parsing &Downarrow; 
+PASS XHTML1.1 parsing &DownArrowUpArrow; 
+PASS XHTML1.1 parsing &DownBreve; 
+PASS XHTML1.1 parsing &downdownarrows; 
+PASS XHTML1.1 parsing &downharpoonleft; 
+PASS XHTML1.1 parsing &downharpoonright; 
+PASS XHTML1.1 parsing &DownLeftRightVector; 
+PASS XHTML1.1 parsing &DownLeftTeeVector; 
+PASS XHTML1.1 parsing &DownLeftVectorBar; 
+PASS XHTML1.1 parsing &DownLeftVector; 
+PASS XHTML1.1 parsing &DownRightTeeVector; 
+PASS XHTML1.1 parsing &DownRightVectorBar; 
+PASS XHTML1.1 parsing &DownRightVector; 
+PASS XHTML1.1 parsing &DownTeeArrow; 
+PASS XHTML1.1 parsing &DownTee; 
+PASS XHTML1.1 parsing &drbkarow; 
+PASS XHTML1.1 parsing &drcorn; 
+PASS XHTML1.1 parsing &drcrop; 
+PASS XHTML1.1 parsing &Dscr; 
+PASS XHTML1.1 parsing &dscr; 
+PASS XHTML1.1 parsing &DScy; 
+PASS XHTML1.1 parsing &dscy; 
+PASS XHTML1.1 parsing &dsol; 
+PASS XHTML1.1 parsing &Dstrok; 
+PASS XHTML1.1 parsing &dstrok; 
+PASS XHTML1.1 parsing &dtdot; 
+PASS XHTML1.1 parsing &dtri; 
+PASS XHTML1.1 parsing &dtrif; 
+PASS XHTML1.1 parsing &duarr; 
+PASS XHTML1.1 parsing &duhar; 
+PASS XHTML1.1 parsing &dwangle; 
+PASS XHTML1.1 parsing &DZcy; 
+PASS XHTML1.1 parsing &dzcy; 
+PASS XHTML1.1 parsing &dzigrarr; 
+PASS XHTML1.1 parsing &Eacute; 
+PASS XHTML1.1 parsing &eacute; 
+PASS XHTML1.1 parsing &easter; 
+PASS XHTML1.1 parsing &Ecaron; 
+PASS XHTML1.1 parsing &ecaron; 
+PASS XHTML1.1 parsing &Ecirc; 
+PASS XHTML1.1 parsing &ecirc; 
+PASS XHTML1.1 parsing &ecir; 
+PASS XHTML1.1 parsing &ecolon; 
+PASS XHTML1.1 parsing &Ecy; 
+PASS XHTML1.1 parsing &ecy; 
+PASS XHTML1.1 parsing &eDDot; 
+PASS XHTML1.1 parsing &Edot; 
+PASS XHTML1.1 parsing &edot; 
+PASS XHTML1.1 parsing &eDot; 
+PASS XHTML1.1 parsing &ee; 
+PASS XHTML1.1 parsing &efDot; 
+PASS XHTML1.1 parsing &Efr; 
+PASS XHTML1.1 parsing &efr; 
+PASS XHTML1.1 parsing &eg; 
+PASS XHTML1.1 parsing &Egrave; 
+PASS XHTML1.1 parsing &egrave; 
+PASS XHTML1.1 parsing &egs; 
+PASS XHTML1.1 parsing &egsdot; 
+PASS XHTML1.1 parsing &el; 
+PASS XHTML1.1 parsing &Element; 
+PASS XHTML1.1 parsing &elinters; 
+PASS XHTML1.1 parsing &ell; 
+PASS XHTML1.1 parsing &els; 
+PASS XHTML1.1 parsing &elsdot; 
+PASS XHTML1.1 parsing &Emacr; 
+PASS XHTML1.1 parsing &emacr; 
+PASS XHTML1.1 parsing &empty; 
+PASS XHTML1.1 parsing &emptyset; 
+PASS XHTML1.1 parsing &EmptySmallSquare; 
+PASS XHTML1.1 parsing &emptyv; 
+PASS XHTML1.1 parsing &EmptyVerySmallSquare; 
+PASS XHTML1.1 parsing &emsp13; 
+PASS XHTML1.1 parsing &emsp14; 
+PASS XHTML1.1 parsing &emsp; 
+PASS XHTML1.1 parsing &ENG; 
+PASS XHTML1.1 parsing &eng; 
+PASS XHTML1.1 parsing &ensp; 
+PASS XHTML1.1 parsing &Eogon; 
+PASS XHTML1.1 parsing &eogon; 
+PASS XHTML1.1 parsing &Eopf; 
+PASS XHTML1.1 parsing &eopf; 
+PASS XHTML1.1 parsing &epar; 
+PASS XHTML1.1 parsing &eparsl; 
+PASS XHTML1.1 parsing &eplus; 
+PASS XHTML1.1 parsing &epsi; 
+PASS XHTML1.1 parsing &Epsilon; 
+PASS XHTML1.1 parsing &epsilon; 
+PASS XHTML1.1 parsing &epsiv; 
+PASS XHTML1.1 parsing &eqcirc; 
+PASS XHTML1.1 parsing &eqcolon; 
+PASS XHTML1.1 parsing &eqsim; 
+PASS XHTML1.1 parsing &eqslantgtr; 
+PASS XHTML1.1 parsing &eqslantless; 
+PASS XHTML1.1 parsing &Equal; 
+PASS XHTML1.1 parsing &equals; 
+PASS XHTML1.1 parsing &EqualTilde; 
+PASS XHTML1.1 parsing &equest; 
+PASS XHTML1.1 parsing &Equilibrium; 
+PASS XHTML1.1 parsing &equiv; 
+PASS XHTML1.1 parsing &equivDD; 
+PASS XHTML1.1 parsing &eqvparsl; 
+PASS XHTML1.1 parsing &erarr; 
+PASS XHTML1.1 parsing &erDot; 
+PASS XHTML1.1 parsing &escr; 
+PASS XHTML1.1 parsing &Escr; 
+PASS XHTML1.1 parsing &esdot; 
+PASS XHTML1.1 parsing &Esim; 
+PASS XHTML1.1 parsing &esim; 
+PASS XHTML1.1 parsing &Eta; 
+PASS XHTML1.1 parsing &eta; 
+PASS XHTML1.1 parsing &ETH; 
+PASS XHTML1.1 parsing &eth; 
+PASS XHTML1.1 parsing &Euml; 
+PASS XHTML1.1 parsing &euml; 
+PASS XHTML1.1 parsing &euro; 
+PASS XHTML1.1 parsing &excl; 
+PASS XHTML1.1 parsing &exist; 
+PASS XHTML1.1 parsing &Exists; 
+PASS XHTML1.1 parsing &expectation; 
+PASS XHTML1.1 parsing &exponentiale; 
+PASS XHTML1.1 parsing &ExponentialE; 
+PASS XHTML1.1 parsing &fallingdotseq; 
+PASS XHTML1.1 parsing &Fcy; 
+PASS XHTML1.1 parsing &fcy; 
+PASS XHTML1.1 parsing &female; 
+PASS XHTML1.1 parsing &ffilig; 
+PASS XHTML1.1 parsing &fflig; 
+PASS XHTML1.1 parsing &ffllig; 
+PASS XHTML1.1 parsing &Ffr; 
+PASS XHTML1.1 parsing &ffr; 
+PASS XHTML1.1 parsing &filig; 
+PASS XHTML1.1 parsing &FilledSmallSquare; 
+PASS XHTML1.1 parsing &FilledVerySmallSquare; 
+PASS XHTML1.1 parsing &fjlig; 
+PASS XHTML1.1 parsing &flat; 
+PASS XHTML1.1 parsing &fllig; 
+PASS XHTML1.1 parsing &fltns; 
+PASS XHTML1.1 parsing &fnof; 
+PASS XHTML1.1 parsing &Fopf; 
+PASS XHTML1.1 parsing &fopf; 
+PASS XHTML1.1 parsing &forall; 
+PASS XHTML1.1 parsing &ForAll; 
+PASS XHTML1.1 parsing &fork; 
+PASS XHTML1.1 parsing &forkv; 
+PASS XHTML1.1 parsing &Fouriertrf; 
+PASS XHTML1.1 parsing &fpartint; 
+PASS XHTML1.1 parsing &frac12; 
+PASS XHTML1.1 parsing &frac13; 
+PASS XHTML1.1 parsing &frac14; 
+PASS XHTML1.1 parsing &frac15; 
+PASS XHTML1.1 parsing &frac16; 
+PASS XHTML1.1 parsing &frac18; 
+PASS XHTML1.1 parsing &frac23; 
+PASS XHTML1.1 parsing &frac25; 
+PASS XHTML1.1 parsing &frac34; 
+PASS XHTML1.1 parsing &frac35; 
+PASS XHTML1.1 parsing &frac38; 
+PASS XHTML1.1 parsing &frac45; 
+PASS XHTML1.1 parsing &frac56; 
+PASS XHTML1.1 parsing &frac58; 
+PASS XHTML1.1 parsing &frac78; 
+PASS XHTML1.1 parsing &frasl; 
+PASS XHTML1.1 parsing &frown; 
+PASS XHTML1.1 parsing &fscr; 
+PASS XHTML1.1 parsing &Fscr; 
+PASS XHTML1.1 parsing &gacute; 
+PASS XHTML1.1 parsing &Gamma; 
+PASS XHTML1.1 parsing &gamma; 
+PASS XHTML1.1 parsing &Gammad; 
+PASS XHTML1.1 parsing &gammad; 
+PASS XHTML1.1 parsing &gap; 
+PASS XHTML1.1 parsing &Gbreve; 
+PASS XHTML1.1 parsing &gbreve; 
+PASS XHTML1.1 parsing &Gcedil; 
+PASS XHTML1.1 parsing &Gcirc; 
+PASS XHTML1.1 parsing &gcirc; 
+PASS XHTML1.1 parsing &Gcy; 
+PASS XHTML1.1 parsing &gcy; 
+PASS XHTML1.1 parsing &Gdot; 
+PASS XHTML1.1 parsing &gdot; 
+PASS XHTML1.1 parsing &ge; 
+PASS XHTML1.1 parsing &gE; 
+PASS XHTML1.1 parsing &gEl; 
+PASS XHTML1.1 parsing &gel; 
+PASS XHTML1.1 parsing &geq; 
+PASS XHTML1.1 parsing &geqq; 
+PASS XHTML1.1 parsing &geqslant; 
+PASS XHTML1.1 parsing &gescc; 
+PASS XHTML1.1 parsing &ges; 
+PASS XHTML1.1 parsing &gesdot; 
+PASS XHTML1.1 parsing &gesdoto; 
+PASS XHTML1.1 parsing &gesdotol; 
+PASS XHTML1.1 parsing &gesl; 
+PASS XHTML1.1 parsing &gesles; 
+PASS XHTML1.1 parsing &Gfr; 
+PASS XHTML1.1 parsing &gfr; 
+PASS XHTML1.1 parsing &gg; 
+PASS XHTML1.1 parsing &Gg; 
+PASS XHTML1.1 parsing &ggg; 
+PASS XHTML1.1 parsing &gimel; 
+PASS XHTML1.1 parsing &GJcy; 
+PASS XHTML1.1 parsing &gjcy; 
+PASS XHTML1.1 parsing &gla; 
+PASS XHTML1.1 parsing &gl; 
+PASS XHTML1.1 parsing &glE; 
+PASS XHTML1.1 parsing &glj; 
+PASS XHTML1.1 parsing &gnap; 
+PASS XHTML1.1 parsing &gnapprox; 
+PASS XHTML1.1 parsing &gne; 
+PASS XHTML1.1 parsing &gnE; 
+PASS XHTML1.1 parsing &gneq; 
+PASS XHTML1.1 parsing &gneqq; 
+PASS XHTML1.1 parsing &gnsim; 
+PASS XHTML1.1 parsing &Gopf; 
+PASS XHTML1.1 parsing &gopf; 
+PASS XHTML1.1 parsing &grave; 
+PASS XHTML1.1 parsing &GreaterEqual; 
+PASS XHTML1.1 parsing &GreaterEqualLess; 
+PASS XHTML1.1 parsing &GreaterFullEqual; 
+PASS XHTML1.1 parsing &GreaterGreater; 
+PASS XHTML1.1 parsing &GreaterLess; 
+PASS XHTML1.1 parsing &GreaterSlantEqual; 
+PASS XHTML1.1 parsing &GreaterTilde; 
+PASS XHTML1.1 parsing &Gscr; 
+PASS XHTML1.1 parsing &gscr; 
+PASS XHTML1.1 parsing &gsim; 
+PASS XHTML1.1 parsing &gsime; 
+PASS XHTML1.1 parsing &gsiml; 
+PASS XHTML1.1 parsing &gtcc; 
+PASS XHTML1.1 parsing &gtcir; 
+PASS XHTML1.1 parsing &gt; 
+PASS XHTML1.1 parsing &GT; 
+PASS XHTML1.1 parsing &Gt; 
+PASS XHTML1.1 parsing &gtdot; 
+PASS XHTML1.1 parsing &gtlPar; 
+PASS XHTML1.1 parsing &gtquest; 
+PASS XHTML1.1 parsing &gtrapprox; 
+PASS XHTML1.1 parsing &gtrarr; 
+PASS XHTML1.1 parsing &gtrdot; 
+PASS XHTML1.1 parsing &gtreqless; 
+PASS XHTML1.1 parsing &gtreqqless; 
+PASS XHTML1.1 parsing &gtrless; 
+PASS XHTML1.1 parsing &gtrsim; 
+PASS XHTML1.1 parsing &gvertneqq; 
+PASS XHTML1.1 parsing &gvnE; 
+PASS XHTML1.1 parsing &Hacek; 
+PASS XHTML1.1 parsing &hairsp; 
+PASS XHTML1.1 parsing &half; 
+PASS XHTML1.1 parsing &hamilt; 
+PASS XHTML1.1 parsing &HARDcy; 
+PASS XHTML1.1 parsing &hardcy; 
+PASS XHTML1.1 parsing &harrcir; 
+PASS XHTML1.1 parsing &harr; 
+PASS XHTML1.1 parsing &hArr; 
+PASS XHTML1.1 parsing &harrw; 
+PASS XHTML1.1 parsing &Hat; 
+PASS XHTML1.1 parsing &hbar; 
+PASS XHTML1.1 parsing &Hcirc; 
+PASS XHTML1.1 parsing &hcirc; 
+PASS XHTML1.1 parsing &hearts; 
+PASS XHTML1.1 parsing &heartsuit; 
+PASS XHTML1.1 parsing &hellip; 
+PASS XHTML1.1 parsing &hercon; 
+PASS XHTML1.1 parsing &hfr; 
+PASS XHTML1.1 parsing &Hfr; 
+PASS XHTML1.1 parsing &HilbertSpace; 
+PASS XHTML1.1 parsing &hksearow; 
+PASS XHTML1.1 parsing &hkswarow; 
+PASS XHTML1.1 parsing &hoarr; 
+PASS XHTML1.1 parsing &homtht; 
+PASS XHTML1.1 parsing &hookleftarrow; 
+PASS XHTML1.1 parsing &hookrightarrow; 
+PASS XHTML1.1 parsing &hopf; 
+PASS XHTML1.1 parsing &Hopf; 
+PASS XHTML1.1 parsing &horbar; 
+PASS XHTML1.1 parsing &HorizontalLine; 
+PASS XHTML1.1 parsing &hscr; 
+PASS XHTML1.1 parsing &Hscr; 
+PASS XHTML1.1 parsing &hslash; 
+PASS XHTML1.1 parsing &Hstrok; 
+PASS XHTML1.1 parsing &hstrok; 
+PASS XHTML1.1 parsing &HumpDownHump; 
+PASS XHTML1.1 parsing &HumpEqual; 
+PASS XHTML1.1 parsing &hybull; 
+PASS XHTML1.1 parsing &hyphen; 
+PASS XHTML1.1 parsing &Iacute; 
+PASS XHTML1.1 parsing &iacute; 
+PASS XHTML1.1 parsing &ic; 
+PASS XHTML1.1 parsing &Icirc; 
+PASS XHTML1.1 parsing &icirc; 
+PASS XHTML1.1 parsing &Icy; 
+PASS XHTML1.1 parsing &icy; 
+PASS XHTML1.1 parsing &Idot; 
+PASS XHTML1.1 parsing &IEcy; 
+PASS XHTML1.1 parsing &iecy; 
+PASS XHTML1.1 parsing &iexcl; 
+PASS XHTML1.1 parsing &iff; 
+PASS XHTML1.1 parsing &ifr; 
+PASS XHTML1.1 parsing &Ifr; 
+PASS XHTML1.1 parsing &Igrave; 
+PASS XHTML1.1 parsing &igrave; 
+PASS XHTML1.1 parsing &ii; 
+PASS XHTML1.1 parsing &iiiint; 
+PASS XHTML1.1 parsing &iiint; 
+PASS XHTML1.1 parsing &iinfin; 
+PASS XHTML1.1 parsing &iiota; 
+PASS XHTML1.1 parsing &IJlig; 
+PASS XHTML1.1 parsing &ijlig; 
+PASS XHTML1.1 parsing &Imacr; 
+PASS XHTML1.1 parsing &imacr; 
+PASS XHTML1.1 parsing &image; 
+PASS XHTML1.1 parsing &ImaginaryI; 
+PASS XHTML1.1 parsing &imagline; 
+PASS XHTML1.1 parsing &imagpart; 
+PASS XHTML1.1 parsing &imath; 
+PASS XHTML1.1 parsing &Im; 
+PASS XHTML1.1 parsing &imof; 
+PASS XHTML1.1 parsing &imped; 
+PASS XHTML1.1 parsing &Implies; 
+PASS XHTML1.1 parsing &incare; 
+PASS XHTML1.1 parsing &in; 
+PASS XHTML1.1 parsing &infin; 
+PASS XHTML1.1 parsing &infintie; 
+PASS XHTML1.1 parsing &inodot; 
+PASS XHTML1.1 parsing &intcal; 
+PASS XHTML1.1 parsing &int; 
+PASS XHTML1.1 parsing &Int; 
+PASS XHTML1.1 parsing &integers; 
+PASS XHTML1.1 parsing &Integral; 
+PASS XHTML1.1 parsing &intercal; 
+PASS XHTML1.1 parsing &Intersection; 
+PASS XHTML1.1 parsing &intlarhk; 
+PASS XHTML1.1 parsing &intprod; 
+PASS XHTML1.1 parsing &InvisibleComma; 
+PASS XHTML1.1 parsing &InvisibleTimes; 
+PASS XHTML1.1 parsing &IOcy; 
+PASS XHTML1.1 parsing &iocy; 
+PASS XHTML1.1 parsing &Iogon; 
+PASS XHTML1.1 parsing &iogon; 
+PASS XHTML1.1 parsing &Iopf; 
+PASS XHTML1.1 parsing &iopf; 
+PASS XHTML1.1 parsing &Iota; 
+PASS XHTML1.1 parsing &iota; 
+PASS XHTML1.1 parsing &iprod; 
+PASS XHTML1.1 parsing &iquest; 
+PASS XHTML1.1 parsing &iscr; 
+PASS XHTML1.1 parsing &Iscr; 
+PASS XHTML1.1 parsing &isin; 
+PASS XHTML1.1 parsing &isindot; 
+PASS XHTML1.1 parsing &isinE; 
+PASS XHTML1.1 parsing &isins; 
+PASS XHTML1.1 parsing &isinsv; 
+PASS XHTML1.1 parsing &isinv; 
+PASS XHTML1.1 parsing &it; 
+PASS XHTML1.1 parsing &Itilde; 
+PASS XHTML1.1 parsing &itilde; 
+PASS XHTML1.1 parsing &Iukcy; 
+PASS XHTML1.1 parsing &iukcy; 
+PASS XHTML1.1 parsing &Iuml; 
+PASS XHTML1.1 parsing &iuml; 
+PASS XHTML1.1 parsing &Jcirc; 
+PASS XHTML1.1 parsing &jcirc; 
+PASS XHTML1.1 parsing &Jcy; 
+PASS XHTML1.1 parsing &jcy; 
+PASS XHTML1.1 parsing &Jfr; 
+PASS XHTML1.1 parsing &jfr; 
+PASS XHTML1.1 parsing &jmath; 
+PASS XHTML1.1 parsing &Jopf; 
+PASS XHTML1.1 parsing &jopf; 
+PASS XHTML1.1 parsing &Jscr; 
+PASS XHTML1.1 parsing &jscr; 
+PASS XHTML1.1 parsing &Jsercy; 
+PASS XHTML1.1 parsing &jsercy; 
+PASS XHTML1.1 parsing &Jukcy; 
+PASS XHTML1.1 parsing &jukcy; 
+PASS XHTML1.1 parsing &Kappa; 
+PASS XHTML1.1 parsing &kappa; 
+PASS XHTML1.1 parsing &kappav; 
+PASS XHTML1.1 parsing &Kcedil; 
+PASS XHTML1.1 parsing &kcedil; 
+PASS XHTML1.1 parsing &Kcy; 
+PASS XHTML1.1 parsing &kcy; 
+PASS XHTML1.1 parsing &Kfr; 
+PASS XHTML1.1 parsing &kfr; 
+PASS XHTML1.1 parsing &kgreen; 
+PASS XHTML1.1 parsing &KHcy; 
+PASS XHTML1.1 parsing &khcy; 
+PASS XHTML1.1 parsing &KJcy; 
+PASS XHTML1.1 parsing &kjcy; 
+PASS XHTML1.1 parsing &Kopf; 
+PASS XHTML1.1 parsing &kopf; 
+PASS XHTML1.1 parsing &Kscr; 
+PASS XHTML1.1 parsing &kscr; 
+PASS XHTML1.1 parsing &lAarr; 
+PASS XHTML1.1 parsing &Lacute; 
+PASS XHTML1.1 parsing &lacute; 
+PASS XHTML1.1 parsing &laemptyv; 
+PASS XHTML1.1 parsing &lagran; 
+PASS XHTML1.1 parsing &Lambda; 
+PASS XHTML1.1 parsing &lambda; 
+PASS XHTML1.1 parsing &lang; 
+PASS XHTML1.1 parsing &Lang; 
+PASS XHTML1.1 parsing &langd; 
+PASS XHTML1.1 parsing &langle; 
+PASS XHTML1.1 parsing &lap; 
+PASS XHTML1.1 parsing &Laplacetrf; 
+PASS XHTML1.1 parsing &laquo; 
+PASS XHTML1.1 parsing &larrb; 
+PASS XHTML1.1 parsing &larrbfs; 
+PASS XHTML1.1 parsing &larr; 
+PASS XHTML1.1 parsing &Larr; 
+PASS XHTML1.1 parsing &lArr; 
+PASS XHTML1.1 parsing &larrfs; 
+PASS XHTML1.1 parsing &larrhk; 
+PASS XHTML1.1 parsing &larrlp; 
+PASS XHTML1.1 parsing &larrpl; 
+PASS XHTML1.1 parsing &larrsim; 
+PASS XHTML1.1 parsing &larrtl; 
+PASS XHTML1.1 parsing &latail; 
+PASS XHTML1.1 parsing &lAtail; 
+PASS XHTML1.1 parsing &lat; 
+PASS XHTML1.1 parsing &late; 
+PASS XHTML1.1 parsing &lates; 
+PASS XHTML1.1 parsing &lbarr; 
+PASS XHTML1.1 parsing &lBarr; 
+PASS XHTML1.1 parsing &lbbrk; 
+PASS XHTML1.1 parsing &lbrace; 
+PASS XHTML1.1 parsing &lbrack; 
+PASS XHTML1.1 parsing &lbrke; 
+PASS XHTML1.1 parsing &lbrksld; 
+PASS XHTML1.1 parsing &lbrkslu; 
+PASS XHTML1.1 parsing &Lcaron; 
+PASS XHTML1.1 parsing &lcaron; 
+PASS XHTML1.1 parsing &Lcedil; 
+PASS XHTML1.1 parsing &lcedil; 
+PASS XHTML1.1 parsing &lceil; 
+PASS XHTML1.1 parsing &lcub; 
+PASS XHTML1.1 parsing &Lcy; 
+PASS XHTML1.1 parsing &lcy; 
+PASS XHTML1.1 parsing &ldca; 
+PASS XHTML1.1 parsing &ldquo; 
+PASS XHTML1.1 parsing &ldquor; 
+PASS XHTML1.1 parsing &ldrdhar; 
+PASS XHTML1.1 parsing &ldrushar; 
+PASS XHTML1.1 parsing &ldsh; 
+PASS XHTML1.1 parsing &le; 
+PASS XHTML1.1 parsing &lE; 
+PASS XHTML1.1 parsing &LeftAngleBracket; 
+PASS XHTML1.1 parsing &LeftArrowBar; 
+PASS XHTML1.1 parsing &leftarrow; 
+PASS XHTML1.1 parsing &LeftArrow; 
+PASS XHTML1.1 parsing &Leftarrow; 
+PASS XHTML1.1 parsing &LeftArrowRightArrow; 
+PASS XHTML1.1 parsing &leftarrowtail; 
+PASS XHTML1.1 parsing &LeftCeiling; 
+PASS XHTML1.1 parsing &LeftDoubleBracket; 
+PASS XHTML1.1 parsing &LeftDownTeeVector; 
+PASS XHTML1.1 parsing &LeftDownVectorBar; 
+PASS XHTML1.1 parsing &LeftDownVector; 
+PASS XHTML1.1 parsing &LeftFloor; 
+PASS XHTML1.1 parsing &leftharpoondown; 
+PASS XHTML1.1 parsing &leftharpoonup; 
+PASS XHTML1.1 parsing &leftleftarrows; 
+PASS XHTML1.1 parsing &leftrightarrow; 
+PASS XHTML1.1 parsing &LeftRightArrow; 
+PASS XHTML1.1 parsing &Leftrightarrow; 
+PASS XHTML1.1 parsing &leftrightarrows; 
+PASS XHTML1.1 parsing &leftrightharpoons; 
+PASS XHTML1.1 parsing &leftrightsquigarrow; 
+PASS XHTML1.1 parsing &LeftRightVector; 
+PASS XHTML1.1 parsing &LeftTeeArrow; 
+PASS XHTML1.1 parsing &LeftTee; 
+PASS XHTML1.1 parsing &LeftTeeVector; 
+PASS XHTML1.1 parsing &leftthreetimes; 
+PASS XHTML1.1 parsing &LeftTriangleBar; 
+PASS XHTML1.1 parsing &LeftTriangle; 
+PASS XHTML1.1 parsing &LeftTriangleEqual; 
+PASS XHTML1.1 parsing &LeftUpDownVector; 
+PASS XHTML1.1 parsing &LeftUpTeeVector; 
+PASS XHTML1.1 parsing &LeftUpVectorBar; 
+PASS XHTML1.1 parsing &LeftUpVector; 
+PASS XHTML1.1 parsing &LeftVectorBar; 
+PASS XHTML1.1 parsing &LeftVector; 
+PASS XHTML1.1 parsing &lEg; 
+PASS XHTML1.1 parsing &leg; 
+PASS XHTML1.1 parsing &leq; 
+PASS XHTML1.1 parsing &leqq; 
+PASS XHTML1.1 parsing &leqslant; 
+PASS XHTML1.1 parsing &lescc; 
+PASS XHTML1.1 parsing &les; 
+PASS XHTML1.1 parsing &lesdot; 
+PASS XHTML1.1 parsing &lesdoto; 
+PASS XHTML1.1 parsing &lesdotor; 
+PASS XHTML1.1 parsing &lesg; 
+PASS XHTML1.1 parsing &lesges; 
+PASS XHTML1.1 parsing &lessapprox; 
+PASS XHTML1.1 parsing &lessdot; 
+PASS XHTML1.1 parsing &lesseqgtr; 
+PASS XHTML1.1 parsing &lesseqqgtr; 
+PASS XHTML1.1 parsing &LessEqualGreater; 
+PASS XHTML1.1 parsing &LessFullEqual; 
+PASS XHTML1.1 parsing &LessGreater; 
+PASS XHTML1.1 parsing &lessgtr; 
+PASS XHTML1.1 parsing &LessLess; 
+PASS XHTML1.1 parsing &lesssim; 
+PASS XHTML1.1 parsing &LessSlantEqual; 
+PASS XHTML1.1 parsing &LessTilde; 
+PASS XHTML1.1 parsing &lfisht; 
+PASS XHTML1.1 parsing &lfloor; 
+PASS XHTML1.1 parsing &Lfr; 
+PASS XHTML1.1 parsing &lfr; 
+PASS XHTML1.1 parsing &lg; 
+PASS XHTML1.1 parsing &lgE; 
+PASS XHTML1.1 parsing &lHar; 
+PASS XHTML1.1 parsing &lhard; 
+PASS XHTML1.1 parsing &lharu; 
+PASS XHTML1.1 parsing &lharul; 
+PASS XHTML1.1 parsing &lhblk; 
+PASS XHTML1.1 parsing &LJcy; 
+PASS XHTML1.1 parsing &ljcy; 
+PASS XHTML1.1 parsing &llarr; 
+PASS XHTML1.1 parsing &ll; 
+PASS XHTML1.1 parsing &Ll; 
+PASS XHTML1.1 parsing &llcorner; 
+PASS XHTML1.1 parsing &Lleftarrow; 
+PASS XHTML1.1 parsing &llhard; 
+PASS XHTML1.1 parsing &lltri; 
+PASS XHTML1.1 parsing &Lmidot; 
+PASS XHTML1.1 parsing &lmidot; 
+PASS XHTML1.1 parsing &lmoustache; 
+PASS XHTML1.1 parsing &lmoust; 
+PASS XHTML1.1 parsing &lnap; 
+PASS XHTML1.1 parsing &lnapprox; 
+PASS XHTML1.1 parsing &lne; 
+PASS XHTML1.1 parsing &lnE; 
+PASS XHTML1.1 parsing &lneq; 
+PASS XHTML1.1 parsing &lneqq; 
+PASS XHTML1.1 parsing &lnsim; 
+PASS XHTML1.1 parsing &loang; 
+PASS XHTML1.1 parsing &loarr; 
+PASS XHTML1.1 parsing &lobrk; 
+PASS XHTML1.1 parsing &longleftarrow; 
+PASS XHTML1.1 parsing &LongLeftArrow; 
+PASS XHTML1.1 parsing &Longleftarrow; 
+PASS XHTML1.1 parsing &longleftrightarrow; 
+PASS XHTML1.1 parsing &LongLeftRightArrow; 
+PASS XHTML1.1 parsing &Longleftrightarrow; 
+PASS XHTML1.1 parsing &longmapsto; 
+PASS XHTML1.1 parsing &longrightarrow; 
+PASS XHTML1.1 parsing &LongRightArrow; 
+PASS XHTML1.1 parsing &Longrightarrow; 
+PASS XHTML1.1 parsing &looparrowleft; 
+PASS XHTML1.1 parsing &looparrowright; 
+PASS XHTML1.1 parsing &lopar; 
+PASS XHTML1.1 parsing &Lopf; 
+PASS XHTML1.1 parsing &lopf; 
+PASS XHTML1.1 parsing &loplus; 
+PASS XHTML1.1 parsing &lotimes; 
+PASS XHTML1.1 parsing &lowast; 
+PASS XHTML1.1 parsing &lowbar; 
+PASS XHTML1.1 parsing &LowerLeftArrow; 
+PASS XHTML1.1 parsing &LowerRightArrow; 
+PASS XHTML1.1 parsing &loz; 
+PASS XHTML1.1 parsing &lozenge; 
+PASS XHTML1.1 parsing &lozf; 
+PASS XHTML1.1 parsing &lpar; 
+PASS XHTML1.1 parsing &lparlt; 
+PASS XHTML1.1 parsing &lrarr; 
+PASS XHTML1.1 parsing &lrcorner; 
+PASS XHTML1.1 parsing &lrhar; 
+PASS XHTML1.1 parsing &lrhard; 
+PASS XHTML1.1 parsing &lrm; 
+PASS XHTML1.1 parsing &lrtri; 
+PASS XHTML1.1 parsing &lsaquo; 
+PASS XHTML1.1 parsing &lscr; 
+PASS XHTML1.1 parsing &Lscr; 
+PASS XHTML1.1 parsing &lsh; 
+PASS XHTML1.1 parsing &Lsh; 
+PASS XHTML1.1 parsing &lsim; 
+PASS XHTML1.1 parsing &lsime; 
+PASS XHTML1.1 parsing &lsimg; 
+PASS XHTML1.1 parsing &lsqb; 
+PASS XHTML1.1 parsing &lsquo; 
+PASS XHTML1.1 parsing &lsquor; 
+PASS XHTML1.1 parsing &Lstrok; 
+PASS XHTML1.1 parsing &lstrok; 
+PASS XHTML1.1 parsing &ltcc; 
+PASS XHTML1.1 parsing &ltcir; 
+PASS XHTML1.1 parsing &lt; 
+FAIL XHTML1.1 parsing &LT; assert_true: expected true got false
+PASS XHTML1.1 parsing &Lt; 
+PASS XHTML1.1 parsing &ltdot; 
+PASS XHTML1.1 parsing &lthree; 
+PASS XHTML1.1 parsing &ltimes; 
+PASS XHTML1.1 parsing &ltlarr; 
+PASS XHTML1.1 parsing &ltquest; 
+PASS XHTML1.1 parsing &ltri; 
+PASS XHTML1.1 parsing &ltrie; 
+PASS XHTML1.1 parsing &ltrif; 
+PASS XHTML1.1 parsing &ltrPar; 
+PASS XHTML1.1 parsing &lurdshar; 
+PASS XHTML1.1 parsing &luruhar; 
+PASS XHTML1.1 parsing &lvertneqq; 
+PASS XHTML1.1 parsing &lvnE; 
+PASS XHTML1.1 parsing &macr; 
+PASS XHTML1.1 parsing &male; 
+PASS XHTML1.1 parsing &malt; 
+PASS XHTML1.1 parsing &maltese; 
+PASS XHTML1.1 parsing &Map; 
+PASS XHTML1.1 parsing &map; 
+PASS XHTML1.1 parsing &mapsto; 
+PASS XHTML1.1 parsing &mapstodown; 
+PASS XHTML1.1 parsing &mapstoleft; 
+PASS XHTML1.1 parsing &mapstoup; 
+PASS XHTML1.1 parsing &marker; 
+PASS XHTML1.1 parsing &mcomma; 
+PASS XHTML1.1 parsing &Mcy; 
+PASS XHTML1.1 parsing &mcy; 
+PASS XHTML1.1 parsing &mdash; 
+PASS XHTML1.1 parsing &mDDot; 
+PASS XHTML1.1 parsing &measuredangle; 
+PASS XHTML1.1 parsing &MediumSpace; 
+PASS XHTML1.1 parsing &Mellintrf; 
+PASS XHTML1.1 parsing &Mfr; 
+PASS XHTML1.1 parsing &mfr; 
+PASS XHTML1.1 parsing &mho; 
+PASS XHTML1.1 parsing &micro; 
+PASS XHTML1.1 parsing &midast; 
+PASS XHTML1.1 parsing &midcir; 
+PASS XHTML1.1 parsing &mid; 
+PASS XHTML1.1 parsing &middot; 
+PASS XHTML1.1 parsing &minusb; 
+PASS XHTML1.1 parsing &minus; 
+PASS XHTML1.1 parsing &minusd; 
+PASS XHTML1.1 parsing &minusdu; 
+PASS XHTML1.1 parsing &MinusPlus; 
+PASS XHTML1.1 parsing &mlcp; 
+PASS XHTML1.1 parsing &mldr; 
+PASS XHTML1.1 parsing &mnplus; 
+PASS XHTML1.1 parsing &models; 
+PASS XHTML1.1 parsing &Mopf; 
+PASS XHTML1.1 parsing &mopf; 
+PASS XHTML1.1 parsing &mp; 
+PASS XHTML1.1 parsing &mscr; 
+PASS XHTML1.1 parsing &Mscr; 
+PASS XHTML1.1 parsing &mstpos; 
+PASS XHTML1.1 parsing &Mu; 
+PASS XHTML1.1 parsing &mu; 
+PASS XHTML1.1 parsing &multimap; 
+PASS XHTML1.1 parsing &mumap; 
+PASS XHTML1.1 parsing &nabla; 
+PASS XHTML1.1 parsing &Nacute; 
+PASS XHTML1.1 parsing &nacute; 
+PASS XHTML1.1 parsing &nang; 
+PASS XHTML1.1 parsing &nap; 
+PASS XHTML1.1 parsing &napE; 
+PASS XHTML1.1 parsing &napid; 
+PASS XHTML1.1 parsing &napos; 
+PASS XHTML1.1 parsing &napprox; 
+PASS XHTML1.1 parsing &natural; 
+PASS XHTML1.1 parsing &naturals; 
+PASS XHTML1.1 parsing &natur; 
+PASS XHTML1.1 parsing &nbsp; 
+PASS XHTML1.1 parsing &nbump; 
+PASS XHTML1.1 parsing &nbumpe; 
+PASS XHTML1.1 parsing &ncap; 
+PASS XHTML1.1 parsing &Ncaron; 
+PASS XHTML1.1 parsing &ncaron; 
+PASS XHTML1.1 parsing &Ncedil; 
+PASS XHTML1.1 parsing &ncedil; 
+PASS XHTML1.1 parsing &ncong; 
+PASS XHTML1.1 parsing &ncongdot; 
+PASS XHTML1.1 parsing &ncup; 
+PASS XHTML1.1 parsing &Ncy; 
+PASS XHTML1.1 parsing &ncy; 
+PASS XHTML1.1 parsing &ndash; 
+PASS XHTML1.1 parsing &nearhk; 
+PASS XHTML1.1 parsing &nearr; 
+PASS XHTML1.1 parsing &neArr; 
+PASS XHTML1.1 parsing &nearrow; 
+PASS XHTML1.1 parsing &ne; 
+PASS XHTML1.1 parsing &nedot; 
+PASS XHTML1.1 parsing &NegativeMediumSpace; 
+PASS XHTML1.1 parsing &NegativeThickSpace; 
+PASS XHTML1.1 parsing &NegativeThinSpace; 
+PASS XHTML1.1 parsing &NegativeVeryThinSpace; 
+PASS XHTML1.1 parsing &nequiv; 
+PASS XHTML1.1 parsing &nesear; 
+PASS XHTML1.1 parsing &nesim; 
+PASS XHTML1.1 parsing &NestedGreaterGreater; 
+PASS XHTML1.1 parsing &NestedLessLess; 
+PASS XHTML1.1 parsing &NewLine; 
+PASS XHTML1.1 parsing &nexist; 
+PASS XHTML1.1 parsing &nexists; 
+PASS XHTML1.1 parsing &Nfr; 
+PASS XHTML1.1 parsing &nfr; 
+PASS XHTML1.1 parsing &ngE; 
+PASS XHTML1.1 parsing &nge; 
+PASS XHTML1.1 parsing &ngeq; 
+PASS XHTML1.1 parsing &ngeqq; 
+PASS XHTML1.1 parsing &ngeqslant; 
+PASS XHTML1.1 parsing &nges; 
+PASS XHTML1.1 parsing &nGg; 
+PASS XHTML1.1 parsing &ngsim; 
+PASS XHTML1.1 parsing &nGt; 
+PASS XHTML1.1 parsing &ngt; 
+PASS XHTML1.1 parsing &ngtr; 
+PASS XHTML1.1 parsing &nGtv; 
+PASS XHTML1.1 parsing &nharr; 
+PASS XHTML1.1 parsing &nhArr; 
+PASS XHTML1.1 parsing &nhpar; 
+PASS XHTML1.1 parsing &ni; 
+PASS XHTML1.1 parsing &nis; 
+PASS XHTML1.1 parsing &nisd; 
+PASS XHTML1.1 parsing &niv; 
+PASS XHTML1.1 parsing &NJcy; 
+PASS XHTML1.1 parsing &njcy; 
+PASS XHTML1.1 parsing &nlarr; 
+PASS XHTML1.1 parsing &nlArr; 
+PASS XHTML1.1 parsing &nldr; 
+PASS XHTML1.1 parsing &nlE; 
+PASS XHTML1.1 parsing &nle; 
+PASS XHTML1.1 parsing &nleftarrow; 
+PASS XHTML1.1 parsing &nLeftarrow; 
+PASS XHTML1.1 parsing &nleftrightarrow; 
+PASS XHTML1.1 parsing &nLeftrightarrow; 
+PASS XHTML1.1 parsing &nleq; 
+PASS XHTML1.1 parsing &nleqq; 
+PASS XHTML1.1 parsing &nleqslant; 
+PASS XHTML1.1 parsing &nles; 
+PASS XHTML1.1 parsing &nless; 
+PASS XHTML1.1 parsing &nLl; 
+PASS XHTML1.1 parsing &nlsim; 
+PASS XHTML1.1 parsing &nLt; 
+PASS XHTML1.1 parsing &nlt; 
+PASS XHTML1.1 parsing &nltri; 
+PASS XHTML1.1 parsing &nltrie; 
+PASS XHTML1.1 parsing &nLtv; 
+PASS XHTML1.1 parsing &nmid; 
+PASS XHTML1.1 parsing &NoBreak; 
+PASS XHTML1.1 parsing &NonBreakingSpace; 
+PASS XHTML1.1 parsing &nopf; 
+PASS XHTML1.1 parsing &Nopf; 
+PASS XHTML1.1 parsing &Not; 
+PASS XHTML1.1 parsing &not; 
+PASS XHTML1.1 parsing &NotCongruent; 
+PASS XHTML1.1 parsing &NotCupCap; 
+PASS XHTML1.1 parsing &NotDoubleVerticalBar; 
+PASS XHTML1.1 parsing &NotElement; 
+PASS XHTML1.1 parsing &NotEqual; 
+PASS XHTML1.1 parsing &NotEqualTilde; 
+PASS XHTML1.1 parsing &NotExists; 
+PASS XHTML1.1 parsing &NotGreater; 
+PASS XHTML1.1 parsing &NotGreaterEqual; 
+PASS XHTML1.1 parsing &NotGreaterFullEqual; 
+PASS XHTML1.1 parsing &NotGreaterGreater; 
+PASS XHTML1.1 parsing &NotGreaterLess; 
+PASS XHTML1.1 parsing &NotGreaterSlantEqual; 
+PASS XHTML1.1 parsing &NotGreaterTilde; 
+PASS XHTML1.1 parsing &NotHumpDownHump; 
+PASS XHTML1.1 parsing &NotHumpEqual; 
+PASS XHTML1.1 parsing &notin; 
+PASS XHTML1.1 parsing &notindot; 
+PASS XHTML1.1 parsing &notinE; 
+PASS XHTML1.1 parsing &notinva; 
+PASS XHTML1.1 parsing &notinvb; 
+PASS XHTML1.1 parsing &notinvc; 
+PASS XHTML1.1 parsing &NotLeftTriangleBar; 
+PASS XHTML1.1 parsing &NotLeftTriangle; 
+PASS XHTML1.1 parsing &NotLeftTriangleEqual; 
+PASS XHTML1.1 parsing &NotLess; 
+PASS XHTML1.1 parsing &NotLessEqual; 
+PASS XHTML1.1 parsing &NotLessGreater; 
+PASS XHTML1.1 parsing &NotLessLess; 
+PASS XHTML1.1 parsing &NotLessSlantEqual; 
+PASS XHTML1.1 parsing &NotLessTilde; 
+PASS XHTML1.1 parsing &NotNestedGreaterGreater; 
+PASS XHTML1.1 parsing &NotNestedLessLess; 
+PASS XHTML1.1 parsing &notni; 
+PASS XHTML1.1 parsing &notniva; 
+PASS XHTML1.1 parsing &notnivb; 
+PASS XHTML1.1 parsing &notnivc; 
+PASS XHTML1.1 parsing &NotPrecedes; 
+PASS XHTML1.1 parsing &NotPrecedesEqual; 
+PASS XHTML1.1 parsing &NotPrecedesSlantEqual; 
+PASS XHTML1.1 parsing &NotReverseElement; 
+PASS XHTML1.1 parsing &NotRightTriangleBar; 
+PASS XHTML1.1 parsing &NotRightTriangle; 
+PASS XHTML1.1 parsing &NotRightTriangleEqual; 
+PASS XHTML1.1 parsing &NotSquareSubset; 
+PASS XHTML1.1 parsing &NotSquareSubsetEqual; 
+PASS XHTML1.1 parsing &NotSquareSuperset; 
+PASS XHTML1.1 parsing &NotSquareSupersetEqual; 
+PASS XHTML1.1 parsing &NotSubset; 
+PASS XHTML1.1 parsing &NotSubsetEqual; 
+PASS XHTML1.1 parsing &NotSucceeds; 
+PASS XHTML1.1 parsing &NotSucceedsEqual; 
+PASS XHTML1.1 parsing &NotSucceedsSlantEqual; 
+PASS XHTML1.1 parsing &NotSucceedsTilde; 
+PASS XHTML1.1 parsing &NotSuperset; 
+PASS XHTML1.1 parsing &NotSupersetEqual; 
+PASS XHTML1.1 parsing &NotTilde; 
+PASS XHTML1.1 parsing &NotTildeEqual; 
+PASS XHTML1.1 parsing &NotTildeFullEqual; 
+PASS XHTML1.1 parsing &NotTildeTilde; 
+PASS XHTML1.1 parsing &NotVerticalBar; 
+PASS XHTML1.1 parsing &nparallel; 
+PASS XHTML1.1 parsing &npar; 
+PASS XHTML1.1 parsing &nparsl; 
+PASS XHTML1.1 parsing &npart; 
+PASS XHTML1.1 parsing &npolint; 
+PASS XHTML1.1 parsing &npr; 
+PASS XHTML1.1 parsing &nprcue; 
+PASS XHTML1.1 parsing &nprec; 
+PASS XHTML1.1 parsing &npreceq; 
+PASS XHTML1.1 parsing &npre; 
+PASS XHTML1.1 parsing &nrarrc; 
+PASS XHTML1.1 parsing &nrarr; 
+PASS XHTML1.1 parsing &nrArr; 
+PASS XHTML1.1 parsing &nrarrw; 
+PASS XHTML1.1 parsing &nrightarrow; 
+PASS XHTML1.1 parsing &nRightarrow; 
+PASS XHTML1.1 parsing &nrtri; 
+PASS XHTML1.1 parsing &nrtrie; 
+PASS XHTML1.1 parsing &nsc; 
+PASS XHTML1.1 parsing &nsccue; 
+PASS XHTML1.1 parsing &nsce; 
+PASS XHTML1.1 parsing &Nscr; 
+PASS XHTML1.1 parsing &nscr; 
+PASS XHTML1.1 parsing &nshortmid; 
+PASS XHTML1.1 parsing &nshortparallel; 
+PASS XHTML1.1 parsing &nsim; 
+PASS XHTML1.1 parsing &nsime; 
+PASS XHTML1.1 parsing &nsimeq; 
+PASS XHTML1.1 parsing &nsmid; 
+PASS XHTML1.1 parsing &nspar; 
+PASS XHTML1.1 parsing &nsqsube; 
+PASS XHTML1.1 parsing &nsqsupe; 
+PASS XHTML1.1 parsing &nsub; 
+PASS XHTML1.1 parsing &nsubE; 
+PASS XHTML1.1 parsing &nsube; 
+PASS XHTML1.1 parsing &nsubset; 
+PASS XHTML1.1 parsing &nsubseteq; 
+PASS XHTML1.1 parsing &nsubseteqq; 
+PASS XHTML1.1 parsing &nsucc; 
+PASS XHTML1.1 parsing &nsucceq; 
+PASS XHTML1.1 parsing &nsup; 
+PASS XHTML1.1 parsing &nsupE; 
+PASS XHTML1.1 parsing &nsupe; 
+PASS XHTML1.1 parsing &nsupset; 
+PASS XHTML1.1 parsing &nsupseteq; 
+PASS XHTML1.1 parsing &nsupseteqq; 
+PASS XHTML1.1 parsing &ntgl; 
+PASS XHTML1.1 parsing &Ntilde; 
+PASS XHTML1.1 parsing &ntilde; 
+PASS XHTML1.1 parsing &ntlg; 
+PASS XHTML1.1 parsing &ntriangleleft; 
+PASS XHTML1.1 parsing &ntrianglelefteq; 
+PASS XHTML1.1 parsing &ntriangleright; 
+PASS XHTML1.1 parsing &ntrianglerighteq; 
+PASS XHTML1.1 parsing &Nu; 
+PASS XHTML1.1 parsing &nu; 
+PASS XHTML1.1 parsing &num; 
+PASS XHTML1.1 parsing &numero; 
+PASS XHTML1.1 parsing &numsp; 
+PASS XHTML1.1 parsing &nvap; 
+PASS XHTML1.1 parsing &nvdash; 
+PASS XHTML1.1 parsing &nvDash; 
+PASS XHTML1.1 parsing &nVdash; 
+PASS XHTML1.1 parsing &nVDash; 
+PASS XHTML1.1 parsing &nvge; 
+PASS XHTML1.1 parsing &nvgt; 
+PASS XHTML1.1 parsing &nvHarr; 
+PASS XHTML1.1 parsing &nvinfin; 
+PASS XHTML1.1 parsing &nvlArr; 
+PASS XHTML1.1 parsing &nvle; 
+FAIL XHTML1.1 parsing &nvlt; assert_equals: XHTML1.1 parsing the entity reference caused a parse error; expected 3 but got 1
+PASS XHTML1.1 parsing &nvltrie; 
+PASS XHTML1.1 parsing &nvrArr; 
+PASS XHTML1.1 parsing &nvrtrie; 
+PASS XHTML1.1 parsing &nvsim; 
+PASS XHTML1.1 parsing &nwarhk; 
+PASS XHTML1.1 parsing &nwarr; 
+PASS XHTML1.1 parsing &nwArr; 
+PASS XHTML1.1 parsing &nwarrow; 
+PASS XHTML1.1 parsing &nwnear; 
+PASS XHTML1.1 parsing &Oacute; 
+PASS XHTML1.1 parsing &oacute; 
+PASS XHTML1.1 parsing &oast; 
+PASS XHTML1.1 parsing &Ocirc; 
+PASS XHTML1.1 parsing &ocirc; 
+PASS XHTML1.1 parsing &ocir; 
+PASS XHTML1.1 parsing &Ocy; 
+PASS XHTML1.1 parsing &ocy; 
+PASS XHTML1.1 parsing &odash; 
+PASS XHTML1.1 parsing &Odblac; 
+PASS XHTML1.1 parsing &odblac; 
+PASS XHTML1.1 parsing &odiv; 
+PASS XHTML1.1 parsing &odot; 
+PASS XHTML1.1 parsing &odsold; 
+PASS XHTML1.1 parsing &OElig; 
+PASS XHTML1.1 parsing &oelig; 
+PASS XHTML1.1 parsing &ofcir; 
+PASS XHTML1.1 parsing &Ofr; 
+PASS XHTML1.1 parsing &ofr; 
+PASS XHTML1.1 parsing &ogon; 
+PASS XHTML1.1 parsing &Ograve; 
+PASS XHTML1.1 parsing &ograve; 
+PASS XHTML1.1 parsing &ogt; 
+PASS XHTML1.1 parsing &ohbar; 
+PASS XHTML1.1 parsing &ohm; 
+PASS XHTML1.1 parsing &oint; 
+PASS XHTML1.1 parsing &olarr; 
+PASS XHTML1.1 parsing &olcir; 
+PASS XHTML1.1 parsing &olcross; 
+PASS XHTML1.1 parsing &oline; 
+PASS XHTML1.1 parsing &olt; 
+PASS XHTML1.1 parsing &Omacr; 
+PASS XHTML1.1 parsing &omacr; 
+PASS XHTML1.1 parsing &Omega; 
+PASS XHTML1.1 parsing &omega; 
+PASS XHTML1.1 parsing &Omicron; 
+PASS XHTML1.1 parsing &omicron; 
+PASS XHTML1.1 parsing &omid; 
+PASS XHTML1.1 parsing &ominus; 
+PASS XHTML1.1 parsing &Oopf; 
+PASS XHTML1.1 parsing &oopf; 
+PASS XHTML1.1 parsing &opar; 
+PASS XHTML1.1 parsing &OpenCurlyDoubleQuote; 
+PASS XHTML1.1 parsing &OpenCurlyQuote; 
+PASS XHTML1.1 parsing &operp; 
+PASS XHTML1.1 parsing &oplus; 
+PASS XHTML1.1 parsing &orarr; 
+PASS XHTML1.1 parsing &Or; 
+PASS XHTML1.1 parsing &or; 
+PASS XHTML1.1 parsing &ord; 
+PASS XHTML1.1 parsing &order; 
+PASS XHTML1.1 parsing &orderof; 
+PASS XHTML1.1 parsing &ordf; 
+PASS XHTML1.1 parsing &ordm; 
+PASS XHTML1.1 parsing &origof; 
+PASS XHTML1.1 parsing &oror; 
+PASS XHTML1.1 parsing &orslope; 
+PASS XHTML1.1 parsing &orv; 
+PASS XHTML1.1 parsing &oS; 
+PASS XHTML1.1 parsing &Oscr; 
+PASS XHTML1.1 parsing &oscr; 
+PASS XHTML1.1 parsing &Oslash; 
+PASS XHTML1.1 parsing &oslash; 
+PASS XHTML1.1 parsing &osol; 
+PASS XHTML1.1 parsing &Otilde; 
+PASS XHTML1.1 parsing &otilde; 
+PASS XHTML1.1 parsing &otimesas; 
+PASS XHTML1.1 parsing &Otimes; 
+PASS XHTML1.1 parsing &otimes; 
+PASS XHTML1.1 parsing &Ouml; 
+PASS XHTML1.1 parsing &ouml; 
+PASS XHTML1.1 parsing &ovbar; 
+PASS XHTML1.1 parsing &OverBar; 
+PASS XHTML1.1 parsing &OverBrace; 
+PASS XHTML1.1 parsing &OverBracket; 
+PASS XHTML1.1 parsing &OverParenthesis; 
+PASS XHTML1.1 parsing &para; 
+PASS XHTML1.1 parsing &parallel; 
+PASS XHTML1.1 parsing &par; 
+PASS XHTML1.1 parsing &parsim; 
+PASS XHTML1.1 parsing &parsl; 
+PASS XHTML1.1 parsing &part; 
+PASS XHTML1.1 parsing &PartialD; 
+PASS XHTML1.1 parsing &Pcy; 
+PASS XHTML1.1 parsing &pcy; 
+PASS XHTML1.1 parsing &percnt; 
+PASS XHTML1.1 parsing &period; 
+PASS XHTML1.1 parsing &permil; 
+PASS XHTML1.1 parsing &perp; 
+PASS XHTML1.1 parsing &pertenk; 
+PASS XHTML1.1 parsing &Pfr; 
+PASS XHTML1.1 parsing &pfr; 
+PASS XHTML1.1 parsing &Phi; 
+PASS XHTML1.1 parsing &phi; 
+PASS XHTML1.1 parsing &phiv; 
+PASS XHTML1.1 parsing &phmmat; 
+PASS XHTML1.1 parsing &phone; 
+PASS XHTML1.1 parsing &Pi; 
+PASS XHTML1.1 parsing &pi; 
+PASS XHTML1.1 parsing &pitchfork; 
+PASS XHTML1.1 parsing &piv; 
+PASS XHTML1.1 parsing &planck; 
+PASS XHTML1.1 parsing &planckh; 
+PASS XHTML1.1 parsing &plankv; 
+PASS XHTML1.1 parsing &plusacir; 
+PASS XHTML1.1 parsing &plusb; 
+PASS XHTML1.1 parsing &pluscir; 
+PASS XHTML1.1 parsing &plus; 
+PASS XHTML1.1 parsing &plusdo; 
+PASS XHTML1.1 parsing &plusdu; 
+PASS XHTML1.1 parsing &pluse; 
+PASS XHTML1.1 parsing &PlusMinus; 
+PASS XHTML1.1 parsing &plusmn; 
+PASS XHTML1.1 parsing &plussim; 
+PASS XHTML1.1 parsing &plustwo; 
+PASS XHTML1.1 parsing &pm; 
+PASS XHTML1.1 parsing &Poincareplane; 
+PASS XHTML1.1 parsing &pointint; 
+PASS XHTML1.1 parsing &popf; 
+PASS XHTML1.1 parsing &Popf; 
+PASS XHTML1.1 parsing &pound; 
+PASS XHTML1.1 parsing &prap; 
+PASS XHTML1.1 parsing &Pr; 
+PASS XHTML1.1 parsing &pr; 
+PASS XHTML1.1 parsing &prcue; 
+PASS XHTML1.1 parsing &precapprox; 
+PASS XHTML1.1 parsing &prec; 
+PASS XHTML1.1 parsing &preccurlyeq; 
+PASS XHTML1.1 parsing &Precedes; 
+PASS XHTML1.1 parsing &PrecedesEqual; 
+PASS XHTML1.1 parsing &PrecedesSlantEqual; 
+PASS XHTML1.1 parsing &PrecedesTilde; 
+PASS XHTML1.1 parsing &preceq; 
+PASS XHTML1.1 parsing &precnapprox; 
+PASS XHTML1.1 parsing &precneqq; 
+PASS XHTML1.1 parsing &precnsim; 
+PASS XHTML1.1 parsing &pre; 
+PASS XHTML1.1 parsing &prE; 
+PASS XHTML1.1 parsing &precsim; 
+PASS XHTML1.1 parsing &prime; 
+PASS XHTML1.1 parsing &Prime; 
+PASS XHTML1.1 parsing &primes; 
+PASS XHTML1.1 parsing &prnap; 
+PASS XHTML1.1 parsing &prnE; 
+PASS XHTML1.1 parsing &prnsim; 
+PASS XHTML1.1 parsing &prod; 
+PASS XHTML1.1 parsing &Product; 
+PASS XHTML1.1 parsing &profalar; 
+PASS XHTML1.1 parsing &profline; 
+PASS XHTML1.1 parsing &profsurf; 
+PASS XHTML1.1 parsing &prop; 
+PASS XHTML1.1 parsing &Proportional; 
+PASS XHTML1.1 parsing &Proportion; 
+PASS XHTML1.1 parsing &propto; 
+PASS XHTML1.1 parsing &prsim; 
+PASS XHTML1.1 parsing &prurel; 
+PASS XHTML1.1 parsing &Pscr; 
+PASS XHTML1.1 parsing &pscr; 
+PASS XHTML1.1 parsing &Psi; 
+PASS XHTML1.1 parsing &psi; 
+PASS XHTML1.1 parsing &puncsp; 
+PASS XHTML1.1 parsing &Qfr; 
+PASS XHTML1.1 parsing &qfr; 
+PASS XHTML1.1 parsing &qint; 
+PASS XHTML1.1 parsing &qopf; 
+PASS XHTML1.1 parsing &Qopf; 
+PASS XHTML1.1 parsing &qprime; 
+PASS XHTML1.1 parsing &Qscr; 
+PASS XHTML1.1 parsing &qscr; 
+PASS XHTML1.1 parsing &quaternions; 
+PASS XHTML1.1 parsing &quatint; 
+PASS XHTML1.1 parsing &quest; 
+PASS XHTML1.1 parsing &questeq; 
+PASS XHTML1.1 parsing &quot; 
+PASS XHTML1.1 parsing &QUOT; 
+PASS XHTML1.1 parsing &rAarr; 
+PASS XHTML1.1 parsing &race; 
+PASS XHTML1.1 parsing &Racute; 
+PASS XHTML1.1 parsing &racute; 
+PASS XHTML1.1 parsing &radic; 
+PASS XHTML1.1 parsing &raemptyv; 
+PASS XHTML1.1 parsing &rang; 
+PASS XHTML1.1 parsing &Rang; 
+PASS XHTML1.1 parsing &rangd; 
+PASS XHTML1.1 parsing &range; 
+PASS XHTML1.1 parsing &rangle; 
+PASS XHTML1.1 parsing &raquo; 
+PASS XHTML1.1 parsing &rarrap; 
+PASS XHTML1.1 parsing &rarrb; 
+PASS XHTML1.1 parsing &rarrbfs; 
+PASS XHTML1.1 parsing &rarrc; 
+PASS XHTML1.1 parsing &rarr; 
+PASS XHTML1.1 parsing &Rarr; 
+PASS XHTML1.1 parsing &rArr; 
+PASS XHTML1.1 parsing &rarrfs; 
+PASS XHTML1.1 parsing &rarrhk; 
+PASS XHTML1.1 parsing &rarrlp; 
+PASS XHTML1.1 parsing &rarrpl; 
+PASS XHTML1.1 parsing &rarrsim; 
+PASS XHTML1.1 parsing &Rarrtl; 
+PASS XHTML1.1 parsing &rarrtl; 
+PASS XHTML1.1 parsing &rarrw; 
+PASS XHTML1.1 parsing &ratail; 
+PASS XHTML1.1 parsing &rAtail; 
+PASS XHTML1.1 parsing &ratio; 
+PASS XHTML1.1 parsing &rationals; 
+PASS XHTML1.1 parsing &rbarr; 
+PASS XHTML1.1 parsing &rBarr; 
+PASS XHTML1.1 parsing &RBarr; 
+PASS XHTML1.1 parsing &rbbrk; 
+PASS XHTML1.1 parsing &rbrace; 
+PASS XHTML1.1 parsing &rbrack; 
+PASS XHTML1.1 parsing &rbrke; 
+PASS XHTML1.1 parsing &rbrksld; 
+PASS XHTML1.1 parsing &rbrkslu; 
+PASS XHTML1.1 parsing &Rcaron; 
+PASS XHTML1.1 parsing &rcaron; 
+PASS XHTML1.1 parsing &Rcedil; 
+PASS XHTML1.1 parsing &rcedil; 
+PASS XHTML1.1 parsing &rceil; 
+PASS XHTML1.1 parsing &rcub; 
+PASS XHTML1.1 parsing &Rcy; 
+PASS XHTML1.1 parsing &rcy; 
+PASS XHTML1.1 parsing &rdca; 
+PASS XHTML1.1 parsing &rdldhar; 
+PASS XHTML1.1 parsing &rdquo; 
+PASS XHTML1.1 parsing &rdquor; 
+PASS XHTML1.1 parsing &rdsh; 
+PASS XHTML1.1 parsing &real; 
+PASS XHTML1.1 parsing &realine; 
+PASS XHTML1.1 parsing &realpart; 
+PASS XHTML1.1 parsing &reals; 
+PASS XHTML1.1 parsing &Re; 
+PASS XHTML1.1 parsing &rect; 
+PASS XHTML1.1 parsing &reg; 
+PASS XHTML1.1 parsing &REG; 
+PASS XHTML1.1 parsing &ReverseElement; 
+PASS XHTML1.1 parsing &ReverseEquilibrium; 
+PASS XHTML1.1 parsing &ReverseUpEquilibrium; 
+PASS XHTML1.1 parsing &rfisht; 
+PASS XHTML1.1 parsing &rfloor; 
+PASS XHTML1.1 parsing &rfr; 
+PASS XHTML1.1 parsing &Rfr; 
+PASS XHTML1.1 parsing &rHar; 
+PASS XHTML1.1 parsing &rhard; 
+PASS XHTML1.1 parsing &rharu; 
+PASS XHTML1.1 parsing &rharul; 
+PASS XHTML1.1 parsing &Rho; 
+PASS XHTML1.1 parsing &rho; 
+PASS XHTML1.1 parsing &rhov; 
+PASS XHTML1.1 parsing &RightAngleBracket; 
+PASS XHTML1.1 parsing &RightArrowBar; 
+PASS XHTML1.1 parsing &rightarrow; 
+PASS XHTML1.1 parsing &RightArrow; 
+PASS XHTML1.1 parsing &Rightarrow; 
+PASS XHTML1.1 parsing &RightArrowLeftArrow; 
+PASS XHTML1.1 parsing &rightarrowtail; 
+PASS XHTML1.1 parsing &RightCeiling; 
+PASS XHTML1.1 parsing &RightDoubleBracket; 
+PASS XHTML1.1 parsing &RightDownTeeVector; 
+PASS XHTML1.1 parsing &RightDownVectorBar; 
+PASS XHTML1.1 parsing &RightDownVector; 
+PASS XHTML1.1 parsing &RightFloor; 
+PASS XHTML1.1 parsing &rightharpoondown; 
+PASS XHTML1.1 parsing &rightharpoonup; 
+PASS XHTML1.1 parsing &rightleftarrows; 
+PASS XHTML1.1 parsing &rightleftharpoons; 
+PASS XHTML1.1 parsing &rightrightarrows; 
+PASS XHTML1.1 parsing &rightsquigarrow; 
+PASS XHTML1.1 parsing &RightTeeArrow; 
+PASS XHTML1.1 parsing &RightTee; 
+PASS XHTML1.1 parsing &RightTeeVector; 
+PASS XHTML1.1 parsing &rightthreetimes; 
+PASS XHTML1.1 parsing &RightTriangleBar; 
+PASS XHTML1.1 parsing &RightTriangle; 
+PASS XHTML1.1 parsing &RightTriangleEqual; 
+PASS XHTML1.1 parsing &RightUpDownVector; 
+PASS XHTML1.1 parsing &RightUpTeeVector; 
+PASS XHTML1.1 parsing &RightUpVectorBar; 
+PASS XHTML1.1 parsing &RightUpVector; 
+PASS XHTML1.1 parsing &RightVectorBar; 
+PASS XHTML1.1 parsing &RightVector; 
+PASS XHTML1.1 parsing &ring; 
+PASS XHTML1.1 parsing &risingdotseq; 
+PASS XHTML1.1 parsing &rlarr; 
+PASS XHTML1.1 parsing &rlhar; 
+PASS XHTML1.1 parsing &rlm; 
+PASS XHTML1.1 parsing &rmoustache; 
+PASS XHTML1.1 parsing &rmoust; 
+PASS XHTML1.1 parsing &rnmid; 
+PASS XHTML1.1 parsing &roang; 
+PASS XHTML1.1 parsing &roarr; 
+PASS XHTML1.1 parsing &robrk; 
+PASS XHTML1.1 parsing &ropar; 
+PASS XHTML1.1 parsing &ropf; 
+PASS XHTML1.1 parsing &Ropf; 
+PASS XHTML1.1 parsing &roplus; 
+PASS XHTML1.1 parsing &rotimes; 
+PASS XHTML1.1 parsing &RoundImplies; 
+PASS XHTML1.1 parsing &rpar; 
+PASS XHTML1.1 parsing &rpargt; 
+PASS XHTML1.1 parsing &rppolint; 
+PASS XHTML1.1 parsing &rrarr; 
+PASS XHTML1.1 parsing &Rrightarrow; 
+PASS XHTML1.1 parsing &rsaquo; 
+PASS XHTML1.1 parsing &rscr; 
+PASS XHTML1.1 parsing &Rscr; 
+PASS XHTML1.1 parsing &rsh; 
+PASS XHTML1.1 parsing &Rsh; 
+PASS XHTML1.1 parsing &rsqb; 
+PASS XHTML1.1 parsing &rsquo; 
+PASS XHTML1.1 parsing &rsquor; 
+PASS XHTML1.1 parsing &rthree; 
+PASS XHTML1.1 parsing &rtimes; 
+PASS XHTML1.1 parsing &rtri; 
+PASS XHTML1.1 parsing &rtrie; 
+PASS XHTML1.1 parsing &rtrif; 
+PASS XHTML1.1 parsing &rtriltri; 
+PASS XHTML1.1 parsing &RuleDelayed; 
+PASS XHTML1.1 parsing &ruluhar; 
+PASS XHTML1.1 parsing &rx; 
+PASS XHTML1.1 parsing &Sacute; 
+PASS XHTML1.1 parsing &sacute; 
+PASS XHTML1.1 parsing &sbquo; 
+PASS XHTML1.1 parsing &scap; 
+PASS XHTML1.1 parsing &Scaron; 
+PASS XHTML1.1 parsing &scaron; 
+PASS XHTML1.1 parsing &Sc; 
+PASS XHTML1.1 parsing &sc; 
+PASS XHTML1.1 parsing &sccue; 
+PASS XHTML1.1 parsing &sce; 
+PASS XHTML1.1 parsing &scE; 
+PASS XHTML1.1 parsing &Scedil; 
+PASS XHTML1.1 parsing &scedil; 
+PASS XHTML1.1 parsing &Scirc; 
+PASS XHTML1.1 parsing &scirc; 
+PASS XHTML1.1 parsing &scnap; 
+PASS XHTML1.1 parsing &scnE; 
+PASS XHTML1.1 parsing &scnsim; 
+PASS XHTML1.1 parsing &scpolint; 
+PASS XHTML1.1 parsing &scsim; 
+PASS XHTML1.1 parsing &Scy; 
+PASS XHTML1.1 parsing &scy; 
+PASS XHTML1.1 parsing &sdotb; 
+PASS XHTML1.1 parsing &sdot; 
+PASS XHTML1.1 parsing &sdote; 
+PASS XHTML1.1 parsing &searhk; 
+PASS XHTML1.1 parsing &searr; 
+PASS XHTML1.1 parsing &seArr; 
+PASS XHTML1.1 parsing &searrow; 
+PASS XHTML1.1 parsing &sect; 
+PASS XHTML1.1 parsing &semi; 
+PASS XHTML1.1 parsing &seswar; 
+PASS XHTML1.1 parsing &setminus; 
+PASS XHTML1.1 parsing &setmn; 
+PASS XHTML1.1 parsing &sext; 
+PASS XHTML1.1 parsing &Sfr; 
+PASS XHTML1.1 parsing &sfr; 
+PASS XHTML1.1 parsing &sfrown; 
+PASS XHTML1.1 parsing &sharp; 
+PASS XHTML1.1 parsing &SHCHcy; 
+PASS XHTML1.1 parsing &shchcy; 
+PASS XHTML1.1 parsing &SHcy; 
+PASS XHTML1.1 parsing &shcy; 
+PASS XHTML1.1 parsing &ShortDownArrow; 
+PASS XHTML1.1 parsing &ShortLeftArrow; 
+PASS XHTML1.1 parsing &shortmid; 
+PASS XHTML1.1 parsing &shortparallel; 
+PASS XHTML1.1 parsing &ShortRightArrow; 
+PASS XHTML1.1 parsing &ShortUpArrow; 
+PASS XHTML1.1 parsing &shy; 
+PASS XHTML1.1 parsing &Sigma; 
+PASS XHTML1.1 parsing &sigma; 
+PASS XHTML1.1 parsing &sigmaf; 
+PASS XHTML1.1 parsing &sigmav; 
+PASS XHTML1.1 parsing &sim; 
+PASS XHTML1.1 parsing &simdot; 
+PASS XHTML1.1 parsing &sime; 
+PASS XHTML1.1 parsing &simeq; 
+PASS XHTML1.1 parsing &simg; 
+PASS XHTML1.1 parsing &simgE; 
+PASS XHTML1.1 parsing &siml; 
+PASS XHTML1.1 parsing &simlE; 
+PASS XHTML1.1 parsing &simne; 
+PASS XHTML1.1 parsing &simplus; 
+PASS XHTML1.1 parsing &simrarr; 
+PASS XHTML1.1 parsing &slarr; 
+PASS XHTML1.1 parsing &SmallCircle; 
+PASS XHTML1.1 parsing &smallsetminus; 
+PASS XHTML1.1 parsing &smashp; 
+PASS XHTML1.1 parsing &smeparsl; 
+PASS XHTML1.1 parsing &smid; 
+PASS XHTML1.1 parsing &smile; 
+PASS XHTML1.1 parsing &smt; 
+PASS XHTML1.1 parsing &smte; 
+PASS XHTML1.1 parsing &smtes; 
+PASS XHTML1.1 parsing &SOFTcy; 
+PASS XHTML1.1 parsing &softcy; 
+PASS XHTML1.1 parsing &solbar; 
+PASS XHTML1.1 parsing &solb; 
+PASS XHTML1.1 parsing &sol; 
+PASS XHTML1.1 parsing &Sopf; 
+PASS XHTML1.1 parsing &sopf; 
+PASS XHTML1.1 parsing &spades; 
+PASS XHTML1.1 parsing &spadesuit; 
+PASS XHTML1.1 parsing &spar; 
+PASS XHTML1.1 parsing &sqcap; 
+PASS XHTML1.1 parsing &sqcaps; 
+PASS XHTML1.1 parsing &sqcup; 
+PASS XHTML1.1 parsing &sqcups; 
+PASS XHTML1.1 parsing &Sqrt; 
+PASS XHTML1.1 parsing &sqsub; 
+PASS XHTML1.1 parsing &sqsube; 
+PASS XHTML1.1 parsing &sqsubset; 
+PASS XHTML1.1 parsing &sqsubseteq; 
+PASS XHTML1.1 parsing &sqsup; 
+PASS XHTML1.1 parsing &sqsupe; 
+PASS XHTML1.1 parsing &sqsupset; 
+PASS XHTML1.1 parsing &sqsupseteq; 
+PASS XHTML1.1 parsing &square; 
+PASS XHTML1.1 parsing &Square; 
+PASS XHTML1.1 parsing &SquareIntersection; 
+PASS XHTML1.1 parsing &SquareSubset; 
+PASS XHTML1.1 parsing &SquareSubsetEqual; 
+PASS XHTML1.1 parsing &SquareSuperset; 
+PASS XHTML1.1 parsing &SquareSupersetEqual; 
+PASS XHTML1.1 parsing &SquareUnion; 
+PASS XHTML1.1 parsing &squarf; 
+PASS XHTML1.1 parsing &squ; 
+PASS XHTML1.1 parsing &squf; 
+PASS XHTML1.1 parsing &srarr; 
+PASS XHTML1.1 parsing &Sscr; 
+PASS XHTML1.1 parsing &sscr; 
+PASS XHTML1.1 parsing &ssetmn; 
+PASS XHTML1.1 parsing &ssmile; 
+PASS XHTML1.1 parsing &sstarf; 
+PASS XHTML1.1 parsing &Star; 
+PASS XHTML1.1 parsing &star; 
+PASS XHTML1.1 parsing &starf; 
+PASS XHTML1.1 parsing &straightepsilon; 
+PASS XHTML1.1 parsing &straightphi; 
+PASS XHTML1.1 parsing &strns; 
+PASS XHTML1.1 parsing &sub; 
+PASS XHTML1.1 parsing &Sub; 
+PASS XHTML1.1 parsing &subdot; 
+PASS XHTML1.1 parsing &subE; 
+PASS XHTML1.1 parsing &sube; 
+PASS XHTML1.1 parsing &subedot; 
+PASS XHTML1.1 parsing &submult; 
+PASS XHTML1.1 parsing &subnE; 
+PASS XHTML1.1 parsing &subne; 
+PASS XHTML1.1 parsing &subplus; 
+PASS XHTML1.1 parsing &subrarr; 
+PASS XHTML1.1 parsing &subset; 
+PASS XHTML1.1 parsing &Subset; 
+PASS XHTML1.1 parsing &subseteq; 
+PASS XHTML1.1 parsing &subseteqq; 
+PASS XHTML1.1 parsing &SubsetEqual; 
+PASS XHTML1.1 parsing &subsetneq; 
+PASS XHTML1.1 parsing &subsetneqq; 
+PASS XHTML1.1 parsing &subsim; 
+PASS XHTML1.1 parsing &subsub; 
+PASS XHTML1.1 parsing &subsup; 
+PASS XHTML1.1 parsing &succapprox; 
+PASS XHTML1.1 parsing &succ; 
+PASS XHTML1.1 parsing &succcurlyeq; 
+PASS XHTML1.1 parsing &Succeeds; 
+PASS XHTML1.1 parsing &SucceedsEqual; 
+PASS XHTML1.1 parsing &SucceedsSlantEqual; 
+PASS XHTML1.1 parsing &SucceedsTilde; 
+PASS XHTML1.1 parsing &succeq; 
+PASS XHTML1.1 parsing &succnapprox; 
+PASS XHTML1.1 parsing &succneqq; 
+PASS XHTML1.1 parsing &succnsim; 
+PASS XHTML1.1 parsing &succsim; 
+PASS XHTML1.1 parsing &SuchThat; 
+PASS XHTML1.1 parsing &sum; 
+PASS XHTML1.1 parsing &Sum; 
+PASS XHTML1.1 parsing &sung; 
+PASS XHTML1.1 parsing &sup1; 
+PASS XHTML1.1 parsing &sup2; 
+PASS XHTML1.1 parsing &sup3; 
+PASS XHTML1.1 parsing &sup; 
+PASS XHTML1.1 parsing &Sup; 
+PASS XHTML1.1 parsing &supdot; 
+PASS XHTML1.1 parsing &supdsub; 
+PASS XHTML1.1 parsing &supE; 
+PASS XHTML1.1 parsing &supe; 
+PASS XHTML1.1 parsing &supedot; 
+PASS XHTML1.1 parsing &Superset; 
+PASS XHTML1.1 parsing &SupersetEqual; 
+PASS XHTML1.1 parsing &suphsol; 
+PASS XHTML1.1 parsing &suphsub; 
+PASS XHTML1.1 parsing &suplarr; 
+PASS XHTML1.1 parsing &supmult; 
+PASS XHTML1.1 parsing &supnE; 
+PASS XHTML1.1 parsing &supne; 
+PASS XHTML1.1 parsing &supplus; 
+PASS XHTML1.1 parsing &supset; 
+PASS XHTML1.1 parsing &Supset; 
+PASS XHTML1.1 parsing &supseteq; 
+PASS XHTML1.1 parsing &supseteqq; 
+PASS XHTML1.1 parsing &supsetneq; 
+PASS XHTML1.1 parsing &supsetneqq; 
+PASS XHTML1.1 parsing &supsim; 
+PASS XHTML1.1 parsing &supsub; 
+PASS XHTML1.1 parsing &supsup; 
+PASS XHTML1.1 parsing &swarhk; 
+PASS XHTML1.1 parsing &swarr; 
+PASS XHTML1.1 parsing &swArr; 
+PASS XHTML1.1 parsing &swarrow; 
+PASS XHTML1.1 parsing &swnwar; 
+PASS XHTML1.1 parsing &szlig; 
+PASS XHTML1.1 parsing &Tab; 
+PASS XHTML1.1 parsing &target; 
+PASS XHTML1.1 parsing &Tau; 
+PASS XHTML1.1 parsing &tau; 
+PASS XHTML1.1 parsing &tbrk; 
+PASS XHTML1.1 parsing &Tcaron; 
+PASS XHTML1.1 parsing &tcaron; 
+PASS XHTML1.1 parsing &Tcedil; 
+PASS XHTML1.1 parsing &tcedil; 
+PASS XHTML1.1 parsing &Tcy; 
+PASS XHTML1.1 parsing &tcy; 
+PASS XHTML1.1 parsing &tdot; 
+PASS XHTML1.1 parsing &telrec; 
+PASS XHTML1.1 parsing &Tfr; 
+PASS XHTML1.1 parsing &tfr; 
+PASS XHTML1.1 parsing &there4; 
+PASS XHTML1.1 parsing &therefore; 
+PASS XHTML1.1 parsing &Therefore; 
+PASS XHTML1.1 parsing &Theta; 
+PASS XHTML1.1 parsing &theta; 
+PASS XHTML1.1 parsing &thetasym; 
+PASS XHTML1.1 parsing &thetav; 
+PASS XHTML1.1 parsing &thickapprox; 
+PASS XHTML1.1 parsing &thicksim; 
+PASS XHTML1.1 parsing &ThickSpace; 
+PASS XHTML1.1 parsing &ThinSpace; 
+PASS XHTML1.1 parsing &thinsp; 
+PASS XHTML1.1 parsing &thkap; 
+PASS XHTML1.1 parsing &thksim; 
+PASS XHTML1.1 parsing &THORN; 
+PASS XHTML1.1 parsing &thorn; 
+PASS XHTML1.1 parsing &tilde; 
+PASS XHTML1.1 parsing &Tilde; 
+PASS XHTML1.1 parsing &TildeEqual; 
+PASS XHTML1.1 parsing &TildeFullEqual; 
+PASS XHTML1.1 parsing &TildeTilde; 
+PASS XHTML1.1 parsing &timesbar; 
+PASS XHTML1.1 parsing &timesb; 
+PASS XHTML1.1 parsing &times; 
+PASS XHTML1.1 parsing &timesd; 
+PASS XHTML1.1 parsing &tint; 
+PASS XHTML1.1 parsing &toea; 
+PASS XHTML1.1 parsing &topbot; 
+PASS XHTML1.1 parsing &topcir; 
+PASS XHTML1.1 parsing &top; 
+PASS XHTML1.1 parsing &Topf; 
+PASS XHTML1.1 parsing &topf; 
+PASS XHTML1.1 parsing &topfork; 
+PASS XHTML1.1 parsing &tosa; 
+PASS XHTML1.1 parsing &tprime; 
+PASS XHTML1.1 parsing &trade; 
+PASS XHTML1.1 parsing &TRADE; 
+PASS XHTML1.1 parsing &triangle; 
+PASS XHTML1.1 parsing &triangledown; 
+PASS XHTML1.1 parsing &triangleleft; 
+PASS XHTML1.1 parsing &trianglelefteq; 
+PASS XHTML1.1 parsing &triangleq; 
+PASS XHTML1.1 parsing &triangleright; 
+PASS XHTML1.1 parsing &trianglerighteq; 
+PASS XHTML1.1 parsing &tridot; 
+PASS XHTML1.1 parsing &trie; 
+PASS XHTML1.1 parsing &triminus; 
+PASS XHTML1.1 parsing &TripleDot; 
+PASS XHTML1.1 parsing &triplus; 
+PASS XHTML1.1 parsing &trisb; 
+PASS XHTML1.1 parsing &tritime; 
+PASS XHTML1.1 parsing &trpezium; 
+PASS XHTML1.1 parsing &Tscr; 
+PASS XHTML1.1 parsing &tscr; 
+PASS XHTML1.1 parsing &TScy; 
+PASS XHTML1.1 parsing &tscy; 
+PASS XHTML1.1 parsing &TSHcy; 
+PASS XHTML1.1 parsing &tshcy; 
+PASS XHTML1.1 parsing &Tstrok; 
+PASS XHTML1.1 parsing &tstrok; 
+PASS XHTML1.1 parsing &twixt; 
+PASS XHTML1.1 parsing &twoheadleftarrow; 
+PASS XHTML1.1 parsing &twoheadrightarrow; 
+PASS XHTML1.1 parsing &Uacute; 
+PASS XHTML1.1 parsing &uacute; 
+PASS XHTML1.1 parsing &uarr; 
+PASS XHTML1.1 parsing &Uarr; 
+PASS XHTML1.1 parsing &uArr; 
+PASS XHTML1.1 parsing &Uarrocir; 
+PASS XHTML1.1 parsing &Ubrcy; 
+PASS XHTML1.1 parsing &ubrcy; 
+PASS XHTML1.1 parsing &Ubreve; 
+PASS XHTML1.1 parsing &ubreve; 
+PASS XHTML1.1 parsing &Ucirc; 
+PASS XHTML1.1 parsing &ucirc; 
+PASS XHTML1.1 parsing &Ucy; 
+PASS XHTML1.1 parsing &ucy; 
+PASS XHTML1.1 parsing &udarr; 
+PASS XHTML1.1 parsing &Udblac; 
+PASS XHTML1.1 parsing &udblac; 
+PASS XHTML1.1 parsing &udhar; 
+PASS XHTML1.1 parsing &ufisht; 
+PASS XHTML1.1 parsing &Ufr; 
+PASS XHTML1.1 parsing &ufr; 
+PASS XHTML1.1 parsing &Ugrave; 
+PASS XHTML1.1 parsing &ugrave; 
+PASS XHTML1.1 parsing &uHar; 
+PASS XHTML1.1 parsing &uharl; 
+PASS XHTML1.1 parsing &uharr; 
+PASS XHTML1.1 parsing &uhblk; 
+PASS XHTML1.1 parsing &ulcorn; 
+PASS XHTML1.1 parsing &ulcorner; 
+PASS XHTML1.1 parsing &ulcrop; 
+PASS XHTML1.1 parsing &ultri; 
+PASS XHTML1.1 parsing &Umacr; 
+PASS XHTML1.1 parsing &umacr; 
+PASS XHTML1.1 parsing &uml; 
+PASS XHTML1.1 parsing &UnderBar; 
+PASS XHTML1.1 parsing &UnderBrace; 
+PASS XHTML1.1 parsing &UnderBracket; 
+PASS XHTML1.1 parsing &UnderParenthesis; 
+PASS XHTML1.1 parsing &Union; 
+PASS XHTML1.1 parsing &UnionPlus; 
+PASS XHTML1.1 parsing &Uogon; 
+PASS XHTML1.1 parsing &uogon; 
+PASS XHTML1.1 parsing &Uopf; 
+PASS XHTML1.1 parsing &uopf; 
+PASS XHTML1.1 parsing &UpArrowBar; 
+PASS XHTML1.1 parsing &uparrow; 
+PASS XHTML1.1 parsing &UpArrow; 
+PASS XHTML1.1 parsing &Uparrow; 
+PASS XHTML1.1 parsing &UpArrowDownArrow; 
+PASS XHTML1.1 parsing &updownarrow; 
+PASS XHTML1.1 parsing &UpDownArrow; 
+PASS XHTML1.1 parsing &Updownarrow; 
+PASS XHTML1.1 parsing &UpEquilibrium; 
+PASS XHTML1.1 parsing &upharpoonleft; 
+PASS XHTML1.1 parsing &upharpoonright; 
+PASS XHTML1.1 parsing &uplus; 
+PASS XHTML1.1 parsing &UpperLeftArrow; 
+PASS XHTML1.1 parsing &UpperRightArrow; 
+PASS XHTML1.1 parsing &upsi; 
+PASS XHTML1.1 parsing &Upsi; 
+PASS XHTML1.1 parsing &upsih; 
+PASS XHTML1.1 parsing &Upsilon; 
+PASS XHTML1.1 parsing &upsilon; 
+PASS XHTML1.1 parsing &UpTeeArrow; 
+PASS XHTML1.1 parsing &UpTee; 
+PASS XHTML1.1 parsing &upuparrows; 
+PASS XHTML1.1 parsing &urcorn; 
+PASS XHTML1.1 parsing &urcorner; 
+PASS XHTML1.1 parsing &urcrop; 
+PASS XHTML1.1 parsing &Uring; 
+PASS XHTML1.1 parsing &uring; 
+PASS XHTML1.1 parsing &urtri; 
+PASS XHTML1.1 parsing &Uscr; 
+PASS XHTML1.1 parsing &uscr; 
+PASS XHTML1.1 parsing &utdot; 
+PASS XHTML1.1 parsing &Utilde; 
+PASS XHTML1.1 parsing &utilde; 
+PASS XHTML1.1 parsing &utri; 
+PASS XHTML1.1 parsing &utrif; 
+PASS XHTML1.1 parsing &uuarr; 
+PASS XHTML1.1 parsing &Uuml; 
+PASS XHTML1.1 parsing &uuml; 
+PASS XHTML1.1 parsing &uwangle; 
+PASS XHTML1.1 parsing &vangrt; 
+PASS XHTML1.1 parsing &varepsilon; 
+PASS XHTML1.1 parsing &varkappa; 
+PASS XHTML1.1 parsing &varnothing; 
+PASS XHTML1.1 parsing &varphi; 
+PASS XHTML1.1 parsing &varpi; 
+PASS XHTML1.1 parsing &varpropto; 
+PASS XHTML1.1 parsing &varr; 
+PASS XHTML1.1 parsing &vArr; 
+PASS XHTML1.1 parsing &varrho; 
+PASS XHTML1.1 parsing &varsigma; 
+PASS XHTML1.1 parsing &varsubsetneq; 
+PASS XHTML1.1 parsing &varsubsetneqq; 
+PASS XHTML1.1 parsing &varsupsetneq; 
+PASS XHTML1.1 parsing &varsupsetneqq; 
+PASS XHTML1.1 parsing &vartheta; 
+PASS XHTML1.1 parsing &vartriangleleft; 
+PASS XHTML1.1 parsing &vartriangleright; 
+PASS XHTML1.1 parsing &vBar; 
+PASS XHTML1.1 parsing &Vbar; 
+PASS XHTML1.1 parsing &vBarv; 
+PASS XHTML1.1 parsing &Vcy; 
+PASS XHTML1.1 parsing &vcy; 
+PASS XHTML1.1 parsing &vdash; 
+PASS XHTML1.1 parsing &vDash; 
+PASS XHTML1.1 parsing &Vdash; 
+PASS XHTML1.1 parsing &VDash; 
+PASS XHTML1.1 parsing &Vdashl; 
+PASS XHTML1.1 parsing &veebar; 
+PASS XHTML1.1 parsing &vee; 
+PASS XHTML1.1 parsing &Vee; 
+PASS XHTML1.1 parsing &veeeq; 
+PASS XHTML1.1 parsing &vellip; 
+PASS XHTML1.1 parsing &verbar; 
+PASS XHTML1.1 parsing &Verbar; 
+PASS XHTML1.1 parsing &vert; 
+PASS XHTML1.1 parsing &Vert; 
+PASS XHTML1.1 parsing &VerticalBar; 
+PASS XHTML1.1 parsing &VerticalLine; 
+PASS XHTML1.1 parsing &VerticalSeparator; 
+PASS XHTML1.1 parsing &VerticalTilde; 
+PASS XHTML1.1 parsing &VeryThinSpace; 
+PASS XHTML1.1 parsing &Vfr; 
+PASS XHTML1.1 parsing &vfr; 
+PASS XHTML1.1 parsing &vltri; 
+PASS XHTML1.1 parsing &vnsub; 
+PASS XHTML1.1 parsing &vnsup; 
+PASS XHTML1.1 parsing &Vopf; 
+PASS XHTML1.1 parsing &vopf; 
+PASS XHTML1.1 parsing &vprop; 
+PASS XHTML1.1 parsing &vrtri; 
+PASS XHTML1.1 parsing &Vscr; 
+PASS XHTML1.1 parsing &vscr; 
+PASS XHTML1.1 parsing &vsubnE; 
+PASS XHTML1.1 parsing &vsubne; 
+PASS XHTML1.1 parsing &vsupnE; 
+PASS XHTML1.1 parsing &vsupne; 
+PASS XHTML1.1 parsing &Vvdash; 
+PASS XHTML1.1 parsing &vzigzag; 
+PASS XHTML1.1 parsing &Wcirc; 
+PASS XHTML1.1 parsing &wcirc; 
+PASS XHTML1.1 parsing &wedbar; 
+PASS XHTML1.1 parsing &wedge; 
+PASS XHTML1.1 parsing &Wedge; 
+PASS XHTML1.1 parsing &wedgeq; 
+PASS XHTML1.1 parsing &weierp; 
+PASS XHTML1.1 parsing &Wfr; 
+PASS XHTML1.1 parsing &wfr; 
+PASS XHTML1.1 parsing &Wopf; 
+PASS XHTML1.1 parsing &wopf; 
+PASS XHTML1.1 parsing &wp; 
+PASS XHTML1.1 parsing &wr; 
+PASS XHTML1.1 parsing &wreath; 
+PASS XHTML1.1 parsing &Wscr; 
+PASS XHTML1.1 parsing &wscr; 
+PASS XHTML1.1 parsing &xcap; 
+PASS XHTML1.1 parsing &xcirc; 
+PASS XHTML1.1 parsing &xcup; 
+PASS XHTML1.1 parsing &xdtri; 
+PASS XHTML1.1 parsing &Xfr; 
+PASS XHTML1.1 parsing &xfr; 
+PASS XHTML1.1 parsing &xharr; 
+PASS XHTML1.1 parsing &xhArr; 
+PASS XHTML1.1 parsing &Xi; 
+PASS XHTML1.1 parsing &xi; 
+PASS XHTML1.1 parsing &xlarr; 
+PASS XHTML1.1 parsing &xlArr; 
+PASS XHTML1.1 parsing &xmap; 
+PASS XHTML1.1 parsing &xnis; 
+PASS XHTML1.1 parsing &xodot; 
+PASS XHTML1.1 parsing &Xopf; 
+PASS XHTML1.1 parsing &xopf; 
+PASS XHTML1.1 parsing &xoplus; 
+PASS XHTML1.1 parsing &xotime; 
+PASS XHTML1.1 parsing &xrarr; 
+PASS XHTML1.1 parsing &xrArr; 
+PASS XHTML1.1 parsing &Xscr; 
+PASS XHTML1.1 parsing &xscr; 
+PASS XHTML1.1 parsing &xsqcup; 
+PASS XHTML1.1 parsing &xuplus; 
+PASS XHTML1.1 parsing &xutri; 
+PASS XHTML1.1 parsing &xvee; 
+PASS XHTML1.1 parsing &xwedge; 
+PASS XHTML1.1 parsing &Yacute; 
+PASS XHTML1.1 parsing &yacute; 
+PASS XHTML1.1 parsing &YAcy; 
+PASS XHTML1.1 parsing &yacy; 
+PASS XHTML1.1 parsing &Ycirc; 
+PASS XHTML1.1 parsing &ycirc; 
+PASS XHTML1.1 parsing &Ycy; 
+PASS XHTML1.1 parsing &ycy; 
+PASS XHTML1.1 parsing &yen; 
+PASS XHTML1.1 parsing &Yfr; 
+PASS XHTML1.1 parsing &yfr; 
+PASS XHTML1.1 parsing &YIcy; 
+PASS XHTML1.1 parsing &yicy; 
+PASS XHTML1.1 parsing &Yopf; 
+PASS XHTML1.1 parsing &yopf; 
+PASS XHTML1.1 parsing &Yscr; 
+PASS XHTML1.1 parsing &yscr; 
+PASS XHTML1.1 parsing &YUcy; 
+PASS XHTML1.1 parsing &yucy; 
+PASS XHTML1.1 parsing &yuml; 
+PASS XHTML1.1 parsing &Yuml; 
+PASS XHTML1.1 parsing &Zacute; 
+PASS XHTML1.1 parsing &zacute; 
+PASS XHTML1.1 parsing &Zcaron; 
+PASS XHTML1.1 parsing &zcaron; 
+PASS XHTML1.1 parsing &Zcy; 
+PASS XHTML1.1 parsing &zcy; 
+PASS XHTML1.1 parsing &Zdot; 
+PASS XHTML1.1 parsing &zdot; 
+PASS XHTML1.1 parsing &zeetrf; 
+PASS XHTML1.1 parsing &ZeroWidthSpace; 
+PASS XHTML1.1 parsing &Zeta; 
+PASS XHTML1.1 parsing &zeta; 
+PASS XHTML1.1 parsing &zfr; 
+PASS XHTML1.1 parsing &Zfr; 
+PASS XHTML1.1 parsing &ZHcy; 
+PASS XHTML1.1 parsing &zhcy; 
+PASS XHTML1.1 parsing &zigrarr; 
+PASS XHTML1.1 parsing &zopf; 
+PASS XHTML1.1 parsing &Zopf; 
+PASS XHTML1.1 parsing &Zscr; 
+PASS XHTML1.1 parsing &zscr; 
+PASS XHTML1.1 parsing &zwj; 
+PASS XHTML1.1 parsing &zwnj; 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-2.htm b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-2.htm
new file mode 100644
index 0000000..9f511768
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-2.htm
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta name=timeout content=long>
+<title>HTML entities for various XHTML Doctype</title>
+<link rel=help href="http://w3c.github.io/html/xhtml.html#parsing-xhtml-documents">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe id="test" src="xhtml-mathml-dtd-entity-support.htm"></iframe>
+
+<script>
+onload = () => document.getElementById("test").contentWindow.run(
+["application/xhtml+xml", "-//W3C//DTD XHTML 1.1//EN", "foo", "XHTML1.1"]);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-3-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-3-expected.txt
new file mode 100644
index 0000000..7367981
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-3-expected.txt
@@ -0,0 +1,2129 @@
+This is a testharness.js-based test.
+Found 2125 tests; 2122 PASS, 3 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS XHTML1.0 Strict parsing &Aacute; 
+PASS XHTML1.0 Strict parsing &aacute; 
+PASS XHTML1.0 Strict parsing &Abreve; 
+PASS XHTML1.0 Strict parsing &abreve; 
+PASS XHTML1.0 Strict parsing &ac; 
+PASS XHTML1.0 Strict parsing &acd; 
+PASS XHTML1.0 Strict parsing &acE; 
+PASS XHTML1.0 Strict parsing &Acirc; 
+PASS XHTML1.0 Strict parsing &acirc; 
+PASS XHTML1.0 Strict parsing &acute; 
+PASS XHTML1.0 Strict parsing &Acy; 
+PASS XHTML1.0 Strict parsing &acy; 
+PASS XHTML1.0 Strict parsing &AElig; 
+PASS XHTML1.0 Strict parsing &aelig; 
+PASS XHTML1.0 Strict parsing &af; 
+PASS XHTML1.0 Strict parsing &Afr; 
+PASS XHTML1.0 Strict parsing &afr; 
+PASS XHTML1.0 Strict parsing &Agrave; 
+PASS XHTML1.0 Strict parsing &agrave; 
+PASS XHTML1.0 Strict parsing &alefsym; 
+PASS XHTML1.0 Strict parsing &aleph; 
+PASS XHTML1.0 Strict parsing &Alpha; 
+PASS XHTML1.0 Strict parsing &alpha; 
+PASS XHTML1.0 Strict parsing &Amacr; 
+PASS XHTML1.0 Strict parsing &amacr; 
+PASS XHTML1.0 Strict parsing &amalg; 
+PASS XHTML1.0 Strict parsing &amp; 
+FAIL XHTML1.0 Strict parsing &AMP; assert_true: expected true got false
+PASS XHTML1.0 Strict parsing &andand; 
+PASS XHTML1.0 Strict parsing &And; 
+PASS XHTML1.0 Strict parsing &and; 
+PASS XHTML1.0 Strict parsing &andd; 
+PASS XHTML1.0 Strict parsing &andslope; 
+PASS XHTML1.0 Strict parsing &andv; 
+PASS XHTML1.0 Strict parsing &ang; 
+PASS XHTML1.0 Strict parsing &ange; 
+PASS XHTML1.0 Strict parsing &angle; 
+PASS XHTML1.0 Strict parsing &angmsdaa; 
+PASS XHTML1.0 Strict parsing &angmsdab; 
+PASS XHTML1.0 Strict parsing &angmsdac; 
+PASS XHTML1.0 Strict parsing &angmsdad; 
+PASS XHTML1.0 Strict parsing &angmsdae; 
+PASS XHTML1.0 Strict parsing &angmsdaf; 
+PASS XHTML1.0 Strict parsing &angmsdag; 
+PASS XHTML1.0 Strict parsing &angmsdah; 
+PASS XHTML1.0 Strict parsing &angmsd; 
+PASS XHTML1.0 Strict parsing &angrt; 
+PASS XHTML1.0 Strict parsing &angrtvb; 
+PASS XHTML1.0 Strict parsing &angrtvbd; 
+PASS XHTML1.0 Strict parsing &angsph; 
+PASS XHTML1.0 Strict parsing &angst; 
+PASS XHTML1.0 Strict parsing &angzarr; 
+PASS XHTML1.0 Strict parsing &Aogon; 
+PASS XHTML1.0 Strict parsing &aogon; 
+PASS XHTML1.0 Strict parsing &Aopf; 
+PASS XHTML1.0 Strict parsing &aopf; 
+PASS XHTML1.0 Strict parsing &apacir; 
+PASS XHTML1.0 Strict parsing &ap; 
+PASS XHTML1.0 Strict parsing &apE; 
+PASS XHTML1.0 Strict parsing &ape; 
+PASS XHTML1.0 Strict parsing &apid; 
+PASS XHTML1.0 Strict parsing &apos; 
+PASS XHTML1.0 Strict parsing &ApplyFunction; 
+PASS XHTML1.0 Strict parsing &approx; 
+PASS XHTML1.0 Strict parsing &approxeq; 
+PASS XHTML1.0 Strict parsing &Aring; 
+PASS XHTML1.0 Strict parsing &aring; 
+PASS XHTML1.0 Strict parsing &Ascr; 
+PASS XHTML1.0 Strict parsing &ascr; 
+PASS XHTML1.0 Strict parsing &Assign; 
+PASS XHTML1.0 Strict parsing &ast; 
+PASS XHTML1.0 Strict parsing &asymp; 
+PASS XHTML1.0 Strict parsing &asympeq; 
+PASS XHTML1.0 Strict parsing &Atilde; 
+PASS XHTML1.0 Strict parsing &atilde; 
+PASS XHTML1.0 Strict parsing &Auml; 
+PASS XHTML1.0 Strict parsing &auml; 
+PASS XHTML1.0 Strict parsing &awconint; 
+PASS XHTML1.0 Strict parsing &awint; 
+PASS XHTML1.0 Strict parsing &backcong; 
+PASS XHTML1.0 Strict parsing &backepsilon; 
+PASS XHTML1.0 Strict parsing &backprime; 
+PASS XHTML1.0 Strict parsing &backsim; 
+PASS XHTML1.0 Strict parsing &backsimeq; 
+PASS XHTML1.0 Strict parsing &Backslash; 
+PASS XHTML1.0 Strict parsing &Barv; 
+PASS XHTML1.0 Strict parsing &barvee; 
+PASS XHTML1.0 Strict parsing &barwed; 
+PASS XHTML1.0 Strict parsing &Barwed; 
+PASS XHTML1.0 Strict parsing &barwedge; 
+PASS XHTML1.0 Strict parsing &bbrk; 
+PASS XHTML1.0 Strict parsing &bbrktbrk; 
+PASS XHTML1.0 Strict parsing &bcong; 
+PASS XHTML1.0 Strict parsing &Bcy; 
+PASS XHTML1.0 Strict parsing &bcy; 
+PASS XHTML1.0 Strict parsing &bdquo; 
+PASS XHTML1.0 Strict parsing &becaus; 
+PASS XHTML1.0 Strict parsing &because; 
+PASS XHTML1.0 Strict parsing &Because; 
+PASS XHTML1.0 Strict parsing &bemptyv; 
+PASS XHTML1.0 Strict parsing &bepsi; 
+PASS XHTML1.0 Strict parsing &bernou; 
+PASS XHTML1.0 Strict parsing &Bernoullis; 
+PASS XHTML1.0 Strict parsing &Beta; 
+PASS XHTML1.0 Strict parsing &beta; 
+PASS XHTML1.0 Strict parsing &beth; 
+PASS XHTML1.0 Strict parsing &between; 
+PASS XHTML1.0 Strict parsing &Bfr; 
+PASS XHTML1.0 Strict parsing &bfr; 
+PASS XHTML1.0 Strict parsing &bigcap; 
+PASS XHTML1.0 Strict parsing &bigcirc; 
+PASS XHTML1.0 Strict parsing &bigcup; 
+PASS XHTML1.0 Strict parsing &bigodot; 
+PASS XHTML1.0 Strict parsing &bigoplus; 
+PASS XHTML1.0 Strict parsing &bigotimes; 
+PASS XHTML1.0 Strict parsing &bigsqcup; 
+PASS XHTML1.0 Strict parsing &bigstar; 
+PASS XHTML1.0 Strict parsing &bigtriangledown; 
+PASS XHTML1.0 Strict parsing &bigtriangleup; 
+PASS XHTML1.0 Strict parsing &biguplus; 
+PASS XHTML1.0 Strict parsing &bigvee; 
+PASS XHTML1.0 Strict parsing &bigwedge; 
+PASS XHTML1.0 Strict parsing &bkarow; 
+PASS XHTML1.0 Strict parsing &blacklozenge; 
+PASS XHTML1.0 Strict parsing &blacksquare; 
+PASS XHTML1.0 Strict parsing &blacktriangle; 
+PASS XHTML1.0 Strict parsing &blacktriangledown; 
+PASS XHTML1.0 Strict parsing &blacktriangleleft; 
+PASS XHTML1.0 Strict parsing &blacktriangleright; 
+PASS XHTML1.0 Strict parsing &blank; 
+PASS XHTML1.0 Strict parsing &blk12; 
+PASS XHTML1.0 Strict parsing &blk14; 
+PASS XHTML1.0 Strict parsing &blk34; 
+PASS XHTML1.0 Strict parsing &block; 
+PASS XHTML1.0 Strict parsing &bne; 
+PASS XHTML1.0 Strict parsing &bnequiv; 
+PASS XHTML1.0 Strict parsing &bNot; 
+PASS XHTML1.0 Strict parsing &bnot; 
+PASS XHTML1.0 Strict parsing &Bopf; 
+PASS XHTML1.0 Strict parsing &bopf; 
+PASS XHTML1.0 Strict parsing &bot; 
+PASS XHTML1.0 Strict parsing &bottom; 
+PASS XHTML1.0 Strict parsing &bowtie; 
+PASS XHTML1.0 Strict parsing &boxbox; 
+PASS XHTML1.0 Strict parsing &boxdl; 
+PASS XHTML1.0 Strict parsing &boxdL; 
+PASS XHTML1.0 Strict parsing &boxDl; 
+PASS XHTML1.0 Strict parsing &boxDL; 
+PASS XHTML1.0 Strict parsing &boxdr; 
+PASS XHTML1.0 Strict parsing &boxdR; 
+PASS XHTML1.0 Strict parsing &boxDr; 
+PASS XHTML1.0 Strict parsing &boxDR; 
+PASS XHTML1.0 Strict parsing &boxh; 
+PASS XHTML1.0 Strict parsing &boxH; 
+PASS XHTML1.0 Strict parsing &boxhd; 
+PASS XHTML1.0 Strict parsing &boxHd; 
+PASS XHTML1.0 Strict parsing &boxhD; 
+PASS XHTML1.0 Strict parsing &boxHD; 
+PASS XHTML1.0 Strict parsing &boxhu; 
+PASS XHTML1.0 Strict parsing &boxHu; 
+PASS XHTML1.0 Strict parsing &boxhU; 
+PASS XHTML1.0 Strict parsing &boxHU; 
+PASS XHTML1.0 Strict parsing &boxminus; 
+PASS XHTML1.0 Strict parsing &boxplus; 
+PASS XHTML1.0 Strict parsing &boxtimes; 
+PASS XHTML1.0 Strict parsing &boxul; 
+PASS XHTML1.0 Strict parsing &boxuL; 
+PASS XHTML1.0 Strict parsing &boxUl; 
+PASS XHTML1.0 Strict parsing &boxUL; 
+PASS XHTML1.0 Strict parsing &boxur; 
+PASS XHTML1.0 Strict parsing &boxuR; 
+PASS XHTML1.0 Strict parsing &boxUr; 
+PASS XHTML1.0 Strict parsing &boxUR; 
+PASS XHTML1.0 Strict parsing &boxv; 
+PASS XHTML1.0 Strict parsing &boxV; 
+PASS XHTML1.0 Strict parsing &boxvh; 
+PASS XHTML1.0 Strict parsing &boxvH; 
+PASS XHTML1.0 Strict parsing &boxVh; 
+PASS XHTML1.0 Strict parsing &boxVH; 
+PASS XHTML1.0 Strict parsing &boxvl; 
+PASS XHTML1.0 Strict parsing &boxvL; 
+PASS XHTML1.0 Strict parsing &boxVl; 
+PASS XHTML1.0 Strict parsing &boxVL; 
+PASS XHTML1.0 Strict parsing &boxvr; 
+PASS XHTML1.0 Strict parsing &boxvR; 
+PASS XHTML1.0 Strict parsing &boxVr; 
+PASS XHTML1.0 Strict parsing &boxVR; 
+PASS XHTML1.0 Strict parsing &bprime; 
+PASS XHTML1.0 Strict parsing &breve; 
+PASS XHTML1.0 Strict parsing &Breve; 
+PASS XHTML1.0 Strict parsing &brvbar; 
+PASS XHTML1.0 Strict parsing &bscr; 
+PASS XHTML1.0 Strict parsing &Bscr; 
+PASS XHTML1.0 Strict parsing &bsemi; 
+PASS XHTML1.0 Strict parsing &bsim; 
+PASS XHTML1.0 Strict parsing &bsime; 
+PASS XHTML1.0 Strict parsing &bsolb; 
+PASS XHTML1.0 Strict parsing &bsol; 
+PASS XHTML1.0 Strict parsing &bsolhsub; 
+PASS XHTML1.0 Strict parsing &bull; 
+PASS XHTML1.0 Strict parsing &bullet; 
+PASS XHTML1.0 Strict parsing &bump; 
+PASS XHTML1.0 Strict parsing &bumpE; 
+PASS XHTML1.0 Strict parsing &bumpe; 
+PASS XHTML1.0 Strict parsing &Bumpeq; 
+PASS XHTML1.0 Strict parsing &bumpeq; 
+PASS XHTML1.0 Strict parsing &Cacute; 
+PASS XHTML1.0 Strict parsing &cacute; 
+PASS XHTML1.0 Strict parsing &capand; 
+PASS XHTML1.0 Strict parsing &capbrcup; 
+PASS XHTML1.0 Strict parsing &capcap; 
+PASS XHTML1.0 Strict parsing &cap; 
+PASS XHTML1.0 Strict parsing &Cap; 
+PASS XHTML1.0 Strict parsing &capcup; 
+PASS XHTML1.0 Strict parsing &capdot; 
+PASS XHTML1.0 Strict parsing &CapitalDifferentialD; 
+PASS XHTML1.0 Strict parsing &caps; 
+PASS XHTML1.0 Strict parsing &caret; 
+PASS XHTML1.0 Strict parsing &caron; 
+PASS XHTML1.0 Strict parsing &Cayleys; 
+PASS XHTML1.0 Strict parsing &ccaps; 
+PASS XHTML1.0 Strict parsing &Ccaron; 
+PASS XHTML1.0 Strict parsing &ccaron; 
+PASS XHTML1.0 Strict parsing &Ccedil; 
+PASS XHTML1.0 Strict parsing &ccedil; 
+PASS XHTML1.0 Strict parsing &Ccirc; 
+PASS XHTML1.0 Strict parsing &ccirc; 
+PASS XHTML1.0 Strict parsing &Cconint; 
+PASS XHTML1.0 Strict parsing &ccups; 
+PASS XHTML1.0 Strict parsing &ccupssm; 
+PASS XHTML1.0 Strict parsing &Cdot; 
+PASS XHTML1.0 Strict parsing &cdot; 
+PASS XHTML1.0 Strict parsing &cedil; 
+PASS XHTML1.0 Strict parsing &Cedilla; 
+PASS XHTML1.0 Strict parsing &cemptyv; 
+PASS XHTML1.0 Strict parsing &cent; 
+PASS XHTML1.0 Strict parsing &centerdot; 
+PASS XHTML1.0 Strict parsing &CenterDot; 
+PASS XHTML1.0 Strict parsing &cfr; 
+PASS XHTML1.0 Strict parsing &Cfr; 
+PASS XHTML1.0 Strict parsing &CHcy; 
+PASS XHTML1.0 Strict parsing &chcy; 
+PASS XHTML1.0 Strict parsing &check; 
+PASS XHTML1.0 Strict parsing &checkmark; 
+PASS XHTML1.0 Strict parsing &Chi; 
+PASS XHTML1.0 Strict parsing &chi; 
+PASS XHTML1.0 Strict parsing &circ; 
+PASS XHTML1.0 Strict parsing &circeq; 
+PASS XHTML1.0 Strict parsing &circlearrowleft; 
+PASS XHTML1.0 Strict parsing &circlearrowright; 
+PASS XHTML1.0 Strict parsing &circledast; 
+PASS XHTML1.0 Strict parsing &circledcirc; 
+PASS XHTML1.0 Strict parsing &circleddash; 
+PASS XHTML1.0 Strict parsing &CircleDot; 
+PASS XHTML1.0 Strict parsing &circledR; 
+PASS XHTML1.0 Strict parsing &circledS; 
+PASS XHTML1.0 Strict parsing &CircleMinus; 
+PASS XHTML1.0 Strict parsing &CirclePlus; 
+PASS XHTML1.0 Strict parsing &CircleTimes; 
+PASS XHTML1.0 Strict parsing &cir; 
+PASS XHTML1.0 Strict parsing &cirE; 
+PASS XHTML1.0 Strict parsing &cire; 
+PASS XHTML1.0 Strict parsing &cirfnint; 
+PASS XHTML1.0 Strict parsing &cirmid; 
+PASS XHTML1.0 Strict parsing &cirscir; 
+PASS XHTML1.0 Strict parsing &ClockwiseContourIntegral; 
+PASS XHTML1.0 Strict parsing &CloseCurlyDoubleQuote; 
+PASS XHTML1.0 Strict parsing &CloseCurlyQuote; 
+PASS XHTML1.0 Strict parsing &clubs; 
+PASS XHTML1.0 Strict parsing &clubsuit; 
+PASS XHTML1.0 Strict parsing &colon; 
+PASS XHTML1.0 Strict parsing &Colon; 
+PASS XHTML1.0 Strict parsing &Colone; 
+PASS XHTML1.0 Strict parsing &colone; 
+PASS XHTML1.0 Strict parsing &coloneq; 
+PASS XHTML1.0 Strict parsing &comma; 
+PASS XHTML1.0 Strict parsing &commat; 
+PASS XHTML1.0 Strict parsing &comp; 
+PASS XHTML1.0 Strict parsing &compfn; 
+PASS XHTML1.0 Strict parsing &complement; 
+PASS XHTML1.0 Strict parsing &complexes; 
+PASS XHTML1.0 Strict parsing &cong; 
+PASS XHTML1.0 Strict parsing &congdot; 
+PASS XHTML1.0 Strict parsing &Congruent; 
+PASS XHTML1.0 Strict parsing &conint; 
+PASS XHTML1.0 Strict parsing &Conint; 
+PASS XHTML1.0 Strict parsing &ContourIntegral; 
+PASS XHTML1.0 Strict parsing &copf; 
+PASS XHTML1.0 Strict parsing &Copf; 
+PASS XHTML1.0 Strict parsing &coprod; 
+PASS XHTML1.0 Strict parsing &Coproduct; 
+PASS XHTML1.0 Strict parsing &copy; 
+PASS XHTML1.0 Strict parsing &COPY; 
+PASS XHTML1.0 Strict parsing &copysr; 
+PASS XHTML1.0 Strict parsing &CounterClockwiseContourIntegral; 
+PASS XHTML1.0 Strict parsing &crarr; 
+PASS XHTML1.0 Strict parsing &cross; 
+PASS XHTML1.0 Strict parsing &Cross; 
+PASS XHTML1.0 Strict parsing &Cscr; 
+PASS XHTML1.0 Strict parsing &cscr; 
+PASS XHTML1.0 Strict parsing &csub; 
+PASS XHTML1.0 Strict parsing &csube; 
+PASS XHTML1.0 Strict parsing &csup; 
+PASS XHTML1.0 Strict parsing &csupe; 
+PASS XHTML1.0 Strict parsing &ctdot; 
+PASS XHTML1.0 Strict parsing &cudarrl; 
+PASS XHTML1.0 Strict parsing &cudarrr; 
+PASS XHTML1.0 Strict parsing &cuepr; 
+PASS XHTML1.0 Strict parsing &cuesc; 
+PASS XHTML1.0 Strict parsing &cularr; 
+PASS XHTML1.0 Strict parsing &cularrp; 
+PASS XHTML1.0 Strict parsing &cupbrcap; 
+PASS XHTML1.0 Strict parsing &cupcap; 
+PASS XHTML1.0 Strict parsing &CupCap; 
+PASS XHTML1.0 Strict parsing &cup; 
+PASS XHTML1.0 Strict parsing &Cup; 
+PASS XHTML1.0 Strict parsing &cupcup; 
+PASS XHTML1.0 Strict parsing &cupdot; 
+PASS XHTML1.0 Strict parsing &cupor; 
+PASS XHTML1.0 Strict parsing &cups; 
+PASS XHTML1.0 Strict parsing &curarr; 
+PASS XHTML1.0 Strict parsing &curarrm; 
+PASS XHTML1.0 Strict parsing &curlyeqprec; 
+PASS XHTML1.0 Strict parsing &curlyeqsucc; 
+PASS XHTML1.0 Strict parsing &curlyvee; 
+PASS XHTML1.0 Strict parsing &curlywedge; 
+PASS XHTML1.0 Strict parsing &curren; 
+PASS XHTML1.0 Strict parsing &curvearrowleft; 
+PASS XHTML1.0 Strict parsing &curvearrowright; 
+PASS XHTML1.0 Strict parsing &cuvee; 
+PASS XHTML1.0 Strict parsing &cuwed; 
+PASS XHTML1.0 Strict parsing &cwconint; 
+PASS XHTML1.0 Strict parsing &cwint; 
+PASS XHTML1.0 Strict parsing &cylcty; 
+PASS XHTML1.0 Strict parsing &dagger; 
+PASS XHTML1.0 Strict parsing &Dagger; 
+PASS XHTML1.0 Strict parsing &daleth; 
+PASS XHTML1.0 Strict parsing &darr; 
+PASS XHTML1.0 Strict parsing &Darr; 
+PASS XHTML1.0 Strict parsing &dArr; 
+PASS XHTML1.0 Strict parsing &dash; 
+PASS XHTML1.0 Strict parsing &Dashv; 
+PASS XHTML1.0 Strict parsing &dashv; 
+PASS XHTML1.0 Strict parsing &dbkarow; 
+PASS XHTML1.0 Strict parsing &dblac; 
+PASS XHTML1.0 Strict parsing &Dcaron; 
+PASS XHTML1.0 Strict parsing &dcaron; 
+PASS XHTML1.0 Strict parsing &Dcy; 
+PASS XHTML1.0 Strict parsing &dcy; 
+PASS XHTML1.0 Strict parsing &ddagger; 
+PASS XHTML1.0 Strict parsing &ddarr; 
+PASS XHTML1.0 Strict parsing &DD; 
+PASS XHTML1.0 Strict parsing &dd; 
+PASS XHTML1.0 Strict parsing &DDotrahd; 
+PASS XHTML1.0 Strict parsing &ddotseq; 
+PASS XHTML1.0 Strict parsing &deg; 
+PASS XHTML1.0 Strict parsing &Del; 
+PASS XHTML1.0 Strict parsing &Delta; 
+PASS XHTML1.0 Strict parsing &delta; 
+PASS XHTML1.0 Strict parsing &demptyv; 
+PASS XHTML1.0 Strict parsing &dfisht; 
+PASS XHTML1.0 Strict parsing &Dfr; 
+PASS XHTML1.0 Strict parsing &dfr; 
+PASS XHTML1.0 Strict parsing &dHar; 
+PASS XHTML1.0 Strict parsing &dharl; 
+PASS XHTML1.0 Strict parsing &dharr; 
+PASS XHTML1.0 Strict parsing &DiacriticalAcute; 
+PASS XHTML1.0 Strict parsing &DiacriticalDot; 
+PASS XHTML1.0 Strict parsing &DiacriticalDoubleAcute; 
+PASS XHTML1.0 Strict parsing &DiacriticalGrave; 
+PASS XHTML1.0 Strict parsing &DiacriticalTilde; 
+PASS XHTML1.0 Strict parsing &diam; 
+PASS XHTML1.0 Strict parsing &diamond; 
+PASS XHTML1.0 Strict parsing &Diamond; 
+PASS XHTML1.0 Strict parsing &diamondsuit; 
+PASS XHTML1.0 Strict parsing &diams; 
+PASS XHTML1.0 Strict parsing &die; 
+PASS XHTML1.0 Strict parsing &DifferentialD; 
+PASS XHTML1.0 Strict parsing &digamma; 
+PASS XHTML1.0 Strict parsing &disin; 
+PASS XHTML1.0 Strict parsing &div; 
+PASS XHTML1.0 Strict parsing &divide; 
+PASS XHTML1.0 Strict parsing &divideontimes; 
+PASS XHTML1.0 Strict parsing &divonx; 
+PASS XHTML1.0 Strict parsing &DJcy; 
+PASS XHTML1.0 Strict parsing &djcy; 
+PASS XHTML1.0 Strict parsing &dlcorn; 
+PASS XHTML1.0 Strict parsing &dlcrop; 
+PASS XHTML1.0 Strict parsing &dollar; 
+PASS XHTML1.0 Strict parsing &Dopf; 
+PASS XHTML1.0 Strict parsing &dopf; 
+PASS XHTML1.0 Strict parsing &Dot; 
+PASS XHTML1.0 Strict parsing &dot; 
+PASS XHTML1.0 Strict parsing &DotDot; 
+PASS XHTML1.0 Strict parsing &doteq; 
+PASS XHTML1.0 Strict parsing &doteqdot; 
+PASS XHTML1.0 Strict parsing &DotEqual; 
+PASS XHTML1.0 Strict parsing &dotminus; 
+PASS XHTML1.0 Strict parsing &dotplus; 
+PASS XHTML1.0 Strict parsing &dotsquare; 
+PASS XHTML1.0 Strict parsing &doublebarwedge; 
+PASS XHTML1.0 Strict parsing &DoubleContourIntegral; 
+PASS XHTML1.0 Strict parsing &DoubleDot; 
+PASS XHTML1.0 Strict parsing &DoubleDownArrow; 
+PASS XHTML1.0 Strict parsing &DoubleLeftArrow; 
+PASS XHTML1.0 Strict parsing &DoubleLeftRightArrow; 
+PASS XHTML1.0 Strict parsing &DoubleLeftTee; 
+PASS XHTML1.0 Strict parsing &DoubleLongLeftArrow; 
+PASS XHTML1.0 Strict parsing &DoubleLongLeftRightArrow; 
+PASS XHTML1.0 Strict parsing &DoubleLongRightArrow; 
+PASS XHTML1.0 Strict parsing &DoubleRightArrow; 
+PASS XHTML1.0 Strict parsing &DoubleRightTee; 
+PASS XHTML1.0 Strict parsing &DoubleUpArrow; 
+PASS XHTML1.0 Strict parsing &DoubleUpDownArrow; 
+PASS XHTML1.0 Strict parsing &DoubleVerticalBar; 
+PASS XHTML1.0 Strict parsing &DownArrowBar; 
+PASS XHTML1.0 Strict parsing &downarrow; 
+PASS XHTML1.0 Strict parsing &DownArrow; 
+PASS XHTML1.0 Strict parsing &Downarrow; 
+PASS XHTML1.0 Strict parsing &DownArrowUpArrow; 
+PASS XHTML1.0 Strict parsing &DownBreve; 
+PASS XHTML1.0 Strict parsing &downdownarrows; 
+PASS XHTML1.0 Strict parsing &downharpoonleft; 
+PASS XHTML1.0 Strict parsing &downharpoonright; 
+PASS XHTML1.0 Strict parsing &DownLeftRightVector; 
+PASS XHTML1.0 Strict parsing &DownLeftTeeVector; 
+PASS XHTML1.0 Strict parsing &DownLeftVectorBar; 
+PASS XHTML1.0 Strict parsing &DownLeftVector; 
+PASS XHTML1.0 Strict parsing &DownRightTeeVector; 
+PASS XHTML1.0 Strict parsing &DownRightVectorBar; 
+PASS XHTML1.0 Strict parsing &DownRightVector; 
+PASS XHTML1.0 Strict parsing &DownTeeArrow; 
+PASS XHTML1.0 Strict parsing &DownTee; 
+PASS XHTML1.0 Strict parsing &drbkarow; 
+PASS XHTML1.0 Strict parsing &drcorn; 
+PASS XHTML1.0 Strict parsing &drcrop; 
+PASS XHTML1.0 Strict parsing &Dscr; 
+PASS XHTML1.0 Strict parsing &dscr; 
+PASS XHTML1.0 Strict parsing &DScy; 
+PASS XHTML1.0 Strict parsing &dscy; 
+PASS XHTML1.0 Strict parsing &dsol; 
+PASS XHTML1.0 Strict parsing &Dstrok; 
+PASS XHTML1.0 Strict parsing &dstrok; 
+PASS XHTML1.0 Strict parsing &dtdot; 
+PASS XHTML1.0 Strict parsing &dtri; 
+PASS XHTML1.0 Strict parsing &dtrif; 
+PASS XHTML1.0 Strict parsing &duarr; 
+PASS XHTML1.0 Strict parsing &duhar; 
+PASS XHTML1.0 Strict parsing &dwangle; 
+PASS XHTML1.0 Strict parsing &DZcy; 
+PASS XHTML1.0 Strict parsing &dzcy; 
+PASS XHTML1.0 Strict parsing &dzigrarr; 
+PASS XHTML1.0 Strict parsing &Eacute; 
+PASS XHTML1.0 Strict parsing &eacute; 
+PASS XHTML1.0 Strict parsing &easter; 
+PASS XHTML1.0 Strict parsing &Ecaron; 
+PASS XHTML1.0 Strict parsing &ecaron; 
+PASS XHTML1.0 Strict parsing &Ecirc; 
+PASS XHTML1.0 Strict parsing &ecirc; 
+PASS XHTML1.0 Strict parsing &ecir; 
+PASS XHTML1.0 Strict parsing &ecolon; 
+PASS XHTML1.0 Strict parsing &Ecy; 
+PASS XHTML1.0 Strict parsing &ecy; 
+PASS XHTML1.0 Strict parsing &eDDot; 
+PASS XHTML1.0 Strict parsing &Edot; 
+PASS XHTML1.0 Strict parsing &edot; 
+PASS XHTML1.0 Strict parsing &eDot; 
+PASS XHTML1.0 Strict parsing &ee; 
+PASS XHTML1.0 Strict parsing &efDot; 
+PASS XHTML1.0 Strict parsing &Efr; 
+PASS XHTML1.0 Strict parsing &efr; 
+PASS XHTML1.0 Strict parsing &eg; 
+PASS XHTML1.0 Strict parsing &Egrave; 
+PASS XHTML1.0 Strict parsing &egrave; 
+PASS XHTML1.0 Strict parsing &egs; 
+PASS XHTML1.0 Strict parsing &egsdot; 
+PASS XHTML1.0 Strict parsing &el; 
+PASS XHTML1.0 Strict parsing &Element; 
+PASS XHTML1.0 Strict parsing &elinters; 
+PASS XHTML1.0 Strict parsing &ell; 
+PASS XHTML1.0 Strict parsing &els; 
+PASS XHTML1.0 Strict parsing &elsdot; 
+PASS XHTML1.0 Strict parsing &Emacr; 
+PASS XHTML1.0 Strict parsing &emacr; 
+PASS XHTML1.0 Strict parsing &empty; 
+PASS XHTML1.0 Strict parsing &emptyset; 
+PASS XHTML1.0 Strict parsing &EmptySmallSquare; 
+PASS XHTML1.0 Strict parsing &emptyv; 
+PASS XHTML1.0 Strict parsing &EmptyVerySmallSquare; 
+PASS XHTML1.0 Strict parsing &emsp13; 
+PASS XHTML1.0 Strict parsing &emsp14; 
+PASS XHTML1.0 Strict parsing &emsp; 
+PASS XHTML1.0 Strict parsing &ENG; 
+PASS XHTML1.0 Strict parsing &eng; 
+PASS XHTML1.0 Strict parsing &ensp; 
+PASS XHTML1.0 Strict parsing &Eogon; 
+PASS XHTML1.0 Strict parsing &eogon; 
+PASS XHTML1.0 Strict parsing &Eopf; 
+PASS XHTML1.0 Strict parsing &eopf; 
+PASS XHTML1.0 Strict parsing &epar; 
+PASS XHTML1.0 Strict parsing &eparsl; 
+PASS XHTML1.0 Strict parsing &eplus; 
+PASS XHTML1.0 Strict parsing &epsi; 
+PASS XHTML1.0 Strict parsing &Epsilon; 
+PASS XHTML1.0 Strict parsing &epsilon; 
+PASS XHTML1.0 Strict parsing &epsiv; 
+PASS XHTML1.0 Strict parsing &eqcirc; 
+PASS XHTML1.0 Strict parsing &eqcolon; 
+PASS XHTML1.0 Strict parsing &eqsim; 
+PASS XHTML1.0 Strict parsing &eqslantgtr; 
+PASS XHTML1.0 Strict parsing &eqslantless; 
+PASS XHTML1.0 Strict parsing &Equal; 
+PASS XHTML1.0 Strict parsing &equals; 
+PASS XHTML1.0 Strict parsing &EqualTilde; 
+PASS XHTML1.0 Strict parsing &equest; 
+PASS XHTML1.0 Strict parsing &Equilibrium; 
+PASS XHTML1.0 Strict parsing &equiv; 
+PASS XHTML1.0 Strict parsing &equivDD; 
+PASS XHTML1.0 Strict parsing &eqvparsl; 
+PASS XHTML1.0 Strict parsing &erarr; 
+PASS XHTML1.0 Strict parsing &erDot; 
+PASS XHTML1.0 Strict parsing &escr; 
+PASS XHTML1.0 Strict parsing &Escr; 
+PASS XHTML1.0 Strict parsing &esdot; 
+PASS XHTML1.0 Strict parsing &Esim; 
+PASS XHTML1.0 Strict parsing &esim; 
+PASS XHTML1.0 Strict parsing &Eta; 
+PASS XHTML1.0 Strict parsing &eta; 
+PASS XHTML1.0 Strict parsing &ETH; 
+PASS XHTML1.0 Strict parsing &eth; 
+PASS XHTML1.0 Strict parsing &Euml; 
+PASS XHTML1.0 Strict parsing &euml; 
+PASS XHTML1.0 Strict parsing &euro; 
+PASS XHTML1.0 Strict parsing &excl; 
+PASS XHTML1.0 Strict parsing &exist; 
+PASS XHTML1.0 Strict parsing &Exists; 
+PASS XHTML1.0 Strict parsing &expectation; 
+PASS XHTML1.0 Strict parsing &exponentiale; 
+PASS XHTML1.0 Strict parsing &ExponentialE; 
+PASS XHTML1.0 Strict parsing &fallingdotseq; 
+PASS XHTML1.0 Strict parsing &Fcy; 
+PASS XHTML1.0 Strict parsing &fcy; 
+PASS XHTML1.0 Strict parsing &female; 
+PASS XHTML1.0 Strict parsing &ffilig; 
+PASS XHTML1.0 Strict parsing &fflig; 
+PASS XHTML1.0 Strict parsing &ffllig; 
+PASS XHTML1.0 Strict parsing &Ffr; 
+PASS XHTML1.0 Strict parsing &ffr; 
+PASS XHTML1.0 Strict parsing &filig; 
+PASS XHTML1.0 Strict parsing &FilledSmallSquare; 
+PASS XHTML1.0 Strict parsing &FilledVerySmallSquare; 
+PASS XHTML1.0 Strict parsing &fjlig; 
+PASS XHTML1.0 Strict parsing &flat; 
+PASS XHTML1.0 Strict parsing &fllig; 
+PASS XHTML1.0 Strict parsing &fltns; 
+PASS XHTML1.0 Strict parsing &fnof; 
+PASS XHTML1.0 Strict parsing &Fopf; 
+PASS XHTML1.0 Strict parsing &fopf; 
+PASS XHTML1.0 Strict parsing &forall; 
+PASS XHTML1.0 Strict parsing &ForAll; 
+PASS XHTML1.0 Strict parsing &fork; 
+PASS XHTML1.0 Strict parsing &forkv; 
+PASS XHTML1.0 Strict parsing &Fouriertrf; 
+PASS XHTML1.0 Strict parsing &fpartint; 
+PASS XHTML1.0 Strict parsing &frac12; 
+PASS XHTML1.0 Strict parsing &frac13; 
+PASS XHTML1.0 Strict parsing &frac14; 
+PASS XHTML1.0 Strict parsing &frac15; 
+PASS XHTML1.0 Strict parsing &frac16; 
+PASS XHTML1.0 Strict parsing &frac18; 
+PASS XHTML1.0 Strict parsing &frac23; 
+PASS XHTML1.0 Strict parsing &frac25; 
+PASS XHTML1.0 Strict parsing &frac34; 
+PASS XHTML1.0 Strict parsing &frac35; 
+PASS XHTML1.0 Strict parsing &frac38; 
+PASS XHTML1.0 Strict parsing &frac45; 
+PASS XHTML1.0 Strict parsing &frac56; 
+PASS XHTML1.0 Strict parsing &frac58; 
+PASS XHTML1.0 Strict parsing &frac78; 
+PASS XHTML1.0 Strict parsing &frasl; 
+PASS XHTML1.0 Strict parsing &frown; 
+PASS XHTML1.0 Strict parsing &fscr; 
+PASS XHTML1.0 Strict parsing &Fscr; 
+PASS XHTML1.0 Strict parsing &gacute; 
+PASS XHTML1.0 Strict parsing &Gamma; 
+PASS XHTML1.0 Strict parsing &gamma; 
+PASS XHTML1.0 Strict parsing &Gammad; 
+PASS XHTML1.0 Strict parsing &gammad; 
+PASS XHTML1.0 Strict parsing &gap; 
+PASS XHTML1.0 Strict parsing &Gbreve; 
+PASS XHTML1.0 Strict parsing &gbreve; 
+PASS XHTML1.0 Strict parsing &Gcedil; 
+PASS XHTML1.0 Strict parsing &Gcirc; 
+PASS XHTML1.0 Strict parsing &gcirc; 
+PASS XHTML1.0 Strict parsing &Gcy; 
+PASS XHTML1.0 Strict parsing &gcy; 
+PASS XHTML1.0 Strict parsing &Gdot; 
+PASS XHTML1.0 Strict parsing &gdot; 
+PASS XHTML1.0 Strict parsing &ge; 
+PASS XHTML1.0 Strict parsing &gE; 
+PASS XHTML1.0 Strict parsing &gEl; 
+PASS XHTML1.0 Strict parsing &gel; 
+PASS XHTML1.0 Strict parsing &geq; 
+PASS XHTML1.0 Strict parsing &geqq; 
+PASS XHTML1.0 Strict parsing &geqslant; 
+PASS XHTML1.0 Strict parsing &gescc; 
+PASS XHTML1.0 Strict parsing &ges; 
+PASS XHTML1.0 Strict parsing &gesdot; 
+PASS XHTML1.0 Strict parsing &gesdoto; 
+PASS XHTML1.0 Strict parsing &gesdotol; 
+PASS XHTML1.0 Strict parsing &gesl; 
+PASS XHTML1.0 Strict parsing &gesles; 
+PASS XHTML1.0 Strict parsing &Gfr; 
+PASS XHTML1.0 Strict parsing &gfr; 
+PASS XHTML1.0 Strict parsing &gg; 
+PASS XHTML1.0 Strict parsing &Gg; 
+PASS XHTML1.0 Strict parsing &ggg; 
+PASS XHTML1.0 Strict parsing &gimel; 
+PASS XHTML1.0 Strict parsing &GJcy; 
+PASS XHTML1.0 Strict parsing &gjcy; 
+PASS XHTML1.0 Strict parsing &gla; 
+PASS XHTML1.0 Strict parsing &gl; 
+PASS XHTML1.0 Strict parsing &glE; 
+PASS XHTML1.0 Strict parsing &glj; 
+PASS XHTML1.0 Strict parsing &gnap; 
+PASS XHTML1.0 Strict parsing &gnapprox; 
+PASS XHTML1.0 Strict parsing &gne; 
+PASS XHTML1.0 Strict parsing &gnE; 
+PASS XHTML1.0 Strict parsing &gneq; 
+PASS XHTML1.0 Strict parsing &gneqq; 
+PASS XHTML1.0 Strict parsing &gnsim; 
+PASS XHTML1.0 Strict parsing &Gopf; 
+PASS XHTML1.0 Strict parsing &gopf; 
+PASS XHTML1.0 Strict parsing &grave; 
+PASS XHTML1.0 Strict parsing &GreaterEqual; 
+PASS XHTML1.0 Strict parsing &GreaterEqualLess; 
+PASS XHTML1.0 Strict parsing &GreaterFullEqual; 
+PASS XHTML1.0 Strict parsing &GreaterGreater; 
+PASS XHTML1.0 Strict parsing &GreaterLess; 
+PASS XHTML1.0 Strict parsing &GreaterSlantEqual; 
+PASS XHTML1.0 Strict parsing &GreaterTilde; 
+PASS XHTML1.0 Strict parsing &Gscr; 
+PASS XHTML1.0 Strict parsing &gscr; 
+PASS XHTML1.0 Strict parsing &gsim; 
+PASS XHTML1.0 Strict parsing &gsime; 
+PASS XHTML1.0 Strict parsing &gsiml; 
+PASS XHTML1.0 Strict parsing &gtcc; 
+PASS XHTML1.0 Strict parsing &gtcir; 
+PASS XHTML1.0 Strict parsing &gt; 
+PASS XHTML1.0 Strict parsing &GT; 
+PASS XHTML1.0 Strict parsing &Gt; 
+PASS XHTML1.0 Strict parsing &gtdot; 
+PASS XHTML1.0 Strict parsing &gtlPar; 
+PASS XHTML1.0 Strict parsing &gtquest; 
+PASS XHTML1.0 Strict parsing &gtrapprox; 
+PASS XHTML1.0 Strict parsing &gtrarr; 
+PASS XHTML1.0 Strict parsing &gtrdot; 
+PASS XHTML1.0 Strict parsing &gtreqless; 
+PASS XHTML1.0 Strict parsing &gtreqqless; 
+PASS XHTML1.0 Strict parsing &gtrless; 
+PASS XHTML1.0 Strict parsing &gtrsim; 
+PASS XHTML1.0 Strict parsing &gvertneqq; 
+PASS XHTML1.0 Strict parsing &gvnE; 
+PASS XHTML1.0 Strict parsing &Hacek; 
+PASS XHTML1.0 Strict parsing &hairsp; 
+PASS XHTML1.0 Strict parsing &half; 
+PASS XHTML1.0 Strict parsing &hamilt; 
+PASS XHTML1.0 Strict parsing &HARDcy; 
+PASS XHTML1.0 Strict parsing &hardcy; 
+PASS XHTML1.0 Strict parsing &harrcir; 
+PASS XHTML1.0 Strict parsing &harr; 
+PASS XHTML1.0 Strict parsing &hArr; 
+PASS XHTML1.0 Strict parsing &harrw; 
+PASS XHTML1.0 Strict parsing &Hat; 
+PASS XHTML1.0 Strict parsing &hbar; 
+PASS XHTML1.0 Strict parsing &Hcirc; 
+PASS XHTML1.0 Strict parsing &hcirc; 
+PASS XHTML1.0 Strict parsing &hearts; 
+PASS XHTML1.0 Strict parsing &heartsuit; 
+PASS XHTML1.0 Strict parsing &hellip; 
+PASS XHTML1.0 Strict parsing &hercon; 
+PASS XHTML1.0 Strict parsing &hfr; 
+PASS XHTML1.0 Strict parsing &Hfr; 
+PASS XHTML1.0 Strict parsing &HilbertSpace; 
+PASS XHTML1.0 Strict parsing &hksearow; 
+PASS XHTML1.0 Strict parsing &hkswarow; 
+PASS XHTML1.0 Strict parsing &hoarr; 
+PASS XHTML1.0 Strict parsing &homtht; 
+PASS XHTML1.0 Strict parsing &hookleftarrow; 
+PASS XHTML1.0 Strict parsing &hookrightarrow; 
+PASS XHTML1.0 Strict parsing &hopf; 
+PASS XHTML1.0 Strict parsing &Hopf; 
+PASS XHTML1.0 Strict parsing &horbar; 
+PASS XHTML1.0 Strict parsing &HorizontalLine; 
+PASS XHTML1.0 Strict parsing &hscr; 
+PASS XHTML1.0 Strict parsing &Hscr; 
+PASS XHTML1.0 Strict parsing &hslash; 
+PASS XHTML1.0 Strict parsing &Hstrok; 
+PASS XHTML1.0 Strict parsing &hstrok; 
+PASS XHTML1.0 Strict parsing &HumpDownHump; 
+PASS XHTML1.0 Strict parsing &HumpEqual; 
+PASS XHTML1.0 Strict parsing &hybull; 
+PASS XHTML1.0 Strict parsing &hyphen; 
+PASS XHTML1.0 Strict parsing &Iacute; 
+PASS XHTML1.0 Strict parsing &iacute; 
+PASS XHTML1.0 Strict parsing &ic; 
+PASS XHTML1.0 Strict parsing &Icirc; 
+PASS XHTML1.0 Strict parsing &icirc; 
+PASS XHTML1.0 Strict parsing &Icy; 
+PASS XHTML1.0 Strict parsing &icy; 
+PASS XHTML1.0 Strict parsing &Idot; 
+PASS XHTML1.0 Strict parsing &IEcy; 
+PASS XHTML1.0 Strict parsing &iecy; 
+PASS XHTML1.0 Strict parsing &iexcl; 
+PASS XHTML1.0 Strict parsing &iff; 
+PASS XHTML1.0 Strict parsing &ifr; 
+PASS XHTML1.0 Strict parsing &Ifr; 
+PASS XHTML1.0 Strict parsing &Igrave; 
+PASS XHTML1.0 Strict parsing &igrave; 
+PASS XHTML1.0 Strict parsing &ii; 
+PASS XHTML1.0 Strict parsing &iiiint; 
+PASS XHTML1.0 Strict parsing &iiint; 
+PASS XHTML1.0 Strict parsing &iinfin; 
+PASS XHTML1.0 Strict parsing &iiota; 
+PASS XHTML1.0 Strict parsing &IJlig; 
+PASS XHTML1.0 Strict parsing &ijlig; 
+PASS XHTML1.0 Strict parsing &Imacr; 
+PASS XHTML1.0 Strict parsing &imacr; 
+PASS XHTML1.0 Strict parsing &image; 
+PASS XHTML1.0 Strict parsing &ImaginaryI; 
+PASS XHTML1.0 Strict parsing &imagline; 
+PASS XHTML1.0 Strict parsing &imagpart; 
+PASS XHTML1.0 Strict parsing &imath; 
+PASS XHTML1.0 Strict parsing &Im; 
+PASS XHTML1.0 Strict parsing &imof; 
+PASS XHTML1.0 Strict parsing &imped; 
+PASS XHTML1.0 Strict parsing &Implies; 
+PASS XHTML1.0 Strict parsing &incare; 
+PASS XHTML1.0 Strict parsing &in; 
+PASS XHTML1.0 Strict parsing &infin; 
+PASS XHTML1.0 Strict parsing &infintie; 
+PASS XHTML1.0 Strict parsing &inodot; 
+PASS XHTML1.0 Strict parsing &intcal; 
+PASS XHTML1.0 Strict parsing &int; 
+PASS XHTML1.0 Strict parsing &Int; 
+PASS XHTML1.0 Strict parsing &integers; 
+PASS XHTML1.0 Strict parsing &Integral; 
+PASS XHTML1.0 Strict parsing &intercal; 
+PASS XHTML1.0 Strict parsing &Intersection; 
+PASS XHTML1.0 Strict parsing &intlarhk; 
+PASS XHTML1.0 Strict parsing &intprod; 
+PASS XHTML1.0 Strict parsing &InvisibleComma; 
+PASS XHTML1.0 Strict parsing &InvisibleTimes; 
+PASS XHTML1.0 Strict parsing &IOcy; 
+PASS XHTML1.0 Strict parsing &iocy; 
+PASS XHTML1.0 Strict parsing &Iogon; 
+PASS XHTML1.0 Strict parsing &iogon; 
+PASS XHTML1.0 Strict parsing &Iopf; 
+PASS XHTML1.0 Strict parsing &iopf; 
+PASS XHTML1.0 Strict parsing &Iota; 
+PASS XHTML1.0 Strict parsing &iota; 
+PASS XHTML1.0 Strict parsing &iprod; 
+PASS XHTML1.0 Strict parsing &iquest; 
+PASS XHTML1.0 Strict parsing &iscr; 
+PASS XHTML1.0 Strict parsing &Iscr; 
+PASS XHTML1.0 Strict parsing &isin; 
+PASS XHTML1.0 Strict parsing &isindot; 
+PASS XHTML1.0 Strict parsing &isinE; 
+PASS XHTML1.0 Strict parsing &isins; 
+PASS XHTML1.0 Strict parsing &isinsv; 
+PASS XHTML1.0 Strict parsing &isinv; 
+PASS XHTML1.0 Strict parsing &it; 
+PASS XHTML1.0 Strict parsing &Itilde; 
+PASS XHTML1.0 Strict parsing &itilde; 
+PASS XHTML1.0 Strict parsing &Iukcy; 
+PASS XHTML1.0 Strict parsing &iukcy; 
+PASS XHTML1.0 Strict parsing &Iuml; 
+PASS XHTML1.0 Strict parsing &iuml; 
+PASS XHTML1.0 Strict parsing &Jcirc; 
+PASS XHTML1.0 Strict parsing &jcirc; 
+PASS XHTML1.0 Strict parsing &Jcy; 
+PASS XHTML1.0 Strict parsing &jcy; 
+PASS XHTML1.0 Strict parsing &Jfr; 
+PASS XHTML1.0 Strict parsing &jfr; 
+PASS XHTML1.0 Strict parsing &jmath; 
+PASS XHTML1.0 Strict parsing &Jopf; 
+PASS XHTML1.0 Strict parsing &jopf; 
+PASS XHTML1.0 Strict parsing &Jscr; 
+PASS XHTML1.0 Strict parsing &jscr; 
+PASS XHTML1.0 Strict parsing &Jsercy; 
+PASS XHTML1.0 Strict parsing &jsercy; 
+PASS XHTML1.0 Strict parsing &Jukcy; 
+PASS XHTML1.0 Strict parsing &jukcy; 
+PASS XHTML1.0 Strict parsing &Kappa; 
+PASS XHTML1.0 Strict parsing &kappa; 
+PASS XHTML1.0 Strict parsing &kappav; 
+PASS XHTML1.0 Strict parsing &Kcedil; 
+PASS XHTML1.0 Strict parsing &kcedil; 
+PASS XHTML1.0 Strict parsing &Kcy; 
+PASS XHTML1.0 Strict parsing &kcy; 
+PASS XHTML1.0 Strict parsing &Kfr; 
+PASS XHTML1.0 Strict parsing &kfr; 
+PASS XHTML1.0 Strict parsing &kgreen; 
+PASS XHTML1.0 Strict parsing &KHcy; 
+PASS XHTML1.0 Strict parsing &khcy; 
+PASS XHTML1.0 Strict parsing &KJcy; 
+PASS XHTML1.0 Strict parsing &kjcy; 
+PASS XHTML1.0 Strict parsing &Kopf; 
+PASS XHTML1.0 Strict parsing &kopf; 
+PASS XHTML1.0 Strict parsing &Kscr; 
+PASS XHTML1.0 Strict parsing &kscr; 
+PASS XHTML1.0 Strict parsing &lAarr; 
+PASS XHTML1.0 Strict parsing &Lacute; 
+PASS XHTML1.0 Strict parsing &lacute; 
+PASS XHTML1.0 Strict parsing &laemptyv; 
+PASS XHTML1.0 Strict parsing &lagran; 
+PASS XHTML1.0 Strict parsing &Lambda; 
+PASS XHTML1.0 Strict parsing &lambda; 
+PASS XHTML1.0 Strict parsing &lang; 
+PASS XHTML1.0 Strict parsing &Lang; 
+PASS XHTML1.0 Strict parsing &langd; 
+PASS XHTML1.0 Strict parsing &langle; 
+PASS XHTML1.0 Strict parsing &lap; 
+PASS XHTML1.0 Strict parsing &Laplacetrf; 
+PASS XHTML1.0 Strict parsing &laquo; 
+PASS XHTML1.0 Strict parsing &larrb; 
+PASS XHTML1.0 Strict parsing &larrbfs; 
+PASS XHTML1.0 Strict parsing &larr; 
+PASS XHTML1.0 Strict parsing &Larr; 
+PASS XHTML1.0 Strict parsing &lArr; 
+PASS XHTML1.0 Strict parsing &larrfs; 
+PASS XHTML1.0 Strict parsing &larrhk; 
+PASS XHTML1.0 Strict parsing &larrlp; 
+PASS XHTML1.0 Strict parsing &larrpl; 
+PASS XHTML1.0 Strict parsing &larrsim; 
+PASS XHTML1.0 Strict parsing &larrtl; 
+PASS XHTML1.0 Strict parsing &latail; 
+PASS XHTML1.0 Strict parsing &lAtail; 
+PASS XHTML1.0 Strict parsing &lat; 
+PASS XHTML1.0 Strict parsing &late; 
+PASS XHTML1.0 Strict parsing &lates; 
+PASS XHTML1.0 Strict parsing &lbarr; 
+PASS XHTML1.0 Strict parsing &lBarr; 
+PASS XHTML1.0 Strict parsing &lbbrk; 
+PASS XHTML1.0 Strict parsing &lbrace; 
+PASS XHTML1.0 Strict parsing &lbrack; 
+PASS XHTML1.0 Strict parsing &lbrke; 
+PASS XHTML1.0 Strict parsing &lbrksld; 
+PASS XHTML1.0 Strict parsing &lbrkslu; 
+PASS XHTML1.0 Strict parsing &Lcaron; 
+PASS XHTML1.0 Strict parsing &lcaron; 
+PASS XHTML1.0 Strict parsing &Lcedil; 
+PASS XHTML1.0 Strict parsing &lcedil; 
+PASS XHTML1.0 Strict parsing &lceil; 
+PASS XHTML1.0 Strict parsing &lcub; 
+PASS XHTML1.0 Strict parsing &Lcy; 
+PASS XHTML1.0 Strict parsing &lcy; 
+PASS XHTML1.0 Strict parsing &ldca; 
+PASS XHTML1.0 Strict parsing &ldquo; 
+PASS XHTML1.0 Strict parsing &ldquor; 
+PASS XHTML1.0 Strict parsing &ldrdhar; 
+PASS XHTML1.0 Strict parsing &ldrushar; 
+PASS XHTML1.0 Strict parsing &ldsh; 
+PASS XHTML1.0 Strict parsing &le; 
+PASS XHTML1.0 Strict parsing &lE; 
+PASS XHTML1.0 Strict parsing &LeftAngleBracket; 
+PASS XHTML1.0 Strict parsing &LeftArrowBar; 
+PASS XHTML1.0 Strict parsing &leftarrow; 
+PASS XHTML1.0 Strict parsing &LeftArrow; 
+PASS XHTML1.0 Strict parsing &Leftarrow; 
+PASS XHTML1.0 Strict parsing &LeftArrowRightArrow; 
+PASS XHTML1.0 Strict parsing &leftarrowtail; 
+PASS XHTML1.0 Strict parsing &LeftCeiling; 
+PASS XHTML1.0 Strict parsing &LeftDoubleBracket; 
+PASS XHTML1.0 Strict parsing &LeftDownTeeVector; 
+PASS XHTML1.0 Strict parsing &LeftDownVectorBar; 
+PASS XHTML1.0 Strict parsing &LeftDownVector; 
+PASS XHTML1.0 Strict parsing &LeftFloor; 
+PASS XHTML1.0 Strict parsing &leftharpoondown; 
+PASS XHTML1.0 Strict parsing &leftharpoonup; 
+PASS XHTML1.0 Strict parsing &leftleftarrows; 
+PASS XHTML1.0 Strict parsing &leftrightarrow; 
+PASS XHTML1.0 Strict parsing &LeftRightArrow; 
+PASS XHTML1.0 Strict parsing &Leftrightarrow; 
+PASS XHTML1.0 Strict parsing &leftrightarrows; 
+PASS XHTML1.0 Strict parsing &leftrightharpoons; 
+PASS XHTML1.0 Strict parsing &leftrightsquigarrow; 
+PASS XHTML1.0 Strict parsing &LeftRightVector; 
+PASS XHTML1.0 Strict parsing &LeftTeeArrow; 
+PASS XHTML1.0 Strict parsing &LeftTee; 
+PASS XHTML1.0 Strict parsing &LeftTeeVector; 
+PASS XHTML1.0 Strict parsing &leftthreetimes; 
+PASS XHTML1.0 Strict parsing &LeftTriangleBar; 
+PASS XHTML1.0 Strict parsing &LeftTriangle; 
+PASS XHTML1.0 Strict parsing &LeftTriangleEqual; 
+PASS XHTML1.0 Strict parsing &LeftUpDownVector; 
+PASS XHTML1.0 Strict parsing &LeftUpTeeVector; 
+PASS XHTML1.0 Strict parsing &LeftUpVectorBar; 
+PASS XHTML1.0 Strict parsing &LeftUpVector; 
+PASS XHTML1.0 Strict parsing &LeftVectorBar; 
+PASS XHTML1.0 Strict parsing &LeftVector; 
+PASS XHTML1.0 Strict parsing &lEg; 
+PASS XHTML1.0 Strict parsing &leg; 
+PASS XHTML1.0 Strict parsing &leq; 
+PASS XHTML1.0 Strict parsing &leqq; 
+PASS XHTML1.0 Strict parsing &leqslant; 
+PASS XHTML1.0 Strict parsing &lescc; 
+PASS XHTML1.0 Strict parsing &les; 
+PASS XHTML1.0 Strict parsing &lesdot; 
+PASS XHTML1.0 Strict parsing &lesdoto; 
+PASS XHTML1.0 Strict parsing &lesdotor; 
+PASS XHTML1.0 Strict parsing &lesg; 
+PASS XHTML1.0 Strict parsing &lesges; 
+PASS XHTML1.0 Strict parsing &lessapprox; 
+PASS XHTML1.0 Strict parsing &lessdot; 
+PASS XHTML1.0 Strict parsing &lesseqgtr; 
+PASS XHTML1.0 Strict parsing &lesseqqgtr; 
+PASS XHTML1.0 Strict parsing &LessEqualGreater; 
+PASS XHTML1.0 Strict parsing &LessFullEqual; 
+PASS XHTML1.0 Strict parsing &LessGreater; 
+PASS XHTML1.0 Strict parsing &lessgtr; 
+PASS XHTML1.0 Strict parsing &LessLess; 
+PASS XHTML1.0 Strict parsing &lesssim; 
+PASS XHTML1.0 Strict parsing &LessSlantEqual; 
+PASS XHTML1.0 Strict parsing &LessTilde; 
+PASS XHTML1.0 Strict parsing &lfisht; 
+PASS XHTML1.0 Strict parsing &lfloor; 
+PASS XHTML1.0 Strict parsing &Lfr; 
+PASS XHTML1.0 Strict parsing &lfr; 
+PASS XHTML1.0 Strict parsing &lg; 
+PASS XHTML1.0 Strict parsing &lgE; 
+PASS XHTML1.0 Strict parsing &lHar; 
+PASS XHTML1.0 Strict parsing &lhard; 
+PASS XHTML1.0 Strict parsing &lharu; 
+PASS XHTML1.0 Strict parsing &lharul; 
+PASS XHTML1.0 Strict parsing &lhblk; 
+PASS XHTML1.0 Strict parsing &LJcy; 
+PASS XHTML1.0 Strict parsing &ljcy; 
+PASS XHTML1.0 Strict parsing &llarr; 
+PASS XHTML1.0 Strict parsing &ll; 
+PASS XHTML1.0 Strict parsing &Ll; 
+PASS XHTML1.0 Strict parsing &llcorner; 
+PASS XHTML1.0 Strict parsing &Lleftarrow; 
+PASS XHTML1.0 Strict parsing &llhard; 
+PASS XHTML1.0 Strict parsing &lltri; 
+PASS XHTML1.0 Strict parsing &Lmidot; 
+PASS XHTML1.0 Strict parsing &lmidot; 
+PASS XHTML1.0 Strict parsing &lmoustache; 
+PASS XHTML1.0 Strict parsing &lmoust; 
+PASS XHTML1.0 Strict parsing &lnap; 
+PASS XHTML1.0 Strict parsing &lnapprox; 
+PASS XHTML1.0 Strict parsing &lne; 
+PASS XHTML1.0 Strict parsing &lnE; 
+PASS XHTML1.0 Strict parsing &lneq; 
+PASS XHTML1.0 Strict parsing &lneqq; 
+PASS XHTML1.0 Strict parsing &lnsim; 
+PASS XHTML1.0 Strict parsing &loang; 
+PASS XHTML1.0 Strict parsing &loarr; 
+PASS XHTML1.0 Strict parsing &lobrk; 
+PASS XHTML1.0 Strict parsing &longleftarrow; 
+PASS XHTML1.0 Strict parsing &LongLeftArrow; 
+PASS XHTML1.0 Strict parsing &Longleftarrow; 
+PASS XHTML1.0 Strict parsing &longleftrightarrow; 
+PASS XHTML1.0 Strict parsing &LongLeftRightArrow; 
+PASS XHTML1.0 Strict parsing &Longleftrightarrow; 
+PASS XHTML1.0 Strict parsing &longmapsto; 
+PASS XHTML1.0 Strict parsing &longrightarrow; 
+PASS XHTML1.0 Strict parsing &LongRightArrow; 
+PASS XHTML1.0 Strict parsing &Longrightarrow; 
+PASS XHTML1.0 Strict parsing &looparrowleft; 
+PASS XHTML1.0 Strict parsing &looparrowright; 
+PASS XHTML1.0 Strict parsing &lopar; 
+PASS XHTML1.0 Strict parsing &Lopf; 
+PASS XHTML1.0 Strict parsing &lopf; 
+PASS XHTML1.0 Strict parsing &loplus; 
+PASS XHTML1.0 Strict parsing &lotimes; 
+PASS XHTML1.0 Strict parsing &lowast; 
+PASS XHTML1.0 Strict parsing &lowbar; 
+PASS XHTML1.0 Strict parsing &LowerLeftArrow; 
+PASS XHTML1.0 Strict parsing &LowerRightArrow; 
+PASS XHTML1.0 Strict parsing &loz; 
+PASS XHTML1.0 Strict parsing &lozenge; 
+PASS XHTML1.0 Strict parsing &lozf; 
+PASS XHTML1.0 Strict parsing &lpar; 
+PASS XHTML1.0 Strict parsing &lparlt; 
+PASS XHTML1.0 Strict parsing &lrarr; 
+PASS XHTML1.0 Strict parsing &lrcorner; 
+PASS XHTML1.0 Strict parsing &lrhar; 
+PASS XHTML1.0 Strict parsing &lrhard; 
+PASS XHTML1.0 Strict parsing &lrm; 
+PASS XHTML1.0 Strict parsing &lrtri; 
+PASS XHTML1.0 Strict parsing &lsaquo; 
+PASS XHTML1.0 Strict parsing &lscr; 
+PASS XHTML1.0 Strict parsing &Lscr; 
+PASS XHTML1.0 Strict parsing &lsh; 
+PASS XHTML1.0 Strict parsing &Lsh; 
+PASS XHTML1.0 Strict parsing &lsim; 
+PASS XHTML1.0 Strict parsing &lsime; 
+PASS XHTML1.0 Strict parsing &lsimg; 
+PASS XHTML1.0 Strict parsing &lsqb; 
+PASS XHTML1.0 Strict parsing &lsquo; 
+PASS XHTML1.0 Strict parsing &lsquor; 
+PASS XHTML1.0 Strict parsing &Lstrok; 
+PASS XHTML1.0 Strict parsing &lstrok; 
+PASS XHTML1.0 Strict parsing &ltcc; 
+PASS XHTML1.0 Strict parsing &ltcir; 
+PASS XHTML1.0 Strict parsing &lt; 
+FAIL XHTML1.0 Strict parsing &LT; assert_true: expected true got false
+PASS XHTML1.0 Strict parsing &Lt; 
+PASS XHTML1.0 Strict parsing &ltdot; 
+PASS XHTML1.0 Strict parsing &lthree; 
+PASS XHTML1.0 Strict parsing &ltimes; 
+PASS XHTML1.0 Strict parsing &ltlarr; 
+PASS XHTML1.0 Strict parsing &ltquest; 
+PASS XHTML1.0 Strict parsing &ltri; 
+PASS XHTML1.0 Strict parsing &ltrie; 
+PASS XHTML1.0 Strict parsing &ltrif; 
+PASS XHTML1.0 Strict parsing &ltrPar; 
+PASS XHTML1.0 Strict parsing &lurdshar; 
+PASS XHTML1.0 Strict parsing &luruhar; 
+PASS XHTML1.0 Strict parsing &lvertneqq; 
+PASS XHTML1.0 Strict parsing &lvnE; 
+PASS XHTML1.0 Strict parsing &macr; 
+PASS XHTML1.0 Strict parsing &male; 
+PASS XHTML1.0 Strict parsing &malt; 
+PASS XHTML1.0 Strict parsing &maltese; 
+PASS XHTML1.0 Strict parsing &Map; 
+PASS XHTML1.0 Strict parsing &map; 
+PASS XHTML1.0 Strict parsing &mapsto; 
+PASS XHTML1.0 Strict parsing &mapstodown; 
+PASS XHTML1.0 Strict parsing &mapstoleft; 
+PASS XHTML1.0 Strict parsing &mapstoup; 
+PASS XHTML1.0 Strict parsing &marker; 
+PASS XHTML1.0 Strict parsing &mcomma; 
+PASS XHTML1.0 Strict parsing &Mcy; 
+PASS XHTML1.0 Strict parsing &mcy; 
+PASS XHTML1.0 Strict parsing &mdash; 
+PASS XHTML1.0 Strict parsing &mDDot; 
+PASS XHTML1.0 Strict parsing &measuredangle; 
+PASS XHTML1.0 Strict parsing &MediumSpace; 
+PASS XHTML1.0 Strict parsing &Mellintrf; 
+PASS XHTML1.0 Strict parsing &Mfr; 
+PASS XHTML1.0 Strict parsing &mfr; 
+PASS XHTML1.0 Strict parsing &mho; 
+PASS XHTML1.0 Strict parsing &micro; 
+PASS XHTML1.0 Strict parsing &midast; 
+PASS XHTML1.0 Strict parsing &midcir; 
+PASS XHTML1.0 Strict parsing &mid; 
+PASS XHTML1.0 Strict parsing &middot; 
+PASS XHTML1.0 Strict parsing &minusb; 
+PASS XHTML1.0 Strict parsing &minus; 
+PASS XHTML1.0 Strict parsing &minusd; 
+PASS XHTML1.0 Strict parsing &minusdu; 
+PASS XHTML1.0 Strict parsing &MinusPlus; 
+PASS XHTML1.0 Strict parsing &mlcp; 
+PASS XHTML1.0 Strict parsing &mldr; 
+PASS XHTML1.0 Strict parsing &mnplus; 
+PASS XHTML1.0 Strict parsing &models; 
+PASS XHTML1.0 Strict parsing &Mopf; 
+PASS XHTML1.0 Strict parsing &mopf; 
+PASS XHTML1.0 Strict parsing &mp; 
+PASS XHTML1.0 Strict parsing &mscr; 
+PASS XHTML1.0 Strict parsing &Mscr; 
+PASS XHTML1.0 Strict parsing &mstpos; 
+PASS XHTML1.0 Strict parsing &Mu; 
+PASS XHTML1.0 Strict parsing &mu; 
+PASS XHTML1.0 Strict parsing &multimap; 
+PASS XHTML1.0 Strict parsing &mumap; 
+PASS XHTML1.0 Strict parsing &nabla; 
+PASS XHTML1.0 Strict parsing &Nacute; 
+PASS XHTML1.0 Strict parsing &nacute; 
+PASS XHTML1.0 Strict parsing &nang; 
+PASS XHTML1.0 Strict parsing &nap; 
+PASS XHTML1.0 Strict parsing &napE; 
+PASS XHTML1.0 Strict parsing &napid; 
+PASS XHTML1.0 Strict parsing &napos; 
+PASS XHTML1.0 Strict parsing &napprox; 
+PASS XHTML1.0 Strict parsing &natural; 
+PASS XHTML1.0 Strict parsing &naturals; 
+PASS XHTML1.0 Strict parsing &natur; 
+PASS XHTML1.0 Strict parsing &nbsp; 
+PASS XHTML1.0 Strict parsing &nbump; 
+PASS XHTML1.0 Strict parsing &nbumpe; 
+PASS XHTML1.0 Strict parsing &ncap; 
+PASS XHTML1.0 Strict parsing &Ncaron; 
+PASS XHTML1.0 Strict parsing &ncaron; 
+PASS XHTML1.0 Strict parsing &Ncedil; 
+PASS XHTML1.0 Strict parsing &ncedil; 
+PASS XHTML1.0 Strict parsing &ncong; 
+PASS XHTML1.0 Strict parsing &ncongdot; 
+PASS XHTML1.0 Strict parsing &ncup; 
+PASS XHTML1.0 Strict parsing &Ncy; 
+PASS XHTML1.0 Strict parsing &ncy; 
+PASS XHTML1.0 Strict parsing &ndash; 
+PASS XHTML1.0 Strict parsing &nearhk; 
+PASS XHTML1.0 Strict parsing &nearr; 
+PASS XHTML1.0 Strict parsing &neArr; 
+PASS XHTML1.0 Strict parsing &nearrow; 
+PASS XHTML1.0 Strict parsing &ne; 
+PASS XHTML1.0 Strict parsing &nedot; 
+PASS XHTML1.0 Strict parsing &NegativeMediumSpace; 
+PASS XHTML1.0 Strict parsing &NegativeThickSpace; 
+PASS XHTML1.0 Strict parsing &NegativeThinSpace; 
+PASS XHTML1.0 Strict parsing &NegativeVeryThinSpace; 
+PASS XHTML1.0 Strict parsing &nequiv; 
+PASS XHTML1.0 Strict parsing &nesear; 
+PASS XHTML1.0 Strict parsing &nesim; 
+PASS XHTML1.0 Strict parsing &NestedGreaterGreater; 
+PASS XHTML1.0 Strict parsing &NestedLessLess; 
+PASS XHTML1.0 Strict parsing &NewLine; 
+PASS XHTML1.0 Strict parsing &nexist; 
+PASS XHTML1.0 Strict parsing &nexists; 
+PASS XHTML1.0 Strict parsing &Nfr; 
+PASS XHTML1.0 Strict parsing &nfr; 
+PASS XHTML1.0 Strict parsing &ngE; 
+PASS XHTML1.0 Strict parsing &nge; 
+PASS XHTML1.0 Strict parsing &ngeq; 
+PASS XHTML1.0 Strict parsing &ngeqq; 
+PASS XHTML1.0 Strict parsing &ngeqslant; 
+PASS XHTML1.0 Strict parsing &nges; 
+PASS XHTML1.0 Strict parsing &nGg; 
+PASS XHTML1.0 Strict parsing &ngsim; 
+PASS XHTML1.0 Strict parsing &nGt; 
+PASS XHTML1.0 Strict parsing &ngt; 
+PASS XHTML1.0 Strict parsing &ngtr; 
+PASS XHTML1.0 Strict parsing &nGtv; 
+PASS XHTML1.0 Strict parsing &nharr; 
+PASS XHTML1.0 Strict parsing &nhArr; 
+PASS XHTML1.0 Strict parsing &nhpar; 
+PASS XHTML1.0 Strict parsing &ni; 
+PASS XHTML1.0 Strict parsing &nis; 
+PASS XHTML1.0 Strict parsing &nisd; 
+PASS XHTML1.0 Strict parsing &niv; 
+PASS XHTML1.0 Strict parsing &NJcy; 
+PASS XHTML1.0 Strict parsing &njcy; 
+PASS XHTML1.0 Strict parsing &nlarr; 
+PASS XHTML1.0 Strict parsing &nlArr; 
+PASS XHTML1.0 Strict parsing &nldr; 
+PASS XHTML1.0 Strict parsing &nlE; 
+PASS XHTML1.0 Strict parsing &nle; 
+PASS XHTML1.0 Strict parsing &nleftarrow; 
+PASS XHTML1.0 Strict parsing &nLeftarrow; 
+PASS XHTML1.0 Strict parsing &nleftrightarrow; 
+PASS XHTML1.0 Strict parsing &nLeftrightarrow; 
+PASS XHTML1.0 Strict parsing &nleq; 
+PASS XHTML1.0 Strict parsing &nleqq; 
+PASS XHTML1.0 Strict parsing &nleqslant; 
+PASS XHTML1.0 Strict parsing &nles; 
+PASS XHTML1.0 Strict parsing &nless; 
+PASS XHTML1.0 Strict parsing &nLl; 
+PASS XHTML1.0 Strict parsing &nlsim; 
+PASS XHTML1.0 Strict parsing &nLt; 
+PASS XHTML1.0 Strict parsing &nlt; 
+PASS XHTML1.0 Strict parsing &nltri; 
+PASS XHTML1.0 Strict parsing &nltrie; 
+PASS XHTML1.0 Strict parsing &nLtv; 
+PASS XHTML1.0 Strict parsing &nmid; 
+PASS XHTML1.0 Strict parsing &NoBreak; 
+PASS XHTML1.0 Strict parsing &NonBreakingSpace; 
+PASS XHTML1.0 Strict parsing &nopf; 
+PASS XHTML1.0 Strict parsing &Nopf; 
+PASS XHTML1.0 Strict parsing &Not; 
+PASS XHTML1.0 Strict parsing &not; 
+PASS XHTML1.0 Strict parsing &NotCongruent; 
+PASS XHTML1.0 Strict parsing &NotCupCap; 
+PASS XHTML1.0 Strict parsing &NotDoubleVerticalBar; 
+PASS XHTML1.0 Strict parsing &NotElement; 
+PASS XHTML1.0 Strict parsing &NotEqual; 
+PASS XHTML1.0 Strict parsing &NotEqualTilde; 
+PASS XHTML1.0 Strict parsing &NotExists; 
+PASS XHTML1.0 Strict parsing &NotGreater; 
+PASS XHTML1.0 Strict parsing &NotGreaterEqual; 
+PASS XHTML1.0 Strict parsing &NotGreaterFullEqual; 
+PASS XHTML1.0 Strict parsing &NotGreaterGreater; 
+PASS XHTML1.0 Strict parsing &NotGreaterLess; 
+PASS XHTML1.0 Strict parsing &NotGreaterSlantEqual; 
+PASS XHTML1.0 Strict parsing &NotGreaterTilde; 
+PASS XHTML1.0 Strict parsing &NotHumpDownHump; 
+PASS XHTML1.0 Strict parsing &NotHumpEqual; 
+PASS XHTML1.0 Strict parsing &notin; 
+PASS XHTML1.0 Strict parsing &notindot; 
+PASS XHTML1.0 Strict parsing &notinE; 
+PASS XHTML1.0 Strict parsing &notinva; 
+PASS XHTML1.0 Strict parsing &notinvb; 
+PASS XHTML1.0 Strict parsing &notinvc; 
+PASS XHTML1.0 Strict parsing &NotLeftTriangleBar; 
+PASS XHTML1.0 Strict parsing &NotLeftTriangle; 
+PASS XHTML1.0 Strict parsing &NotLeftTriangleEqual; 
+PASS XHTML1.0 Strict parsing &NotLess; 
+PASS XHTML1.0 Strict parsing &NotLessEqual; 
+PASS XHTML1.0 Strict parsing &NotLessGreater; 
+PASS XHTML1.0 Strict parsing &NotLessLess; 
+PASS XHTML1.0 Strict parsing &NotLessSlantEqual; 
+PASS XHTML1.0 Strict parsing &NotLessTilde; 
+PASS XHTML1.0 Strict parsing &NotNestedGreaterGreater; 
+PASS XHTML1.0 Strict parsing &NotNestedLessLess; 
+PASS XHTML1.0 Strict parsing &notni; 
+PASS XHTML1.0 Strict parsing &notniva; 
+PASS XHTML1.0 Strict parsing &notnivb; 
+PASS XHTML1.0 Strict parsing &notnivc; 
+PASS XHTML1.0 Strict parsing &NotPrecedes; 
+PASS XHTML1.0 Strict parsing &NotPrecedesEqual; 
+PASS XHTML1.0 Strict parsing &NotPrecedesSlantEqual; 
+PASS XHTML1.0 Strict parsing &NotReverseElement; 
+PASS XHTML1.0 Strict parsing &NotRightTriangleBar; 
+PASS XHTML1.0 Strict parsing &NotRightTriangle; 
+PASS XHTML1.0 Strict parsing &NotRightTriangleEqual; 
+PASS XHTML1.0 Strict parsing &NotSquareSubset; 
+PASS XHTML1.0 Strict parsing &NotSquareSubsetEqual; 
+PASS XHTML1.0 Strict parsing &NotSquareSuperset; 
+PASS XHTML1.0 Strict parsing &NotSquareSupersetEqual; 
+PASS XHTML1.0 Strict parsing &NotSubset; 
+PASS XHTML1.0 Strict parsing &NotSubsetEqual; 
+PASS XHTML1.0 Strict parsing &NotSucceeds; 
+PASS XHTML1.0 Strict parsing &NotSucceedsEqual; 
+PASS XHTML1.0 Strict parsing &NotSucceedsSlantEqual; 
+PASS XHTML1.0 Strict parsing &NotSucceedsTilde; 
+PASS XHTML1.0 Strict parsing &NotSuperset; 
+PASS XHTML1.0 Strict parsing &NotSupersetEqual; 
+PASS XHTML1.0 Strict parsing &NotTilde; 
+PASS XHTML1.0 Strict parsing &NotTildeEqual; 
+PASS XHTML1.0 Strict parsing &NotTildeFullEqual; 
+PASS XHTML1.0 Strict parsing &NotTildeTilde; 
+PASS XHTML1.0 Strict parsing &NotVerticalBar; 
+PASS XHTML1.0 Strict parsing &nparallel; 
+PASS XHTML1.0 Strict parsing &npar; 
+PASS XHTML1.0 Strict parsing &nparsl; 
+PASS XHTML1.0 Strict parsing &npart; 
+PASS XHTML1.0 Strict parsing &npolint; 
+PASS XHTML1.0 Strict parsing &npr; 
+PASS XHTML1.0 Strict parsing &nprcue; 
+PASS XHTML1.0 Strict parsing &nprec; 
+PASS XHTML1.0 Strict parsing &npreceq; 
+PASS XHTML1.0 Strict parsing &npre; 
+PASS XHTML1.0 Strict parsing &nrarrc; 
+PASS XHTML1.0 Strict parsing &nrarr; 
+PASS XHTML1.0 Strict parsing &nrArr; 
+PASS XHTML1.0 Strict parsing &nrarrw; 
+PASS XHTML1.0 Strict parsing &nrightarrow; 
+PASS XHTML1.0 Strict parsing &nRightarrow; 
+PASS XHTML1.0 Strict parsing &nrtri; 
+PASS XHTML1.0 Strict parsing &nrtrie; 
+PASS XHTML1.0 Strict parsing &nsc; 
+PASS XHTML1.0 Strict parsing &nsccue; 
+PASS XHTML1.0 Strict parsing &nsce; 
+PASS XHTML1.0 Strict parsing &Nscr; 
+PASS XHTML1.0 Strict parsing &nscr; 
+PASS XHTML1.0 Strict parsing &nshortmid; 
+PASS XHTML1.0 Strict parsing &nshortparallel; 
+PASS XHTML1.0 Strict parsing &nsim; 
+PASS XHTML1.0 Strict parsing &nsime; 
+PASS XHTML1.0 Strict parsing &nsimeq; 
+PASS XHTML1.0 Strict parsing &nsmid; 
+PASS XHTML1.0 Strict parsing &nspar; 
+PASS XHTML1.0 Strict parsing &nsqsube; 
+PASS XHTML1.0 Strict parsing &nsqsupe; 
+PASS XHTML1.0 Strict parsing &nsub; 
+PASS XHTML1.0 Strict parsing &nsubE; 
+PASS XHTML1.0 Strict parsing &nsube; 
+PASS XHTML1.0 Strict parsing &nsubset; 
+PASS XHTML1.0 Strict parsing &nsubseteq; 
+PASS XHTML1.0 Strict parsing &nsubseteqq; 
+PASS XHTML1.0 Strict parsing &nsucc; 
+PASS XHTML1.0 Strict parsing &nsucceq; 
+PASS XHTML1.0 Strict parsing &nsup; 
+PASS XHTML1.0 Strict parsing &nsupE; 
+PASS XHTML1.0 Strict parsing &nsupe; 
+PASS XHTML1.0 Strict parsing &nsupset; 
+PASS XHTML1.0 Strict parsing &nsupseteq; 
+PASS XHTML1.0 Strict parsing &nsupseteqq; 
+PASS XHTML1.0 Strict parsing &ntgl; 
+PASS XHTML1.0 Strict parsing &Ntilde; 
+PASS XHTML1.0 Strict parsing &ntilde; 
+PASS XHTML1.0 Strict parsing &ntlg; 
+PASS XHTML1.0 Strict parsing &ntriangleleft; 
+PASS XHTML1.0 Strict parsing &ntrianglelefteq; 
+PASS XHTML1.0 Strict parsing &ntriangleright; 
+PASS XHTML1.0 Strict parsing &ntrianglerighteq; 
+PASS XHTML1.0 Strict parsing &Nu; 
+PASS XHTML1.0 Strict parsing &nu; 
+PASS XHTML1.0 Strict parsing &num; 
+PASS XHTML1.0 Strict parsing &numero; 
+PASS XHTML1.0 Strict parsing &numsp; 
+PASS XHTML1.0 Strict parsing &nvap; 
+PASS XHTML1.0 Strict parsing &nvdash; 
+PASS XHTML1.0 Strict parsing &nvDash; 
+PASS XHTML1.0 Strict parsing &nVdash; 
+PASS XHTML1.0 Strict parsing &nVDash; 
+PASS XHTML1.0 Strict parsing &nvge; 
+PASS XHTML1.0 Strict parsing &nvgt; 
+PASS XHTML1.0 Strict parsing &nvHarr; 
+PASS XHTML1.0 Strict parsing &nvinfin; 
+PASS XHTML1.0 Strict parsing &nvlArr; 
+PASS XHTML1.0 Strict parsing &nvle; 
+FAIL XHTML1.0 Strict parsing &nvlt; assert_equals: XHTML1.0 Strict parsing the entity reference caused a parse error; expected 3 but got 1
+PASS XHTML1.0 Strict parsing &nvltrie; 
+PASS XHTML1.0 Strict parsing &nvrArr; 
+PASS XHTML1.0 Strict parsing &nvrtrie; 
+PASS XHTML1.0 Strict parsing &nvsim; 
+PASS XHTML1.0 Strict parsing &nwarhk; 
+PASS XHTML1.0 Strict parsing &nwarr; 
+PASS XHTML1.0 Strict parsing &nwArr; 
+PASS XHTML1.0 Strict parsing &nwarrow; 
+PASS XHTML1.0 Strict parsing &nwnear; 
+PASS XHTML1.0 Strict parsing &Oacute; 
+PASS XHTML1.0 Strict parsing &oacute; 
+PASS XHTML1.0 Strict parsing &oast; 
+PASS XHTML1.0 Strict parsing &Ocirc; 
+PASS XHTML1.0 Strict parsing &ocirc; 
+PASS XHTML1.0 Strict parsing &ocir; 
+PASS XHTML1.0 Strict parsing &Ocy; 
+PASS XHTML1.0 Strict parsing &ocy; 
+PASS XHTML1.0 Strict parsing &odash; 
+PASS XHTML1.0 Strict parsing &Odblac; 
+PASS XHTML1.0 Strict parsing &odblac; 
+PASS XHTML1.0 Strict parsing &odiv; 
+PASS XHTML1.0 Strict parsing &odot; 
+PASS XHTML1.0 Strict parsing &odsold; 
+PASS XHTML1.0 Strict parsing &OElig; 
+PASS XHTML1.0 Strict parsing &oelig; 
+PASS XHTML1.0 Strict parsing &ofcir; 
+PASS XHTML1.0 Strict parsing &Ofr; 
+PASS XHTML1.0 Strict parsing &ofr; 
+PASS XHTML1.0 Strict parsing &ogon; 
+PASS XHTML1.0 Strict parsing &Ograve; 
+PASS XHTML1.0 Strict parsing &ograve; 
+PASS XHTML1.0 Strict parsing &ogt; 
+PASS XHTML1.0 Strict parsing &ohbar; 
+PASS XHTML1.0 Strict parsing &ohm; 
+PASS XHTML1.0 Strict parsing &oint; 
+PASS XHTML1.0 Strict parsing &olarr; 
+PASS XHTML1.0 Strict parsing &olcir; 
+PASS XHTML1.0 Strict parsing &olcross; 
+PASS XHTML1.0 Strict parsing &oline; 
+PASS XHTML1.0 Strict parsing &olt; 
+PASS XHTML1.0 Strict parsing &Omacr; 
+PASS XHTML1.0 Strict parsing &omacr; 
+PASS XHTML1.0 Strict parsing &Omega; 
+PASS XHTML1.0 Strict parsing &omega; 
+PASS XHTML1.0 Strict parsing &Omicron; 
+PASS XHTML1.0 Strict parsing &omicron; 
+PASS XHTML1.0 Strict parsing &omid; 
+PASS XHTML1.0 Strict parsing &ominus; 
+PASS XHTML1.0 Strict parsing &Oopf; 
+PASS XHTML1.0 Strict parsing &oopf; 
+PASS XHTML1.0 Strict parsing &opar; 
+PASS XHTML1.0 Strict parsing &OpenCurlyDoubleQuote; 
+PASS XHTML1.0 Strict parsing &OpenCurlyQuote; 
+PASS XHTML1.0 Strict parsing &operp; 
+PASS XHTML1.0 Strict parsing &oplus; 
+PASS XHTML1.0 Strict parsing &orarr; 
+PASS XHTML1.0 Strict parsing &Or; 
+PASS XHTML1.0 Strict parsing &or; 
+PASS XHTML1.0 Strict parsing &ord; 
+PASS XHTML1.0 Strict parsing &order; 
+PASS XHTML1.0 Strict parsing &orderof; 
+PASS XHTML1.0 Strict parsing &ordf; 
+PASS XHTML1.0 Strict parsing &ordm; 
+PASS XHTML1.0 Strict parsing &origof; 
+PASS XHTML1.0 Strict parsing &oror; 
+PASS XHTML1.0 Strict parsing &orslope; 
+PASS XHTML1.0 Strict parsing &orv; 
+PASS XHTML1.0 Strict parsing &oS; 
+PASS XHTML1.0 Strict parsing &Oscr; 
+PASS XHTML1.0 Strict parsing &oscr; 
+PASS XHTML1.0 Strict parsing &Oslash; 
+PASS XHTML1.0 Strict parsing &oslash; 
+PASS XHTML1.0 Strict parsing &osol; 
+PASS XHTML1.0 Strict parsing &Otilde; 
+PASS XHTML1.0 Strict parsing &otilde; 
+PASS XHTML1.0 Strict parsing &otimesas; 
+PASS XHTML1.0 Strict parsing &Otimes; 
+PASS XHTML1.0 Strict parsing &otimes; 
+PASS XHTML1.0 Strict parsing &Ouml; 
+PASS XHTML1.0 Strict parsing &ouml; 
+PASS XHTML1.0 Strict parsing &ovbar; 
+PASS XHTML1.0 Strict parsing &OverBar; 
+PASS XHTML1.0 Strict parsing &OverBrace; 
+PASS XHTML1.0 Strict parsing &OverBracket; 
+PASS XHTML1.0 Strict parsing &OverParenthesis; 
+PASS XHTML1.0 Strict parsing &para; 
+PASS XHTML1.0 Strict parsing &parallel; 
+PASS XHTML1.0 Strict parsing &par; 
+PASS XHTML1.0 Strict parsing &parsim; 
+PASS XHTML1.0 Strict parsing &parsl; 
+PASS XHTML1.0 Strict parsing &part; 
+PASS XHTML1.0 Strict parsing &PartialD; 
+PASS XHTML1.0 Strict parsing &Pcy; 
+PASS XHTML1.0 Strict parsing &pcy; 
+PASS XHTML1.0 Strict parsing &percnt; 
+PASS XHTML1.0 Strict parsing &period; 
+PASS XHTML1.0 Strict parsing &permil; 
+PASS XHTML1.0 Strict parsing &perp; 
+PASS XHTML1.0 Strict parsing &pertenk; 
+PASS XHTML1.0 Strict parsing &Pfr; 
+PASS XHTML1.0 Strict parsing &pfr; 
+PASS XHTML1.0 Strict parsing &Phi; 
+PASS XHTML1.0 Strict parsing &phi; 
+PASS XHTML1.0 Strict parsing &phiv; 
+PASS XHTML1.0 Strict parsing &phmmat; 
+PASS XHTML1.0 Strict parsing &phone; 
+PASS XHTML1.0 Strict parsing &Pi; 
+PASS XHTML1.0 Strict parsing &pi; 
+PASS XHTML1.0 Strict parsing &pitchfork; 
+PASS XHTML1.0 Strict parsing &piv; 
+PASS XHTML1.0 Strict parsing &planck; 
+PASS XHTML1.0 Strict parsing &planckh; 
+PASS XHTML1.0 Strict parsing &plankv; 
+PASS XHTML1.0 Strict parsing &plusacir; 
+PASS XHTML1.0 Strict parsing &plusb; 
+PASS XHTML1.0 Strict parsing &pluscir; 
+PASS XHTML1.0 Strict parsing &plus; 
+PASS XHTML1.0 Strict parsing &plusdo; 
+PASS XHTML1.0 Strict parsing &plusdu; 
+PASS XHTML1.0 Strict parsing &pluse; 
+PASS XHTML1.0 Strict parsing &PlusMinus; 
+PASS XHTML1.0 Strict parsing &plusmn; 
+PASS XHTML1.0 Strict parsing &plussim; 
+PASS XHTML1.0 Strict parsing &plustwo; 
+PASS XHTML1.0 Strict parsing &pm; 
+PASS XHTML1.0 Strict parsing &Poincareplane; 
+PASS XHTML1.0 Strict parsing &pointint; 
+PASS XHTML1.0 Strict parsing &popf; 
+PASS XHTML1.0 Strict parsing &Popf; 
+PASS XHTML1.0 Strict parsing &pound; 
+PASS XHTML1.0 Strict parsing &prap; 
+PASS XHTML1.0 Strict parsing &Pr; 
+PASS XHTML1.0 Strict parsing &pr; 
+PASS XHTML1.0 Strict parsing &prcue; 
+PASS XHTML1.0 Strict parsing &precapprox; 
+PASS XHTML1.0 Strict parsing &prec; 
+PASS XHTML1.0 Strict parsing &preccurlyeq; 
+PASS XHTML1.0 Strict parsing &Precedes; 
+PASS XHTML1.0 Strict parsing &PrecedesEqual; 
+PASS XHTML1.0 Strict parsing &PrecedesSlantEqual; 
+PASS XHTML1.0 Strict parsing &PrecedesTilde; 
+PASS XHTML1.0 Strict parsing &preceq; 
+PASS XHTML1.0 Strict parsing &precnapprox; 
+PASS XHTML1.0 Strict parsing &precneqq; 
+PASS XHTML1.0 Strict parsing &precnsim; 
+PASS XHTML1.0 Strict parsing &pre; 
+PASS XHTML1.0 Strict parsing &prE; 
+PASS XHTML1.0 Strict parsing &precsim; 
+PASS XHTML1.0 Strict parsing &prime; 
+PASS XHTML1.0 Strict parsing &Prime; 
+PASS XHTML1.0 Strict parsing &primes; 
+PASS XHTML1.0 Strict parsing &prnap; 
+PASS XHTML1.0 Strict parsing &prnE; 
+PASS XHTML1.0 Strict parsing &prnsim; 
+PASS XHTML1.0 Strict parsing &prod; 
+PASS XHTML1.0 Strict parsing &Product; 
+PASS XHTML1.0 Strict parsing &profalar; 
+PASS XHTML1.0 Strict parsing &profline; 
+PASS XHTML1.0 Strict parsing &profsurf; 
+PASS XHTML1.0 Strict parsing &prop; 
+PASS XHTML1.0 Strict parsing &Proportional; 
+PASS XHTML1.0 Strict parsing &Proportion; 
+PASS XHTML1.0 Strict parsing &propto; 
+PASS XHTML1.0 Strict parsing &prsim; 
+PASS XHTML1.0 Strict parsing &prurel; 
+PASS XHTML1.0 Strict parsing &Pscr; 
+PASS XHTML1.0 Strict parsing &pscr; 
+PASS XHTML1.0 Strict parsing &Psi; 
+PASS XHTML1.0 Strict parsing &psi; 
+PASS XHTML1.0 Strict parsing &puncsp; 
+PASS XHTML1.0 Strict parsing &Qfr; 
+PASS XHTML1.0 Strict parsing &qfr; 
+PASS XHTML1.0 Strict parsing &qint; 
+PASS XHTML1.0 Strict parsing &qopf; 
+PASS XHTML1.0 Strict parsing &Qopf; 
+PASS XHTML1.0 Strict parsing &qprime; 
+PASS XHTML1.0 Strict parsing &Qscr; 
+PASS XHTML1.0 Strict parsing &qscr; 
+PASS XHTML1.0 Strict parsing &quaternions; 
+PASS XHTML1.0 Strict parsing &quatint; 
+PASS XHTML1.0 Strict parsing &quest; 
+PASS XHTML1.0 Strict parsing &questeq; 
+PASS XHTML1.0 Strict parsing &quot; 
+PASS XHTML1.0 Strict parsing &QUOT; 
+PASS XHTML1.0 Strict parsing &rAarr; 
+PASS XHTML1.0 Strict parsing &race; 
+PASS XHTML1.0 Strict parsing &Racute; 
+PASS XHTML1.0 Strict parsing &racute; 
+PASS XHTML1.0 Strict parsing &radic; 
+PASS XHTML1.0 Strict parsing &raemptyv; 
+PASS XHTML1.0 Strict parsing &rang; 
+PASS XHTML1.0 Strict parsing &Rang; 
+PASS XHTML1.0 Strict parsing &rangd; 
+PASS XHTML1.0 Strict parsing &range; 
+PASS XHTML1.0 Strict parsing &rangle; 
+PASS XHTML1.0 Strict parsing &raquo; 
+PASS XHTML1.0 Strict parsing &rarrap; 
+PASS XHTML1.0 Strict parsing &rarrb; 
+PASS XHTML1.0 Strict parsing &rarrbfs; 
+PASS XHTML1.0 Strict parsing &rarrc; 
+PASS XHTML1.0 Strict parsing &rarr; 
+PASS XHTML1.0 Strict parsing &Rarr; 
+PASS XHTML1.0 Strict parsing &rArr; 
+PASS XHTML1.0 Strict parsing &rarrfs; 
+PASS XHTML1.0 Strict parsing &rarrhk; 
+PASS XHTML1.0 Strict parsing &rarrlp; 
+PASS XHTML1.0 Strict parsing &rarrpl; 
+PASS XHTML1.0 Strict parsing &rarrsim; 
+PASS XHTML1.0 Strict parsing &Rarrtl; 
+PASS XHTML1.0 Strict parsing &rarrtl; 
+PASS XHTML1.0 Strict parsing &rarrw; 
+PASS XHTML1.0 Strict parsing &ratail; 
+PASS XHTML1.0 Strict parsing &rAtail; 
+PASS XHTML1.0 Strict parsing &ratio; 
+PASS XHTML1.0 Strict parsing &rationals; 
+PASS XHTML1.0 Strict parsing &rbarr; 
+PASS XHTML1.0 Strict parsing &rBarr; 
+PASS XHTML1.0 Strict parsing &RBarr; 
+PASS XHTML1.0 Strict parsing &rbbrk; 
+PASS XHTML1.0 Strict parsing &rbrace; 
+PASS XHTML1.0 Strict parsing &rbrack; 
+PASS XHTML1.0 Strict parsing &rbrke; 
+PASS XHTML1.0 Strict parsing &rbrksld; 
+PASS XHTML1.0 Strict parsing &rbrkslu; 
+PASS XHTML1.0 Strict parsing &Rcaron; 
+PASS XHTML1.0 Strict parsing &rcaron; 
+PASS XHTML1.0 Strict parsing &Rcedil; 
+PASS XHTML1.0 Strict parsing &rcedil; 
+PASS XHTML1.0 Strict parsing &rceil; 
+PASS XHTML1.0 Strict parsing &rcub; 
+PASS XHTML1.0 Strict parsing &Rcy; 
+PASS XHTML1.0 Strict parsing &rcy; 
+PASS XHTML1.0 Strict parsing &rdca; 
+PASS XHTML1.0 Strict parsing &rdldhar; 
+PASS XHTML1.0 Strict parsing &rdquo; 
+PASS XHTML1.0 Strict parsing &rdquor; 
+PASS XHTML1.0 Strict parsing &rdsh; 
+PASS XHTML1.0 Strict parsing &real; 
+PASS XHTML1.0 Strict parsing &realine; 
+PASS XHTML1.0 Strict parsing &realpart; 
+PASS XHTML1.0 Strict parsing &reals; 
+PASS XHTML1.0 Strict parsing &Re; 
+PASS XHTML1.0 Strict parsing &rect; 
+PASS XHTML1.0 Strict parsing &reg; 
+PASS XHTML1.0 Strict parsing &REG; 
+PASS XHTML1.0 Strict parsing &ReverseElement; 
+PASS XHTML1.0 Strict parsing &ReverseEquilibrium; 
+PASS XHTML1.0 Strict parsing &ReverseUpEquilibrium; 
+PASS XHTML1.0 Strict parsing &rfisht; 
+PASS XHTML1.0 Strict parsing &rfloor; 
+PASS XHTML1.0 Strict parsing &rfr; 
+PASS XHTML1.0 Strict parsing &Rfr; 
+PASS XHTML1.0 Strict parsing &rHar; 
+PASS XHTML1.0 Strict parsing &rhard; 
+PASS XHTML1.0 Strict parsing &rharu; 
+PASS XHTML1.0 Strict parsing &rharul; 
+PASS XHTML1.0 Strict parsing &Rho; 
+PASS XHTML1.0 Strict parsing &rho; 
+PASS XHTML1.0 Strict parsing &rhov; 
+PASS XHTML1.0 Strict parsing &RightAngleBracket; 
+PASS XHTML1.0 Strict parsing &RightArrowBar; 
+PASS XHTML1.0 Strict parsing &rightarrow; 
+PASS XHTML1.0 Strict parsing &RightArrow; 
+PASS XHTML1.0 Strict parsing &Rightarrow; 
+PASS XHTML1.0 Strict parsing &RightArrowLeftArrow; 
+PASS XHTML1.0 Strict parsing &rightarrowtail; 
+PASS XHTML1.0 Strict parsing &RightCeiling; 
+PASS XHTML1.0 Strict parsing &RightDoubleBracket; 
+PASS XHTML1.0 Strict parsing &RightDownTeeVector; 
+PASS XHTML1.0 Strict parsing &RightDownVectorBar; 
+PASS XHTML1.0 Strict parsing &RightDownVector; 
+PASS XHTML1.0 Strict parsing &RightFloor; 
+PASS XHTML1.0 Strict parsing &rightharpoondown; 
+PASS XHTML1.0 Strict parsing &rightharpoonup; 
+PASS XHTML1.0 Strict parsing &rightleftarrows; 
+PASS XHTML1.0 Strict parsing &rightleftharpoons; 
+PASS XHTML1.0 Strict parsing &rightrightarrows; 
+PASS XHTML1.0 Strict parsing &rightsquigarrow; 
+PASS XHTML1.0 Strict parsing &RightTeeArrow; 
+PASS XHTML1.0 Strict parsing &RightTee; 
+PASS XHTML1.0 Strict parsing &RightTeeVector; 
+PASS XHTML1.0 Strict parsing &rightthreetimes; 
+PASS XHTML1.0 Strict parsing &RightTriangleBar; 
+PASS XHTML1.0 Strict parsing &RightTriangle; 
+PASS XHTML1.0 Strict parsing &RightTriangleEqual; 
+PASS XHTML1.0 Strict parsing &RightUpDownVector; 
+PASS XHTML1.0 Strict parsing &RightUpTeeVector; 
+PASS XHTML1.0 Strict parsing &RightUpVectorBar; 
+PASS XHTML1.0 Strict parsing &RightUpVector; 
+PASS XHTML1.0 Strict parsing &RightVectorBar; 
+PASS XHTML1.0 Strict parsing &RightVector; 
+PASS XHTML1.0 Strict parsing &ring; 
+PASS XHTML1.0 Strict parsing &risingdotseq; 
+PASS XHTML1.0 Strict parsing &rlarr; 
+PASS XHTML1.0 Strict parsing &rlhar; 
+PASS XHTML1.0 Strict parsing &rlm; 
+PASS XHTML1.0 Strict parsing &rmoustache; 
+PASS XHTML1.0 Strict parsing &rmoust; 
+PASS XHTML1.0 Strict parsing &rnmid; 
+PASS XHTML1.0 Strict parsing &roang; 
+PASS XHTML1.0 Strict parsing &roarr; 
+PASS XHTML1.0 Strict parsing &robrk; 
+PASS XHTML1.0 Strict parsing &ropar; 
+PASS XHTML1.0 Strict parsing &ropf; 
+PASS XHTML1.0 Strict parsing &Ropf; 
+PASS XHTML1.0 Strict parsing &roplus; 
+PASS XHTML1.0 Strict parsing &rotimes; 
+PASS XHTML1.0 Strict parsing &RoundImplies; 
+PASS XHTML1.0 Strict parsing &rpar; 
+PASS XHTML1.0 Strict parsing &rpargt; 
+PASS XHTML1.0 Strict parsing &rppolint; 
+PASS XHTML1.0 Strict parsing &rrarr; 
+PASS XHTML1.0 Strict parsing &Rrightarrow; 
+PASS XHTML1.0 Strict parsing &rsaquo; 
+PASS XHTML1.0 Strict parsing &rscr; 
+PASS XHTML1.0 Strict parsing &Rscr; 
+PASS XHTML1.0 Strict parsing &rsh; 
+PASS XHTML1.0 Strict parsing &Rsh; 
+PASS XHTML1.0 Strict parsing &rsqb; 
+PASS XHTML1.0 Strict parsing &rsquo; 
+PASS XHTML1.0 Strict parsing &rsquor; 
+PASS XHTML1.0 Strict parsing &rthree; 
+PASS XHTML1.0 Strict parsing &rtimes; 
+PASS XHTML1.0 Strict parsing &rtri; 
+PASS XHTML1.0 Strict parsing &rtrie; 
+PASS XHTML1.0 Strict parsing &rtrif; 
+PASS XHTML1.0 Strict parsing &rtriltri; 
+PASS XHTML1.0 Strict parsing &RuleDelayed; 
+PASS XHTML1.0 Strict parsing &ruluhar; 
+PASS XHTML1.0 Strict parsing &rx; 
+PASS XHTML1.0 Strict parsing &Sacute; 
+PASS XHTML1.0 Strict parsing &sacute; 
+PASS XHTML1.0 Strict parsing &sbquo; 
+PASS XHTML1.0 Strict parsing &scap; 
+PASS XHTML1.0 Strict parsing &Scaron; 
+PASS XHTML1.0 Strict parsing &scaron; 
+PASS XHTML1.0 Strict parsing &Sc; 
+PASS XHTML1.0 Strict parsing &sc; 
+PASS XHTML1.0 Strict parsing &sccue; 
+PASS XHTML1.0 Strict parsing &sce; 
+PASS XHTML1.0 Strict parsing &scE; 
+PASS XHTML1.0 Strict parsing &Scedil; 
+PASS XHTML1.0 Strict parsing &scedil; 
+PASS XHTML1.0 Strict parsing &Scirc; 
+PASS XHTML1.0 Strict parsing &scirc; 
+PASS XHTML1.0 Strict parsing &scnap; 
+PASS XHTML1.0 Strict parsing &scnE; 
+PASS XHTML1.0 Strict parsing &scnsim; 
+PASS XHTML1.0 Strict parsing &scpolint; 
+PASS XHTML1.0 Strict parsing &scsim; 
+PASS XHTML1.0 Strict parsing &Scy; 
+PASS XHTML1.0 Strict parsing &scy; 
+PASS XHTML1.0 Strict parsing &sdotb; 
+PASS XHTML1.0 Strict parsing &sdot; 
+PASS XHTML1.0 Strict parsing &sdote; 
+PASS XHTML1.0 Strict parsing &searhk; 
+PASS XHTML1.0 Strict parsing &searr; 
+PASS XHTML1.0 Strict parsing &seArr; 
+PASS XHTML1.0 Strict parsing &searrow; 
+PASS XHTML1.0 Strict parsing &sect; 
+PASS XHTML1.0 Strict parsing &semi; 
+PASS XHTML1.0 Strict parsing &seswar; 
+PASS XHTML1.0 Strict parsing &setminus; 
+PASS XHTML1.0 Strict parsing &setmn; 
+PASS XHTML1.0 Strict parsing &sext; 
+PASS XHTML1.0 Strict parsing &Sfr; 
+PASS XHTML1.0 Strict parsing &sfr; 
+PASS XHTML1.0 Strict parsing &sfrown; 
+PASS XHTML1.0 Strict parsing &sharp; 
+PASS XHTML1.0 Strict parsing &SHCHcy; 
+PASS XHTML1.0 Strict parsing &shchcy; 
+PASS XHTML1.0 Strict parsing &SHcy; 
+PASS XHTML1.0 Strict parsing &shcy; 
+PASS XHTML1.0 Strict parsing &ShortDownArrow; 
+PASS XHTML1.0 Strict parsing &ShortLeftArrow; 
+PASS XHTML1.0 Strict parsing &shortmid; 
+PASS XHTML1.0 Strict parsing &shortparallel; 
+PASS XHTML1.0 Strict parsing &ShortRightArrow; 
+PASS XHTML1.0 Strict parsing &ShortUpArrow; 
+PASS XHTML1.0 Strict parsing &shy; 
+PASS XHTML1.0 Strict parsing &Sigma; 
+PASS XHTML1.0 Strict parsing &sigma; 
+PASS XHTML1.0 Strict parsing &sigmaf; 
+PASS XHTML1.0 Strict parsing &sigmav; 
+PASS XHTML1.0 Strict parsing &sim; 
+PASS XHTML1.0 Strict parsing &simdot; 
+PASS XHTML1.0 Strict parsing &sime; 
+PASS XHTML1.0 Strict parsing &simeq; 
+PASS XHTML1.0 Strict parsing &simg; 
+PASS XHTML1.0 Strict parsing &simgE; 
+PASS XHTML1.0 Strict parsing &siml; 
+PASS XHTML1.0 Strict parsing &simlE; 
+PASS XHTML1.0 Strict parsing &simne; 
+PASS XHTML1.0 Strict parsing &simplus; 
+PASS XHTML1.0 Strict parsing &simrarr; 
+PASS XHTML1.0 Strict parsing &slarr; 
+PASS XHTML1.0 Strict parsing &SmallCircle; 
+PASS XHTML1.0 Strict parsing &smallsetminus; 
+PASS XHTML1.0 Strict parsing &smashp; 
+PASS XHTML1.0 Strict parsing &smeparsl; 
+PASS XHTML1.0 Strict parsing &smid; 
+PASS XHTML1.0 Strict parsing &smile; 
+PASS XHTML1.0 Strict parsing &smt; 
+PASS XHTML1.0 Strict parsing &smte; 
+PASS XHTML1.0 Strict parsing &smtes; 
+PASS XHTML1.0 Strict parsing &SOFTcy; 
+PASS XHTML1.0 Strict parsing &softcy; 
+PASS XHTML1.0 Strict parsing &solbar; 
+PASS XHTML1.0 Strict parsing &solb; 
+PASS XHTML1.0 Strict parsing &sol; 
+PASS XHTML1.0 Strict parsing &Sopf; 
+PASS XHTML1.0 Strict parsing &sopf; 
+PASS XHTML1.0 Strict parsing &spades; 
+PASS XHTML1.0 Strict parsing &spadesuit; 
+PASS XHTML1.0 Strict parsing &spar; 
+PASS XHTML1.0 Strict parsing &sqcap; 
+PASS XHTML1.0 Strict parsing &sqcaps; 
+PASS XHTML1.0 Strict parsing &sqcup; 
+PASS XHTML1.0 Strict parsing &sqcups; 
+PASS XHTML1.0 Strict parsing &Sqrt; 
+PASS XHTML1.0 Strict parsing &sqsub; 
+PASS XHTML1.0 Strict parsing &sqsube; 
+PASS XHTML1.0 Strict parsing &sqsubset; 
+PASS XHTML1.0 Strict parsing &sqsubseteq; 
+PASS XHTML1.0 Strict parsing &sqsup; 
+PASS XHTML1.0 Strict parsing &sqsupe; 
+PASS XHTML1.0 Strict parsing &sqsupset; 
+PASS XHTML1.0 Strict parsing &sqsupseteq; 
+PASS XHTML1.0 Strict parsing &square; 
+PASS XHTML1.0 Strict parsing &Square; 
+PASS XHTML1.0 Strict parsing &SquareIntersection; 
+PASS XHTML1.0 Strict parsing &SquareSubset; 
+PASS XHTML1.0 Strict parsing &SquareSubsetEqual; 
+PASS XHTML1.0 Strict parsing &SquareSuperset; 
+PASS XHTML1.0 Strict parsing &SquareSupersetEqual; 
+PASS XHTML1.0 Strict parsing &SquareUnion; 
+PASS XHTML1.0 Strict parsing &squarf; 
+PASS XHTML1.0 Strict parsing &squ; 
+PASS XHTML1.0 Strict parsing &squf; 
+PASS XHTML1.0 Strict parsing &srarr; 
+PASS XHTML1.0 Strict parsing &Sscr; 
+PASS XHTML1.0 Strict parsing &sscr; 
+PASS XHTML1.0 Strict parsing &ssetmn; 
+PASS XHTML1.0 Strict parsing &ssmile; 
+PASS XHTML1.0 Strict parsing &sstarf; 
+PASS XHTML1.0 Strict parsing &Star; 
+PASS XHTML1.0 Strict parsing &star; 
+PASS XHTML1.0 Strict parsing &starf; 
+PASS XHTML1.0 Strict parsing &straightepsilon; 
+PASS XHTML1.0 Strict parsing &straightphi; 
+PASS XHTML1.0 Strict parsing &strns; 
+PASS XHTML1.0 Strict parsing &sub; 
+PASS XHTML1.0 Strict parsing &Sub; 
+PASS XHTML1.0 Strict parsing &subdot; 
+PASS XHTML1.0 Strict parsing &subE; 
+PASS XHTML1.0 Strict parsing &sube; 
+PASS XHTML1.0 Strict parsing &subedot; 
+PASS XHTML1.0 Strict parsing &submult; 
+PASS XHTML1.0 Strict parsing &subnE; 
+PASS XHTML1.0 Strict parsing &subne; 
+PASS XHTML1.0 Strict parsing &subplus; 
+PASS XHTML1.0 Strict parsing &subrarr; 
+PASS XHTML1.0 Strict parsing &subset; 
+PASS XHTML1.0 Strict parsing &Subset; 
+PASS XHTML1.0 Strict parsing &subseteq; 
+PASS XHTML1.0 Strict parsing &subseteqq; 
+PASS XHTML1.0 Strict parsing &SubsetEqual; 
+PASS XHTML1.0 Strict parsing &subsetneq; 
+PASS XHTML1.0 Strict parsing &subsetneqq; 
+PASS XHTML1.0 Strict parsing &subsim; 
+PASS XHTML1.0 Strict parsing &subsub; 
+PASS XHTML1.0 Strict parsing &subsup; 
+PASS XHTML1.0 Strict parsing &succapprox; 
+PASS XHTML1.0 Strict parsing &succ; 
+PASS XHTML1.0 Strict parsing &succcurlyeq; 
+PASS XHTML1.0 Strict parsing &Succeeds; 
+PASS XHTML1.0 Strict parsing &SucceedsEqual; 
+PASS XHTML1.0 Strict parsing &SucceedsSlantEqual; 
+PASS XHTML1.0 Strict parsing &SucceedsTilde; 
+PASS XHTML1.0 Strict parsing &succeq; 
+PASS XHTML1.0 Strict parsing &succnapprox; 
+PASS XHTML1.0 Strict parsing &succneqq; 
+PASS XHTML1.0 Strict parsing &succnsim; 
+PASS XHTML1.0 Strict parsing &succsim; 
+PASS XHTML1.0 Strict parsing &SuchThat; 
+PASS XHTML1.0 Strict parsing &sum; 
+PASS XHTML1.0 Strict parsing &Sum; 
+PASS XHTML1.0 Strict parsing &sung; 
+PASS XHTML1.0 Strict parsing &sup1; 
+PASS XHTML1.0 Strict parsing &sup2; 
+PASS XHTML1.0 Strict parsing &sup3; 
+PASS XHTML1.0 Strict parsing &sup; 
+PASS XHTML1.0 Strict parsing &Sup; 
+PASS XHTML1.0 Strict parsing &supdot; 
+PASS XHTML1.0 Strict parsing &supdsub; 
+PASS XHTML1.0 Strict parsing &supE; 
+PASS XHTML1.0 Strict parsing &supe; 
+PASS XHTML1.0 Strict parsing &supedot; 
+PASS XHTML1.0 Strict parsing &Superset; 
+PASS XHTML1.0 Strict parsing &SupersetEqual; 
+PASS XHTML1.0 Strict parsing &suphsol; 
+PASS XHTML1.0 Strict parsing &suphsub; 
+PASS XHTML1.0 Strict parsing &suplarr; 
+PASS XHTML1.0 Strict parsing &supmult; 
+PASS XHTML1.0 Strict parsing &supnE; 
+PASS XHTML1.0 Strict parsing &supne; 
+PASS XHTML1.0 Strict parsing &supplus; 
+PASS XHTML1.0 Strict parsing &supset; 
+PASS XHTML1.0 Strict parsing &Supset; 
+PASS XHTML1.0 Strict parsing &supseteq; 
+PASS XHTML1.0 Strict parsing &supseteqq; 
+PASS XHTML1.0 Strict parsing &supsetneq; 
+PASS XHTML1.0 Strict parsing &supsetneqq; 
+PASS XHTML1.0 Strict parsing &supsim; 
+PASS XHTML1.0 Strict parsing &supsub; 
+PASS XHTML1.0 Strict parsing &supsup; 
+PASS XHTML1.0 Strict parsing &swarhk; 
+PASS XHTML1.0 Strict parsing &swarr; 
+PASS XHTML1.0 Strict parsing &swArr; 
+PASS XHTML1.0 Strict parsing &swarrow; 
+PASS XHTML1.0 Strict parsing &swnwar; 
+PASS XHTML1.0 Strict parsing &szlig; 
+PASS XHTML1.0 Strict parsing &Tab; 
+PASS XHTML1.0 Strict parsing &target; 
+PASS XHTML1.0 Strict parsing &Tau; 
+PASS XHTML1.0 Strict parsing &tau; 
+PASS XHTML1.0 Strict parsing &tbrk; 
+PASS XHTML1.0 Strict parsing &Tcaron; 
+PASS XHTML1.0 Strict parsing &tcaron; 
+PASS XHTML1.0 Strict parsing &Tcedil; 
+PASS XHTML1.0 Strict parsing &tcedil; 
+PASS XHTML1.0 Strict parsing &Tcy; 
+PASS XHTML1.0 Strict parsing &tcy; 
+PASS XHTML1.0 Strict parsing &tdot; 
+PASS XHTML1.0 Strict parsing &telrec; 
+PASS XHTML1.0 Strict parsing &Tfr; 
+PASS XHTML1.0 Strict parsing &tfr; 
+PASS XHTML1.0 Strict parsing &there4; 
+PASS XHTML1.0 Strict parsing &therefore; 
+PASS XHTML1.0 Strict parsing &Therefore; 
+PASS XHTML1.0 Strict parsing &Theta; 
+PASS XHTML1.0 Strict parsing &theta; 
+PASS XHTML1.0 Strict parsing &thetasym; 
+PASS XHTML1.0 Strict parsing &thetav; 
+PASS XHTML1.0 Strict parsing &thickapprox; 
+PASS XHTML1.0 Strict parsing &thicksim; 
+PASS XHTML1.0 Strict parsing &ThickSpace; 
+PASS XHTML1.0 Strict parsing &ThinSpace; 
+PASS XHTML1.0 Strict parsing &thinsp; 
+PASS XHTML1.0 Strict parsing &thkap; 
+PASS XHTML1.0 Strict parsing &thksim; 
+PASS XHTML1.0 Strict parsing &THORN; 
+PASS XHTML1.0 Strict parsing &thorn; 
+PASS XHTML1.0 Strict parsing &tilde; 
+PASS XHTML1.0 Strict parsing &Tilde; 
+PASS XHTML1.0 Strict parsing &TildeEqual; 
+PASS XHTML1.0 Strict parsing &TildeFullEqual; 
+PASS XHTML1.0 Strict parsing &TildeTilde; 
+PASS XHTML1.0 Strict parsing &timesbar; 
+PASS XHTML1.0 Strict parsing &timesb; 
+PASS XHTML1.0 Strict parsing &times; 
+PASS XHTML1.0 Strict parsing &timesd; 
+PASS XHTML1.0 Strict parsing &tint; 
+PASS XHTML1.0 Strict parsing &toea; 
+PASS XHTML1.0 Strict parsing &topbot; 
+PASS XHTML1.0 Strict parsing &topcir; 
+PASS XHTML1.0 Strict parsing &top; 
+PASS XHTML1.0 Strict parsing &Topf; 
+PASS XHTML1.0 Strict parsing &topf; 
+PASS XHTML1.0 Strict parsing &topfork; 
+PASS XHTML1.0 Strict parsing &tosa; 
+PASS XHTML1.0 Strict parsing &tprime; 
+PASS XHTML1.0 Strict parsing &trade; 
+PASS XHTML1.0 Strict parsing &TRADE; 
+PASS XHTML1.0 Strict parsing &triangle; 
+PASS XHTML1.0 Strict parsing &triangledown; 
+PASS XHTML1.0 Strict parsing &triangleleft; 
+PASS XHTML1.0 Strict parsing &trianglelefteq; 
+PASS XHTML1.0 Strict parsing &triangleq; 
+PASS XHTML1.0 Strict parsing &triangleright; 
+PASS XHTML1.0 Strict parsing &trianglerighteq; 
+PASS XHTML1.0 Strict parsing &tridot; 
+PASS XHTML1.0 Strict parsing &trie; 
+PASS XHTML1.0 Strict parsing &triminus; 
+PASS XHTML1.0 Strict parsing &TripleDot; 
+PASS XHTML1.0 Strict parsing &triplus; 
+PASS XHTML1.0 Strict parsing &trisb; 
+PASS XHTML1.0 Strict parsing &tritime; 
+PASS XHTML1.0 Strict parsing &trpezium; 
+PASS XHTML1.0 Strict parsing &Tscr; 
+PASS XHTML1.0 Strict parsing &tscr; 
+PASS XHTML1.0 Strict parsing &TScy; 
+PASS XHTML1.0 Strict parsing &tscy; 
+PASS XHTML1.0 Strict parsing &TSHcy; 
+PASS XHTML1.0 Strict parsing &tshcy; 
+PASS XHTML1.0 Strict parsing &Tstrok; 
+PASS XHTML1.0 Strict parsing &tstrok; 
+PASS XHTML1.0 Strict parsing &twixt; 
+PASS XHTML1.0 Strict parsing &twoheadleftarrow; 
+PASS XHTML1.0 Strict parsing &twoheadrightarrow; 
+PASS XHTML1.0 Strict parsing &Uacute; 
+PASS XHTML1.0 Strict parsing &uacute; 
+PASS XHTML1.0 Strict parsing &uarr; 
+PASS XHTML1.0 Strict parsing &Uarr; 
+PASS XHTML1.0 Strict parsing &uArr; 
+PASS XHTML1.0 Strict parsing &Uarrocir; 
+PASS XHTML1.0 Strict parsing &Ubrcy; 
+PASS XHTML1.0 Strict parsing &ubrcy; 
+PASS XHTML1.0 Strict parsing &Ubreve; 
+PASS XHTML1.0 Strict parsing &ubreve; 
+PASS XHTML1.0 Strict parsing &Ucirc; 
+PASS XHTML1.0 Strict parsing &ucirc; 
+PASS XHTML1.0 Strict parsing &Ucy; 
+PASS XHTML1.0 Strict parsing &ucy; 
+PASS XHTML1.0 Strict parsing &udarr; 
+PASS XHTML1.0 Strict parsing &Udblac; 
+PASS XHTML1.0 Strict parsing &udblac; 
+PASS XHTML1.0 Strict parsing &udhar; 
+PASS XHTML1.0 Strict parsing &ufisht; 
+PASS XHTML1.0 Strict parsing &Ufr; 
+PASS XHTML1.0 Strict parsing &ufr; 
+PASS XHTML1.0 Strict parsing &Ugrave; 
+PASS XHTML1.0 Strict parsing &ugrave; 
+PASS XHTML1.0 Strict parsing &uHar; 
+PASS XHTML1.0 Strict parsing &uharl; 
+PASS XHTML1.0 Strict parsing &uharr; 
+PASS XHTML1.0 Strict parsing &uhblk; 
+PASS XHTML1.0 Strict parsing &ulcorn; 
+PASS XHTML1.0 Strict parsing &ulcorner; 
+PASS XHTML1.0 Strict parsing &ulcrop; 
+PASS XHTML1.0 Strict parsing &ultri; 
+PASS XHTML1.0 Strict parsing &Umacr; 
+PASS XHTML1.0 Strict parsing &umacr; 
+PASS XHTML1.0 Strict parsing &uml; 
+PASS XHTML1.0 Strict parsing &UnderBar; 
+PASS XHTML1.0 Strict parsing &UnderBrace; 
+PASS XHTML1.0 Strict parsing &UnderBracket; 
+PASS XHTML1.0 Strict parsing &UnderParenthesis; 
+PASS XHTML1.0 Strict parsing &Union; 
+PASS XHTML1.0 Strict parsing &UnionPlus; 
+PASS XHTML1.0 Strict parsing &Uogon; 
+PASS XHTML1.0 Strict parsing &uogon; 
+PASS XHTML1.0 Strict parsing &Uopf; 
+PASS XHTML1.0 Strict parsing &uopf; 
+PASS XHTML1.0 Strict parsing &UpArrowBar; 
+PASS XHTML1.0 Strict parsing &uparrow; 
+PASS XHTML1.0 Strict parsing &UpArrow; 
+PASS XHTML1.0 Strict parsing &Uparrow; 
+PASS XHTML1.0 Strict parsing &UpArrowDownArrow; 
+PASS XHTML1.0 Strict parsing &updownarrow; 
+PASS XHTML1.0 Strict parsing &UpDownArrow; 
+PASS XHTML1.0 Strict parsing &Updownarrow; 
+PASS XHTML1.0 Strict parsing &UpEquilibrium; 
+PASS XHTML1.0 Strict parsing &upharpoonleft; 
+PASS XHTML1.0 Strict parsing &upharpoonright; 
+PASS XHTML1.0 Strict parsing &uplus; 
+PASS XHTML1.0 Strict parsing &UpperLeftArrow; 
+PASS XHTML1.0 Strict parsing &UpperRightArrow; 
+PASS XHTML1.0 Strict parsing &upsi; 
+PASS XHTML1.0 Strict parsing &Upsi; 
+PASS XHTML1.0 Strict parsing &upsih; 
+PASS XHTML1.0 Strict parsing &Upsilon; 
+PASS XHTML1.0 Strict parsing &upsilon; 
+PASS XHTML1.0 Strict parsing &UpTeeArrow; 
+PASS XHTML1.0 Strict parsing &UpTee; 
+PASS XHTML1.0 Strict parsing &upuparrows; 
+PASS XHTML1.0 Strict parsing &urcorn; 
+PASS XHTML1.0 Strict parsing &urcorner; 
+PASS XHTML1.0 Strict parsing &urcrop; 
+PASS XHTML1.0 Strict parsing &Uring; 
+PASS XHTML1.0 Strict parsing &uring; 
+PASS XHTML1.0 Strict parsing &urtri; 
+PASS XHTML1.0 Strict parsing &Uscr; 
+PASS XHTML1.0 Strict parsing &uscr; 
+PASS XHTML1.0 Strict parsing &utdot; 
+PASS XHTML1.0 Strict parsing &Utilde; 
+PASS XHTML1.0 Strict parsing &utilde; 
+PASS XHTML1.0 Strict parsing &utri; 
+PASS XHTML1.0 Strict parsing &utrif; 
+PASS XHTML1.0 Strict parsing &uuarr; 
+PASS XHTML1.0 Strict parsing &Uuml; 
+PASS XHTML1.0 Strict parsing &uuml; 
+PASS XHTML1.0 Strict parsing &uwangle; 
+PASS XHTML1.0 Strict parsing &vangrt; 
+PASS XHTML1.0 Strict parsing &varepsilon; 
+PASS XHTML1.0 Strict parsing &varkappa; 
+PASS XHTML1.0 Strict parsing &varnothing; 
+PASS XHTML1.0 Strict parsing &varphi; 
+PASS XHTML1.0 Strict parsing &varpi; 
+PASS XHTML1.0 Strict parsing &varpropto; 
+PASS XHTML1.0 Strict parsing &varr; 
+PASS XHTML1.0 Strict parsing &vArr; 
+PASS XHTML1.0 Strict parsing &varrho; 
+PASS XHTML1.0 Strict parsing &varsigma; 
+PASS XHTML1.0 Strict parsing &varsubsetneq; 
+PASS XHTML1.0 Strict parsing &varsubsetneqq; 
+PASS XHTML1.0 Strict parsing &varsupsetneq; 
+PASS XHTML1.0 Strict parsing &varsupsetneqq; 
+PASS XHTML1.0 Strict parsing &vartheta; 
+PASS XHTML1.0 Strict parsing &vartriangleleft; 
+PASS XHTML1.0 Strict parsing &vartriangleright; 
+PASS XHTML1.0 Strict parsing &vBar; 
+PASS XHTML1.0 Strict parsing &Vbar; 
+PASS XHTML1.0 Strict parsing &vBarv; 
+PASS XHTML1.0 Strict parsing &Vcy; 
+PASS XHTML1.0 Strict parsing &vcy; 
+PASS XHTML1.0 Strict parsing &vdash; 
+PASS XHTML1.0 Strict parsing &vDash; 
+PASS XHTML1.0 Strict parsing &Vdash; 
+PASS XHTML1.0 Strict parsing &VDash; 
+PASS XHTML1.0 Strict parsing &Vdashl; 
+PASS XHTML1.0 Strict parsing &veebar; 
+PASS XHTML1.0 Strict parsing &vee; 
+PASS XHTML1.0 Strict parsing &Vee; 
+PASS XHTML1.0 Strict parsing &veeeq; 
+PASS XHTML1.0 Strict parsing &vellip; 
+PASS XHTML1.0 Strict parsing &verbar; 
+PASS XHTML1.0 Strict parsing &Verbar; 
+PASS XHTML1.0 Strict parsing &vert; 
+PASS XHTML1.0 Strict parsing &Vert; 
+PASS XHTML1.0 Strict parsing &VerticalBar; 
+PASS XHTML1.0 Strict parsing &VerticalLine; 
+PASS XHTML1.0 Strict parsing &VerticalSeparator; 
+PASS XHTML1.0 Strict parsing &VerticalTilde; 
+PASS XHTML1.0 Strict parsing &VeryThinSpace; 
+PASS XHTML1.0 Strict parsing &Vfr; 
+PASS XHTML1.0 Strict parsing &vfr; 
+PASS XHTML1.0 Strict parsing &vltri; 
+PASS XHTML1.0 Strict parsing &vnsub; 
+PASS XHTML1.0 Strict parsing &vnsup; 
+PASS XHTML1.0 Strict parsing &Vopf; 
+PASS XHTML1.0 Strict parsing &vopf; 
+PASS XHTML1.0 Strict parsing &vprop; 
+PASS XHTML1.0 Strict parsing &vrtri; 
+PASS XHTML1.0 Strict parsing &Vscr; 
+PASS XHTML1.0 Strict parsing &vscr; 
+PASS XHTML1.0 Strict parsing &vsubnE; 
+PASS XHTML1.0 Strict parsing &vsubne; 
+PASS XHTML1.0 Strict parsing &vsupnE; 
+PASS XHTML1.0 Strict parsing &vsupne; 
+PASS XHTML1.0 Strict parsing &Vvdash; 
+PASS XHTML1.0 Strict parsing &vzigzag; 
+PASS XHTML1.0 Strict parsing &Wcirc; 
+PASS XHTML1.0 Strict parsing &wcirc; 
+PASS XHTML1.0 Strict parsing &wedbar; 
+PASS XHTML1.0 Strict parsing &wedge; 
+PASS XHTML1.0 Strict parsing &Wedge; 
+PASS XHTML1.0 Strict parsing &wedgeq; 
+PASS XHTML1.0 Strict parsing &weierp; 
+PASS XHTML1.0 Strict parsing &Wfr; 
+PASS XHTML1.0 Strict parsing &wfr; 
+PASS XHTML1.0 Strict parsing &Wopf; 
+PASS XHTML1.0 Strict parsing &wopf; 
+PASS XHTML1.0 Strict parsing &wp; 
+PASS XHTML1.0 Strict parsing &wr; 
+PASS XHTML1.0 Strict parsing &wreath; 
+PASS XHTML1.0 Strict parsing &Wscr; 
+PASS XHTML1.0 Strict parsing &wscr; 
+PASS XHTML1.0 Strict parsing &xcap; 
+PASS XHTML1.0 Strict parsing &xcirc; 
+PASS XHTML1.0 Strict parsing &xcup; 
+PASS XHTML1.0 Strict parsing &xdtri; 
+PASS XHTML1.0 Strict parsing &Xfr; 
+PASS XHTML1.0 Strict parsing &xfr; 
+PASS XHTML1.0 Strict parsing &xharr; 
+PASS XHTML1.0 Strict parsing &xhArr; 
+PASS XHTML1.0 Strict parsing &Xi; 
+PASS XHTML1.0 Strict parsing &xi; 
+PASS XHTML1.0 Strict parsing &xlarr; 
+PASS XHTML1.0 Strict parsing &xlArr; 
+PASS XHTML1.0 Strict parsing &xmap; 
+PASS XHTML1.0 Strict parsing &xnis; 
+PASS XHTML1.0 Strict parsing &xodot; 
+PASS XHTML1.0 Strict parsing &Xopf; 
+PASS XHTML1.0 Strict parsing &xopf; 
+PASS XHTML1.0 Strict parsing &xoplus; 
+PASS XHTML1.0 Strict parsing &xotime; 
+PASS XHTML1.0 Strict parsing &xrarr; 
+PASS XHTML1.0 Strict parsing &xrArr; 
+PASS XHTML1.0 Strict parsing &Xscr; 
+PASS XHTML1.0 Strict parsing &xscr; 
+PASS XHTML1.0 Strict parsing &xsqcup; 
+PASS XHTML1.0 Strict parsing &xuplus; 
+PASS XHTML1.0 Strict parsing &xutri; 
+PASS XHTML1.0 Strict parsing &xvee; 
+PASS XHTML1.0 Strict parsing &xwedge; 
+PASS XHTML1.0 Strict parsing &Yacute; 
+PASS XHTML1.0 Strict parsing &yacute; 
+PASS XHTML1.0 Strict parsing &YAcy; 
+PASS XHTML1.0 Strict parsing &yacy; 
+PASS XHTML1.0 Strict parsing &Ycirc; 
+PASS XHTML1.0 Strict parsing &ycirc; 
+PASS XHTML1.0 Strict parsing &Ycy; 
+PASS XHTML1.0 Strict parsing &ycy; 
+PASS XHTML1.0 Strict parsing &yen; 
+PASS XHTML1.0 Strict parsing &Yfr; 
+PASS XHTML1.0 Strict parsing &yfr; 
+PASS XHTML1.0 Strict parsing &YIcy; 
+PASS XHTML1.0 Strict parsing &yicy; 
+PASS XHTML1.0 Strict parsing &Yopf; 
+PASS XHTML1.0 Strict parsing &yopf; 
+PASS XHTML1.0 Strict parsing &Yscr; 
+PASS XHTML1.0 Strict parsing &yscr; 
+PASS XHTML1.0 Strict parsing &YUcy; 
+PASS XHTML1.0 Strict parsing &yucy; 
+PASS XHTML1.0 Strict parsing &yuml; 
+PASS XHTML1.0 Strict parsing &Yuml; 
+PASS XHTML1.0 Strict parsing &Zacute; 
+PASS XHTML1.0 Strict parsing &zacute; 
+PASS XHTML1.0 Strict parsing &Zcaron; 
+PASS XHTML1.0 Strict parsing &zcaron; 
+PASS XHTML1.0 Strict parsing &Zcy; 
+PASS XHTML1.0 Strict parsing &zcy; 
+PASS XHTML1.0 Strict parsing &Zdot; 
+PASS XHTML1.0 Strict parsing &zdot; 
+PASS XHTML1.0 Strict parsing &zeetrf; 
+PASS XHTML1.0 Strict parsing &ZeroWidthSpace; 
+PASS XHTML1.0 Strict parsing &Zeta; 
+PASS XHTML1.0 Strict parsing &zeta; 
+PASS XHTML1.0 Strict parsing &zfr; 
+PASS XHTML1.0 Strict parsing &Zfr; 
+PASS XHTML1.0 Strict parsing &ZHcy; 
+PASS XHTML1.0 Strict parsing &zhcy; 
+PASS XHTML1.0 Strict parsing &zigrarr; 
+PASS XHTML1.0 Strict parsing &zopf; 
+PASS XHTML1.0 Strict parsing &Zopf; 
+PASS XHTML1.0 Strict parsing &Zscr; 
+PASS XHTML1.0 Strict parsing &zscr; 
+PASS XHTML1.0 Strict parsing &zwj; 
+PASS XHTML1.0 Strict parsing &zwnj; 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-3.htm b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-3.htm
new file mode 100644
index 0000000..a86c7a84
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-3.htm
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta name=timeout content=long>
+<title>HTML entities for various XHTML Doctype</title>
+<link rel=help href="http://w3c.github.io/html/xhtml.html#parsing-xhtml-documents">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe id="test" src="xhtml-mathml-dtd-entity-support.htm"></iframe>
+
+<script>
+onload = () => document.getElementById("test").contentWindow.run(
+["application/xhtml+xml", "-//W3C//DTD XHTML 1.0 Strict//EN", "foo", "XHTML1.0 Strict"]);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-4-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-4-expected.txt
new file mode 100644
index 0000000..138ec8a0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-4-expected.txt
@@ -0,0 +1,2129 @@
+This is a testharness.js-based test.
+Found 2125 tests; 2122 PASS, 3 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS XHTML1.0 Frameset parsing &Aacute; 
+PASS XHTML1.0 Frameset parsing &aacute; 
+PASS XHTML1.0 Frameset parsing &Abreve; 
+PASS XHTML1.0 Frameset parsing &abreve; 
+PASS XHTML1.0 Frameset parsing &ac; 
+PASS XHTML1.0 Frameset parsing &acd; 
+PASS XHTML1.0 Frameset parsing &acE; 
+PASS XHTML1.0 Frameset parsing &Acirc; 
+PASS XHTML1.0 Frameset parsing &acirc; 
+PASS XHTML1.0 Frameset parsing &acute; 
+PASS XHTML1.0 Frameset parsing &Acy; 
+PASS XHTML1.0 Frameset parsing &acy; 
+PASS XHTML1.0 Frameset parsing &AElig; 
+PASS XHTML1.0 Frameset parsing &aelig; 
+PASS XHTML1.0 Frameset parsing &af; 
+PASS XHTML1.0 Frameset parsing &Afr; 
+PASS XHTML1.0 Frameset parsing &afr; 
+PASS XHTML1.0 Frameset parsing &Agrave; 
+PASS XHTML1.0 Frameset parsing &agrave; 
+PASS XHTML1.0 Frameset parsing &alefsym; 
+PASS XHTML1.0 Frameset parsing &aleph; 
+PASS XHTML1.0 Frameset parsing &Alpha; 
+PASS XHTML1.0 Frameset parsing &alpha; 
+PASS XHTML1.0 Frameset parsing &Amacr; 
+PASS XHTML1.0 Frameset parsing &amacr; 
+PASS XHTML1.0 Frameset parsing &amalg; 
+PASS XHTML1.0 Frameset parsing &amp; 
+FAIL XHTML1.0 Frameset parsing &AMP; assert_true: expected true got false
+PASS XHTML1.0 Frameset parsing &andand; 
+PASS XHTML1.0 Frameset parsing &And; 
+PASS XHTML1.0 Frameset parsing &and; 
+PASS XHTML1.0 Frameset parsing &andd; 
+PASS XHTML1.0 Frameset parsing &andslope; 
+PASS XHTML1.0 Frameset parsing &andv; 
+PASS XHTML1.0 Frameset parsing &ang; 
+PASS XHTML1.0 Frameset parsing &ange; 
+PASS XHTML1.0 Frameset parsing &angle; 
+PASS XHTML1.0 Frameset parsing &angmsdaa; 
+PASS XHTML1.0 Frameset parsing &angmsdab; 
+PASS XHTML1.0 Frameset parsing &angmsdac; 
+PASS XHTML1.0 Frameset parsing &angmsdad; 
+PASS XHTML1.0 Frameset parsing &angmsdae; 
+PASS XHTML1.0 Frameset parsing &angmsdaf; 
+PASS XHTML1.0 Frameset parsing &angmsdag; 
+PASS XHTML1.0 Frameset parsing &angmsdah; 
+PASS XHTML1.0 Frameset parsing &angmsd; 
+PASS XHTML1.0 Frameset parsing &angrt; 
+PASS XHTML1.0 Frameset parsing &angrtvb; 
+PASS XHTML1.0 Frameset parsing &angrtvbd; 
+PASS XHTML1.0 Frameset parsing &angsph; 
+PASS XHTML1.0 Frameset parsing &angst; 
+PASS XHTML1.0 Frameset parsing &angzarr; 
+PASS XHTML1.0 Frameset parsing &Aogon; 
+PASS XHTML1.0 Frameset parsing &aogon; 
+PASS XHTML1.0 Frameset parsing &Aopf; 
+PASS XHTML1.0 Frameset parsing &aopf; 
+PASS XHTML1.0 Frameset parsing &apacir; 
+PASS XHTML1.0 Frameset parsing &ap; 
+PASS XHTML1.0 Frameset parsing &apE; 
+PASS XHTML1.0 Frameset parsing &ape; 
+PASS XHTML1.0 Frameset parsing &apid; 
+PASS XHTML1.0 Frameset parsing &apos; 
+PASS XHTML1.0 Frameset parsing &ApplyFunction; 
+PASS XHTML1.0 Frameset parsing &approx; 
+PASS XHTML1.0 Frameset parsing &approxeq; 
+PASS XHTML1.0 Frameset parsing &Aring; 
+PASS XHTML1.0 Frameset parsing &aring; 
+PASS XHTML1.0 Frameset parsing &Ascr; 
+PASS XHTML1.0 Frameset parsing &ascr; 
+PASS XHTML1.0 Frameset parsing &Assign; 
+PASS XHTML1.0 Frameset parsing &ast; 
+PASS XHTML1.0 Frameset parsing &asymp; 
+PASS XHTML1.0 Frameset parsing &asympeq; 
+PASS XHTML1.0 Frameset parsing &Atilde; 
+PASS XHTML1.0 Frameset parsing &atilde; 
+PASS XHTML1.0 Frameset parsing &Auml; 
+PASS XHTML1.0 Frameset parsing &auml; 
+PASS XHTML1.0 Frameset parsing &awconint; 
+PASS XHTML1.0 Frameset parsing &awint; 
+PASS XHTML1.0 Frameset parsing &backcong; 
+PASS XHTML1.0 Frameset parsing &backepsilon; 
+PASS XHTML1.0 Frameset parsing &backprime; 
+PASS XHTML1.0 Frameset parsing &backsim; 
+PASS XHTML1.0 Frameset parsing &backsimeq; 
+PASS XHTML1.0 Frameset parsing &Backslash; 
+PASS XHTML1.0 Frameset parsing &Barv; 
+PASS XHTML1.0 Frameset parsing &barvee; 
+PASS XHTML1.0 Frameset parsing &barwed; 
+PASS XHTML1.0 Frameset parsing &Barwed; 
+PASS XHTML1.0 Frameset parsing &barwedge; 
+PASS XHTML1.0 Frameset parsing &bbrk; 
+PASS XHTML1.0 Frameset parsing &bbrktbrk; 
+PASS XHTML1.0 Frameset parsing &bcong; 
+PASS XHTML1.0 Frameset parsing &Bcy; 
+PASS XHTML1.0 Frameset parsing &bcy; 
+PASS XHTML1.0 Frameset parsing &bdquo; 
+PASS XHTML1.0 Frameset parsing &becaus; 
+PASS XHTML1.0 Frameset parsing &because; 
+PASS XHTML1.0 Frameset parsing &Because; 
+PASS XHTML1.0 Frameset parsing &bemptyv; 
+PASS XHTML1.0 Frameset parsing &bepsi; 
+PASS XHTML1.0 Frameset parsing &bernou; 
+PASS XHTML1.0 Frameset parsing &Bernoullis; 
+PASS XHTML1.0 Frameset parsing &Beta; 
+PASS XHTML1.0 Frameset parsing &beta; 
+PASS XHTML1.0 Frameset parsing &beth; 
+PASS XHTML1.0 Frameset parsing &between; 
+PASS XHTML1.0 Frameset parsing &Bfr; 
+PASS XHTML1.0 Frameset parsing &bfr; 
+PASS XHTML1.0 Frameset parsing &bigcap; 
+PASS XHTML1.0 Frameset parsing &bigcirc; 
+PASS XHTML1.0 Frameset parsing &bigcup; 
+PASS XHTML1.0 Frameset parsing &bigodot; 
+PASS XHTML1.0 Frameset parsing &bigoplus; 
+PASS XHTML1.0 Frameset parsing &bigotimes; 
+PASS XHTML1.0 Frameset parsing &bigsqcup; 
+PASS XHTML1.0 Frameset parsing &bigstar; 
+PASS XHTML1.0 Frameset parsing &bigtriangledown; 
+PASS XHTML1.0 Frameset parsing &bigtriangleup; 
+PASS XHTML1.0 Frameset parsing &biguplus; 
+PASS XHTML1.0 Frameset parsing &bigvee; 
+PASS XHTML1.0 Frameset parsing &bigwedge; 
+PASS XHTML1.0 Frameset parsing &bkarow; 
+PASS XHTML1.0 Frameset parsing &blacklozenge; 
+PASS XHTML1.0 Frameset parsing &blacksquare; 
+PASS XHTML1.0 Frameset parsing &blacktriangle; 
+PASS XHTML1.0 Frameset parsing &blacktriangledown; 
+PASS XHTML1.0 Frameset parsing &blacktriangleleft; 
+PASS XHTML1.0 Frameset parsing &blacktriangleright; 
+PASS XHTML1.0 Frameset parsing &blank; 
+PASS XHTML1.0 Frameset parsing &blk12; 
+PASS XHTML1.0 Frameset parsing &blk14; 
+PASS XHTML1.0 Frameset parsing &blk34; 
+PASS XHTML1.0 Frameset parsing &block; 
+PASS XHTML1.0 Frameset parsing &bne; 
+PASS XHTML1.0 Frameset parsing &bnequiv; 
+PASS XHTML1.0 Frameset parsing &bNot; 
+PASS XHTML1.0 Frameset parsing &bnot; 
+PASS XHTML1.0 Frameset parsing &Bopf; 
+PASS XHTML1.0 Frameset parsing &bopf; 
+PASS XHTML1.0 Frameset parsing &bot; 
+PASS XHTML1.0 Frameset parsing &bottom; 
+PASS XHTML1.0 Frameset parsing &bowtie; 
+PASS XHTML1.0 Frameset parsing &boxbox; 
+PASS XHTML1.0 Frameset parsing &boxdl; 
+PASS XHTML1.0 Frameset parsing &boxdL; 
+PASS XHTML1.0 Frameset parsing &boxDl; 
+PASS XHTML1.0 Frameset parsing &boxDL; 
+PASS XHTML1.0 Frameset parsing &boxdr; 
+PASS XHTML1.0 Frameset parsing &boxdR; 
+PASS XHTML1.0 Frameset parsing &boxDr; 
+PASS XHTML1.0 Frameset parsing &boxDR; 
+PASS XHTML1.0 Frameset parsing &boxh; 
+PASS XHTML1.0 Frameset parsing &boxH; 
+PASS XHTML1.0 Frameset parsing &boxhd; 
+PASS XHTML1.0 Frameset parsing &boxHd; 
+PASS XHTML1.0 Frameset parsing &boxhD; 
+PASS XHTML1.0 Frameset parsing &boxHD; 
+PASS XHTML1.0 Frameset parsing &boxhu; 
+PASS XHTML1.0 Frameset parsing &boxHu; 
+PASS XHTML1.0 Frameset parsing &boxhU; 
+PASS XHTML1.0 Frameset parsing &boxHU; 
+PASS XHTML1.0 Frameset parsing &boxminus; 
+PASS XHTML1.0 Frameset parsing &boxplus; 
+PASS XHTML1.0 Frameset parsing &boxtimes; 
+PASS XHTML1.0 Frameset parsing &boxul; 
+PASS XHTML1.0 Frameset parsing &boxuL; 
+PASS XHTML1.0 Frameset parsing &boxUl; 
+PASS XHTML1.0 Frameset parsing &boxUL; 
+PASS XHTML1.0 Frameset parsing &boxur; 
+PASS XHTML1.0 Frameset parsing &boxuR; 
+PASS XHTML1.0 Frameset parsing &boxUr; 
+PASS XHTML1.0 Frameset parsing &boxUR; 
+PASS XHTML1.0 Frameset parsing &boxv; 
+PASS XHTML1.0 Frameset parsing &boxV; 
+PASS XHTML1.0 Frameset parsing &boxvh; 
+PASS XHTML1.0 Frameset parsing &boxvH; 
+PASS XHTML1.0 Frameset parsing &boxVh; 
+PASS XHTML1.0 Frameset parsing &boxVH; 
+PASS XHTML1.0 Frameset parsing &boxvl; 
+PASS XHTML1.0 Frameset parsing &boxvL; 
+PASS XHTML1.0 Frameset parsing &boxVl; 
+PASS XHTML1.0 Frameset parsing &boxVL; 
+PASS XHTML1.0 Frameset parsing &boxvr; 
+PASS XHTML1.0 Frameset parsing &boxvR; 
+PASS XHTML1.0 Frameset parsing &boxVr; 
+PASS XHTML1.0 Frameset parsing &boxVR; 
+PASS XHTML1.0 Frameset parsing &bprime; 
+PASS XHTML1.0 Frameset parsing &breve; 
+PASS XHTML1.0 Frameset parsing &Breve; 
+PASS XHTML1.0 Frameset parsing &brvbar; 
+PASS XHTML1.0 Frameset parsing &bscr; 
+PASS XHTML1.0 Frameset parsing &Bscr; 
+PASS XHTML1.0 Frameset parsing &bsemi; 
+PASS XHTML1.0 Frameset parsing &bsim; 
+PASS XHTML1.0 Frameset parsing &bsime; 
+PASS XHTML1.0 Frameset parsing &bsolb; 
+PASS XHTML1.0 Frameset parsing &bsol; 
+PASS XHTML1.0 Frameset parsing &bsolhsub; 
+PASS XHTML1.0 Frameset parsing &bull; 
+PASS XHTML1.0 Frameset parsing &bullet; 
+PASS XHTML1.0 Frameset parsing &bump; 
+PASS XHTML1.0 Frameset parsing &bumpE; 
+PASS XHTML1.0 Frameset parsing &bumpe; 
+PASS XHTML1.0 Frameset parsing &Bumpeq; 
+PASS XHTML1.0 Frameset parsing &bumpeq; 
+PASS XHTML1.0 Frameset parsing &Cacute; 
+PASS XHTML1.0 Frameset parsing &cacute; 
+PASS XHTML1.0 Frameset parsing &capand; 
+PASS XHTML1.0 Frameset parsing &capbrcup; 
+PASS XHTML1.0 Frameset parsing &capcap; 
+PASS XHTML1.0 Frameset parsing &cap; 
+PASS XHTML1.0 Frameset parsing &Cap; 
+PASS XHTML1.0 Frameset parsing &capcup; 
+PASS XHTML1.0 Frameset parsing &capdot; 
+PASS XHTML1.0 Frameset parsing &CapitalDifferentialD; 
+PASS XHTML1.0 Frameset parsing &caps; 
+PASS XHTML1.0 Frameset parsing &caret; 
+PASS XHTML1.0 Frameset parsing &caron; 
+PASS XHTML1.0 Frameset parsing &Cayleys; 
+PASS XHTML1.0 Frameset parsing &ccaps; 
+PASS XHTML1.0 Frameset parsing &Ccaron; 
+PASS XHTML1.0 Frameset parsing &ccaron; 
+PASS XHTML1.0 Frameset parsing &Ccedil; 
+PASS XHTML1.0 Frameset parsing &ccedil; 
+PASS XHTML1.0 Frameset parsing &Ccirc; 
+PASS XHTML1.0 Frameset parsing &ccirc; 
+PASS XHTML1.0 Frameset parsing &Cconint; 
+PASS XHTML1.0 Frameset parsing &ccups; 
+PASS XHTML1.0 Frameset parsing &ccupssm; 
+PASS XHTML1.0 Frameset parsing &Cdot; 
+PASS XHTML1.0 Frameset parsing &cdot; 
+PASS XHTML1.0 Frameset parsing &cedil; 
+PASS XHTML1.0 Frameset parsing &Cedilla; 
+PASS XHTML1.0 Frameset parsing &cemptyv; 
+PASS XHTML1.0 Frameset parsing &cent; 
+PASS XHTML1.0 Frameset parsing &centerdot; 
+PASS XHTML1.0 Frameset parsing &CenterDot; 
+PASS XHTML1.0 Frameset parsing &cfr; 
+PASS XHTML1.0 Frameset parsing &Cfr; 
+PASS XHTML1.0 Frameset parsing &CHcy; 
+PASS XHTML1.0 Frameset parsing &chcy; 
+PASS XHTML1.0 Frameset parsing &check; 
+PASS XHTML1.0 Frameset parsing &checkmark; 
+PASS XHTML1.0 Frameset parsing &Chi; 
+PASS XHTML1.0 Frameset parsing &chi; 
+PASS XHTML1.0 Frameset parsing &circ; 
+PASS XHTML1.0 Frameset parsing &circeq; 
+PASS XHTML1.0 Frameset parsing &circlearrowleft; 
+PASS XHTML1.0 Frameset parsing &circlearrowright; 
+PASS XHTML1.0 Frameset parsing &circledast; 
+PASS XHTML1.0 Frameset parsing &circledcirc; 
+PASS XHTML1.0 Frameset parsing &circleddash; 
+PASS XHTML1.0 Frameset parsing &CircleDot; 
+PASS XHTML1.0 Frameset parsing &circledR; 
+PASS XHTML1.0 Frameset parsing &circledS; 
+PASS XHTML1.0 Frameset parsing &CircleMinus; 
+PASS XHTML1.0 Frameset parsing &CirclePlus; 
+PASS XHTML1.0 Frameset parsing &CircleTimes; 
+PASS XHTML1.0 Frameset parsing &cir; 
+PASS XHTML1.0 Frameset parsing &cirE; 
+PASS XHTML1.0 Frameset parsing &cire; 
+PASS XHTML1.0 Frameset parsing &cirfnint; 
+PASS XHTML1.0 Frameset parsing &cirmid; 
+PASS XHTML1.0 Frameset parsing &cirscir; 
+PASS XHTML1.0 Frameset parsing &ClockwiseContourIntegral; 
+PASS XHTML1.0 Frameset parsing &CloseCurlyDoubleQuote; 
+PASS XHTML1.0 Frameset parsing &CloseCurlyQuote; 
+PASS XHTML1.0 Frameset parsing &clubs; 
+PASS XHTML1.0 Frameset parsing &clubsuit; 
+PASS XHTML1.0 Frameset parsing &colon; 
+PASS XHTML1.0 Frameset parsing &Colon; 
+PASS XHTML1.0 Frameset parsing &Colone; 
+PASS XHTML1.0 Frameset parsing &colone; 
+PASS XHTML1.0 Frameset parsing &coloneq; 
+PASS XHTML1.0 Frameset parsing &comma; 
+PASS XHTML1.0 Frameset parsing &commat; 
+PASS XHTML1.0 Frameset parsing &comp; 
+PASS XHTML1.0 Frameset parsing &compfn; 
+PASS XHTML1.0 Frameset parsing &complement; 
+PASS XHTML1.0 Frameset parsing &complexes; 
+PASS XHTML1.0 Frameset parsing &cong; 
+PASS XHTML1.0 Frameset parsing &congdot; 
+PASS XHTML1.0 Frameset parsing &Congruent; 
+PASS XHTML1.0 Frameset parsing &conint; 
+PASS XHTML1.0 Frameset parsing &Conint; 
+PASS XHTML1.0 Frameset parsing &ContourIntegral; 
+PASS XHTML1.0 Frameset parsing &copf; 
+PASS XHTML1.0 Frameset parsing &Copf; 
+PASS XHTML1.0 Frameset parsing &coprod; 
+PASS XHTML1.0 Frameset parsing &Coproduct; 
+PASS XHTML1.0 Frameset parsing &copy; 
+PASS XHTML1.0 Frameset parsing &COPY; 
+PASS XHTML1.0 Frameset parsing &copysr; 
+PASS XHTML1.0 Frameset parsing &CounterClockwiseContourIntegral; 
+PASS XHTML1.0 Frameset parsing &crarr; 
+PASS XHTML1.0 Frameset parsing &cross; 
+PASS XHTML1.0 Frameset parsing &Cross; 
+PASS XHTML1.0 Frameset parsing &Cscr; 
+PASS XHTML1.0 Frameset parsing &cscr; 
+PASS XHTML1.0 Frameset parsing &csub; 
+PASS XHTML1.0 Frameset parsing &csube; 
+PASS XHTML1.0 Frameset parsing &csup; 
+PASS XHTML1.0 Frameset parsing &csupe; 
+PASS XHTML1.0 Frameset parsing &ctdot; 
+PASS XHTML1.0 Frameset parsing &cudarrl; 
+PASS XHTML1.0 Frameset parsing &cudarrr; 
+PASS XHTML1.0 Frameset parsing &cuepr; 
+PASS XHTML1.0 Frameset parsing &cuesc; 
+PASS XHTML1.0 Frameset parsing &cularr; 
+PASS XHTML1.0 Frameset parsing &cularrp; 
+PASS XHTML1.0 Frameset parsing &cupbrcap; 
+PASS XHTML1.0 Frameset parsing &cupcap; 
+PASS XHTML1.0 Frameset parsing &CupCap; 
+PASS XHTML1.0 Frameset parsing &cup; 
+PASS XHTML1.0 Frameset parsing &Cup; 
+PASS XHTML1.0 Frameset parsing &cupcup; 
+PASS XHTML1.0 Frameset parsing &cupdot; 
+PASS XHTML1.0 Frameset parsing &cupor; 
+PASS XHTML1.0 Frameset parsing &cups; 
+PASS XHTML1.0 Frameset parsing &curarr; 
+PASS XHTML1.0 Frameset parsing &curarrm; 
+PASS XHTML1.0 Frameset parsing &curlyeqprec; 
+PASS XHTML1.0 Frameset parsing &curlyeqsucc; 
+PASS XHTML1.0 Frameset parsing &curlyvee; 
+PASS XHTML1.0 Frameset parsing &curlywedge; 
+PASS XHTML1.0 Frameset parsing &curren; 
+PASS XHTML1.0 Frameset parsing &curvearrowleft; 
+PASS XHTML1.0 Frameset parsing &curvearrowright; 
+PASS XHTML1.0 Frameset parsing &cuvee; 
+PASS XHTML1.0 Frameset parsing &cuwed; 
+PASS XHTML1.0 Frameset parsing &cwconint; 
+PASS XHTML1.0 Frameset parsing &cwint; 
+PASS XHTML1.0 Frameset parsing &cylcty; 
+PASS XHTML1.0 Frameset parsing &dagger; 
+PASS XHTML1.0 Frameset parsing &Dagger; 
+PASS XHTML1.0 Frameset parsing &daleth; 
+PASS XHTML1.0 Frameset parsing &darr; 
+PASS XHTML1.0 Frameset parsing &Darr; 
+PASS XHTML1.0 Frameset parsing &dArr; 
+PASS XHTML1.0 Frameset parsing &dash; 
+PASS XHTML1.0 Frameset parsing &Dashv; 
+PASS XHTML1.0 Frameset parsing &dashv; 
+PASS XHTML1.0 Frameset parsing &dbkarow; 
+PASS XHTML1.0 Frameset parsing &dblac; 
+PASS XHTML1.0 Frameset parsing &Dcaron; 
+PASS XHTML1.0 Frameset parsing &dcaron; 
+PASS XHTML1.0 Frameset parsing &Dcy; 
+PASS XHTML1.0 Frameset parsing &dcy; 
+PASS XHTML1.0 Frameset parsing &ddagger; 
+PASS XHTML1.0 Frameset parsing &ddarr; 
+PASS XHTML1.0 Frameset parsing &DD; 
+PASS XHTML1.0 Frameset parsing &dd; 
+PASS XHTML1.0 Frameset parsing &DDotrahd; 
+PASS XHTML1.0 Frameset parsing &ddotseq; 
+PASS XHTML1.0 Frameset parsing &deg; 
+PASS XHTML1.0 Frameset parsing &Del; 
+PASS XHTML1.0 Frameset parsing &Delta; 
+PASS XHTML1.0 Frameset parsing &delta; 
+PASS XHTML1.0 Frameset parsing &demptyv; 
+PASS XHTML1.0 Frameset parsing &dfisht; 
+PASS XHTML1.0 Frameset parsing &Dfr; 
+PASS XHTML1.0 Frameset parsing &dfr; 
+PASS XHTML1.0 Frameset parsing &dHar; 
+PASS XHTML1.0 Frameset parsing &dharl; 
+PASS XHTML1.0 Frameset parsing &dharr; 
+PASS XHTML1.0 Frameset parsing &DiacriticalAcute; 
+PASS XHTML1.0 Frameset parsing &DiacriticalDot; 
+PASS XHTML1.0 Frameset parsing &DiacriticalDoubleAcute; 
+PASS XHTML1.0 Frameset parsing &DiacriticalGrave; 
+PASS XHTML1.0 Frameset parsing &DiacriticalTilde; 
+PASS XHTML1.0 Frameset parsing &diam; 
+PASS XHTML1.0 Frameset parsing &diamond; 
+PASS XHTML1.0 Frameset parsing &Diamond; 
+PASS XHTML1.0 Frameset parsing &diamondsuit; 
+PASS XHTML1.0 Frameset parsing &diams; 
+PASS XHTML1.0 Frameset parsing &die; 
+PASS XHTML1.0 Frameset parsing &DifferentialD; 
+PASS XHTML1.0 Frameset parsing &digamma; 
+PASS XHTML1.0 Frameset parsing &disin; 
+PASS XHTML1.0 Frameset parsing &div; 
+PASS XHTML1.0 Frameset parsing &divide; 
+PASS XHTML1.0 Frameset parsing &divideontimes; 
+PASS XHTML1.0 Frameset parsing &divonx; 
+PASS XHTML1.0 Frameset parsing &DJcy; 
+PASS XHTML1.0 Frameset parsing &djcy; 
+PASS XHTML1.0 Frameset parsing &dlcorn; 
+PASS XHTML1.0 Frameset parsing &dlcrop; 
+PASS XHTML1.0 Frameset parsing &dollar; 
+PASS XHTML1.0 Frameset parsing &Dopf; 
+PASS XHTML1.0 Frameset parsing &dopf; 
+PASS XHTML1.0 Frameset parsing &Dot; 
+PASS XHTML1.0 Frameset parsing &dot; 
+PASS XHTML1.0 Frameset parsing &DotDot; 
+PASS XHTML1.0 Frameset parsing &doteq; 
+PASS XHTML1.0 Frameset parsing &doteqdot; 
+PASS XHTML1.0 Frameset parsing &DotEqual; 
+PASS XHTML1.0 Frameset parsing &dotminus; 
+PASS XHTML1.0 Frameset parsing &dotplus; 
+PASS XHTML1.0 Frameset parsing &dotsquare; 
+PASS XHTML1.0 Frameset parsing &doublebarwedge; 
+PASS XHTML1.0 Frameset parsing &DoubleContourIntegral; 
+PASS XHTML1.0 Frameset parsing &DoubleDot; 
+PASS XHTML1.0 Frameset parsing &DoubleDownArrow; 
+PASS XHTML1.0 Frameset parsing &DoubleLeftArrow; 
+PASS XHTML1.0 Frameset parsing &DoubleLeftRightArrow; 
+PASS XHTML1.0 Frameset parsing &DoubleLeftTee; 
+PASS XHTML1.0 Frameset parsing &DoubleLongLeftArrow; 
+PASS XHTML1.0 Frameset parsing &DoubleLongLeftRightArrow; 
+PASS XHTML1.0 Frameset parsing &DoubleLongRightArrow; 
+PASS XHTML1.0 Frameset parsing &DoubleRightArrow; 
+PASS XHTML1.0 Frameset parsing &DoubleRightTee; 
+PASS XHTML1.0 Frameset parsing &DoubleUpArrow; 
+PASS XHTML1.0 Frameset parsing &DoubleUpDownArrow; 
+PASS XHTML1.0 Frameset parsing &DoubleVerticalBar; 
+PASS XHTML1.0 Frameset parsing &DownArrowBar; 
+PASS XHTML1.0 Frameset parsing &downarrow; 
+PASS XHTML1.0 Frameset parsing &DownArrow; 
+PASS XHTML1.0 Frameset parsing &Downarrow; 
+PASS XHTML1.0 Frameset parsing &DownArrowUpArrow; 
+PASS XHTML1.0 Frameset parsing &DownBreve; 
+PASS XHTML1.0 Frameset parsing &downdownarrows; 
+PASS XHTML1.0 Frameset parsing &downharpoonleft; 
+PASS XHTML1.0 Frameset parsing &downharpoonright; 
+PASS XHTML1.0 Frameset parsing &DownLeftRightVector; 
+PASS XHTML1.0 Frameset parsing &DownLeftTeeVector; 
+PASS XHTML1.0 Frameset parsing &DownLeftVectorBar; 
+PASS XHTML1.0 Frameset parsing &DownLeftVector; 
+PASS XHTML1.0 Frameset parsing &DownRightTeeVector; 
+PASS XHTML1.0 Frameset parsing &DownRightVectorBar; 
+PASS XHTML1.0 Frameset parsing &DownRightVector; 
+PASS XHTML1.0 Frameset parsing &DownTeeArrow; 
+PASS XHTML1.0 Frameset parsing &DownTee; 
+PASS XHTML1.0 Frameset parsing &drbkarow; 
+PASS XHTML1.0 Frameset parsing &drcorn; 
+PASS XHTML1.0 Frameset parsing &drcrop; 
+PASS XHTML1.0 Frameset parsing &Dscr; 
+PASS XHTML1.0 Frameset parsing &dscr; 
+PASS XHTML1.0 Frameset parsing &DScy; 
+PASS XHTML1.0 Frameset parsing &dscy; 
+PASS XHTML1.0 Frameset parsing &dsol; 
+PASS XHTML1.0 Frameset parsing &Dstrok; 
+PASS XHTML1.0 Frameset parsing &dstrok; 
+PASS XHTML1.0 Frameset parsing &dtdot; 
+PASS XHTML1.0 Frameset parsing &dtri; 
+PASS XHTML1.0 Frameset parsing &dtrif; 
+PASS XHTML1.0 Frameset parsing &duarr; 
+PASS XHTML1.0 Frameset parsing &duhar; 
+PASS XHTML1.0 Frameset parsing &dwangle; 
+PASS XHTML1.0 Frameset parsing &DZcy; 
+PASS XHTML1.0 Frameset parsing &dzcy; 
+PASS XHTML1.0 Frameset parsing &dzigrarr; 
+PASS XHTML1.0 Frameset parsing &Eacute; 
+PASS XHTML1.0 Frameset parsing &eacute; 
+PASS XHTML1.0 Frameset parsing &easter; 
+PASS XHTML1.0 Frameset parsing &Ecaron; 
+PASS XHTML1.0 Frameset parsing &ecaron; 
+PASS XHTML1.0 Frameset parsing &Ecirc; 
+PASS XHTML1.0 Frameset parsing &ecirc; 
+PASS XHTML1.0 Frameset parsing &ecir; 
+PASS XHTML1.0 Frameset parsing &ecolon; 
+PASS XHTML1.0 Frameset parsing &Ecy; 
+PASS XHTML1.0 Frameset parsing &ecy; 
+PASS XHTML1.0 Frameset parsing &eDDot; 
+PASS XHTML1.0 Frameset parsing &Edot; 
+PASS XHTML1.0 Frameset parsing &edot; 
+PASS XHTML1.0 Frameset parsing &eDot; 
+PASS XHTML1.0 Frameset parsing &ee; 
+PASS XHTML1.0 Frameset parsing &efDot; 
+PASS XHTML1.0 Frameset parsing &Efr; 
+PASS XHTML1.0 Frameset parsing &efr; 
+PASS XHTML1.0 Frameset parsing &eg; 
+PASS XHTML1.0 Frameset parsing &Egrave; 
+PASS XHTML1.0 Frameset parsing &egrave; 
+PASS XHTML1.0 Frameset parsing &egs; 
+PASS XHTML1.0 Frameset parsing &egsdot; 
+PASS XHTML1.0 Frameset parsing &el; 
+PASS XHTML1.0 Frameset parsing &Element; 
+PASS XHTML1.0 Frameset parsing &elinters; 
+PASS XHTML1.0 Frameset parsing &ell; 
+PASS XHTML1.0 Frameset parsing &els; 
+PASS XHTML1.0 Frameset parsing &elsdot; 
+PASS XHTML1.0 Frameset parsing &Emacr; 
+PASS XHTML1.0 Frameset parsing &emacr; 
+PASS XHTML1.0 Frameset parsing &empty; 
+PASS XHTML1.0 Frameset parsing &emptyset; 
+PASS XHTML1.0 Frameset parsing &EmptySmallSquare; 
+PASS XHTML1.0 Frameset parsing &emptyv; 
+PASS XHTML1.0 Frameset parsing &EmptyVerySmallSquare; 
+PASS XHTML1.0 Frameset parsing &emsp13; 
+PASS XHTML1.0 Frameset parsing &emsp14; 
+PASS XHTML1.0 Frameset parsing &emsp; 
+PASS XHTML1.0 Frameset parsing &ENG; 
+PASS XHTML1.0 Frameset parsing &eng; 
+PASS XHTML1.0 Frameset parsing &ensp; 
+PASS XHTML1.0 Frameset parsing &Eogon; 
+PASS XHTML1.0 Frameset parsing &eogon; 
+PASS XHTML1.0 Frameset parsing &Eopf; 
+PASS XHTML1.0 Frameset parsing &eopf; 
+PASS XHTML1.0 Frameset parsing &epar; 
+PASS XHTML1.0 Frameset parsing &eparsl; 
+PASS XHTML1.0 Frameset parsing &eplus; 
+PASS XHTML1.0 Frameset parsing &epsi; 
+PASS XHTML1.0 Frameset parsing &Epsilon; 
+PASS XHTML1.0 Frameset parsing &epsilon; 
+PASS XHTML1.0 Frameset parsing &epsiv; 
+PASS XHTML1.0 Frameset parsing &eqcirc; 
+PASS XHTML1.0 Frameset parsing &eqcolon; 
+PASS XHTML1.0 Frameset parsing &eqsim; 
+PASS XHTML1.0 Frameset parsing &eqslantgtr; 
+PASS XHTML1.0 Frameset parsing &eqslantless; 
+PASS XHTML1.0 Frameset parsing &Equal; 
+PASS XHTML1.0 Frameset parsing &equals; 
+PASS XHTML1.0 Frameset parsing &EqualTilde; 
+PASS XHTML1.0 Frameset parsing &equest; 
+PASS XHTML1.0 Frameset parsing &Equilibrium; 
+PASS XHTML1.0 Frameset parsing &equiv; 
+PASS XHTML1.0 Frameset parsing &equivDD; 
+PASS XHTML1.0 Frameset parsing &eqvparsl; 
+PASS XHTML1.0 Frameset parsing &erarr; 
+PASS XHTML1.0 Frameset parsing &erDot; 
+PASS XHTML1.0 Frameset parsing &escr; 
+PASS XHTML1.0 Frameset parsing &Escr; 
+PASS XHTML1.0 Frameset parsing &esdot; 
+PASS XHTML1.0 Frameset parsing &Esim; 
+PASS XHTML1.0 Frameset parsing &esim; 
+PASS XHTML1.0 Frameset parsing &Eta; 
+PASS XHTML1.0 Frameset parsing &eta; 
+PASS XHTML1.0 Frameset parsing &ETH; 
+PASS XHTML1.0 Frameset parsing &eth; 
+PASS XHTML1.0 Frameset parsing &Euml; 
+PASS XHTML1.0 Frameset parsing &euml; 
+PASS XHTML1.0 Frameset parsing &euro; 
+PASS XHTML1.0 Frameset parsing &excl; 
+PASS XHTML1.0 Frameset parsing &exist; 
+PASS XHTML1.0 Frameset parsing &Exists; 
+PASS XHTML1.0 Frameset parsing &expectation; 
+PASS XHTML1.0 Frameset parsing &exponentiale; 
+PASS XHTML1.0 Frameset parsing &ExponentialE; 
+PASS XHTML1.0 Frameset parsing &fallingdotseq; 
+PASS XHTML1.0 Frameset parsing &Fcy; 
+PASS XHTML1.0 Frameset parsing &fcy; 
+PASS XHTML1.0 Frameset parsing &female; 
+PASS XHTML1.0 Frameset parsing &ffilig; 
+PASS XHTML1.0 Frameset parsing &fflig; 
+PASS XHTML1.0 Frameset parsing &ffllig; 
+PASS XHTML1.0 Frameset parsing &Ffr; 
+PASS XHTML1.0 Frameset parsing &ffr; 
+PASS XHTML1.0 Frameset parsing &filig; 
+PASS XHTML1.0 Frameset parsing &FilledSmallSquare; 
+PASS XHTML1.0 Frameset parsing &FilledVerySmallSquare; 
+PASS XHTML1.0 Frameset parsing &fjlig; 
+PASS XHTML1.0 Frameset parsing &flat; 
+PASS XHTML1.0 Frameset parsing &fllig; 
+PASS XHTML1.0 Frameset parsing &fltns; 
+PASS XHTML1.0 Frameset parsing &fnof; 
+PASS XHTML1.0 Frameset parsing &Fopf; 
+PASS XHTML1.0 Frameset parsing &fopf; 
+PASS XHTML1.0 Frameset parsing &forall; 
+PASS XHTML1.0 Frameset parsing &ForAll; 
+PASS XHTML1.0 Frameset parsing &fork; 
+PASS XHTML1.0 Frameset parsing &forkv; 
+PASS XHTML1.0 Frameset parsing &Fouriertrf; 
+PASS XHTML1.0 Frameset parsing &fpartint; 
+PASS XHTML1.0 Frameset parsing &frac12; 
+PASS XHTML1.0 Frameset parsing &frac13; 
+PASS XHTML1.0 Frameset parsing &frac14; 
+PASS XHTML1.0 Frameset parsing &frac15; 
+PASS XHTML1.0 Frameset parsing &frac16; 
+PASS XHTML1.0 Frameset parsing &frac18; 
+PASS XHTML1.0 Frameset parsing &frac23; 
+PASS XHTML1.0 Frameset parsing &frac25; 
+PASS XHTML1.0 Frameset parsing &frac34; 
+PASS XHTML1.0 Frameset parsing &frac35; 
+PASS XHTML1.0 Frameset parsing &frac38; 
+PASS XHTML1.0 Frameset parsing &frac45; 
+PASS XHTML1.0 Frameset parsing &frac56; 
+PASS XHTML1.0 Frameset parsing &frac58; 
+PASS XHTML1.0 Frameset parsing &frac78; 
+PASS XHTML1.0 Frameset parsing &frasl; 
+PASS XHTML1.0 Frameset parsing &frown; 
+PASS XHTML1.0 Frameset parsing &fscr; 
+PASS XHTML1.0 Frameset parsing &Fscr; 
+PASS XHTML1.0 Frameset parsing &gacute; 
+PASS XHTML1.0 Frameset parsing &Gamma; 
+PASS XHTML1.0 Frameset parsing &gamma; 
+PASS XHTML1.0 Frameset parsing &Gammad; 
+PASS XHTML1.0 Frameset parsing &gammad; 
+PASS XHTML1.0 Frameset parsing &gap; 
+PASS XHTML1.0 Frameset parsing &Gbreve; 
+PASS XHTML1.0 Frameset parsing &gbreve; 
+PASS XHTML1.0 Frameset parsing &Gcedil; 
+PASS XHTML1.0 Frameset parsing &Gcirc; 
+PASS XHTML1.0 Frameset parsing &gcirc; 
+PASS XHTML1.0 Frameset parsing &Gcy; 
+PASS XHTML1.0 Frameset parsing &gcy; 
+PASS XHTML1.0 Frameset parsing &Gdot; 
+PASS XHTML1.0 Frameset parsing &gdot; 
+PASS XHTML1.0 Frameset parsing &ge; 
+PASS XHTML1.0 Frameset parsing &gE; 
+PASS XHTML1.0 Frameset parsing &gEl; 
+PASS XHTML1.0 Frameset parsing &gel; 
+PASS XHTML1.0 Frameset parsing &geq; 
+PASS XHTML1.0 Frameset parsing &geqq; 
+PASS XHTML1.0 Frameset parsing &geqslant; 
+PASS XHTML1.0 Frameset parsing &gescc; 
+PASS XHTML1.0 Frameset parsing &ges; 
+PASS XHTML1.0 Frameset parsing &gesdot; 
+PASS XHTML1.0 Frameset parsing &gesdoto; 
+PASS XHTML1.0 Frameset parsing &gesdotol; 
+PASS XHTML1.0 Frameset parsing &gesl; 
+PASS XHTML1.0 Frameset parsing &gesles; 
+PASS XHTML1.0 Frameset parsing &Gfr; 
+PASS XHTML1.0 Frameset parsing &gfr; 
+PASS XHTML1.0 Frameset parsing &gg; 
+PASS XHTML1.0 Frameset parsing &Gg; 
+PASS XHTML1.0 Frameset parsing &ggg; 
+PASS XHTML1.0 Frameset parsing &gimel; 
+PASS XHTML1.0 Frameset parsing &GJcy; 
+PASS XHTML1.0 Frameset parsing &gjcy; 
+PASS XHTML1.0 Frameset parsing &gla; 
+PASS XHTML1.0 Frameset parsing &gl; 
+PASS XHTML1.0 Frameset parsing &glE; 
+PASS XHTML1.0 Frameset parsing &glj; 
+PASS XHTML1.0 Frameset parsing &gnap; 
+PASS XHTML1.0 Frameset parsing &gnapprox; 
+PASS XHTML1.0 Frameset parsing &gne; 
+PASS XHTML1.0 Frameset parsing &gnE; 
+PASS XHTML1.0 Frameset parsing &gneq; 
+PASS XHTML1.0 Frameset parsing &gneqq; 
+PASS XHTML1.0 Frameset parsing &gnsim; 
+PASS XHTML1.0 Frameset parsing &Gopf; 
+PASS XHTML1.0 Frameset parsing &gopf; 
+PASS XHTML1.0 Frameset parsing &grave; 
+PASS XHTML1.0 Frameset parsing &GreaterEqual; 
+PASS XHTML1.0 Frameset parsing &GreaterEqualLess; 
+PASS XHTML1.0 Frameset parsing &GreaterFullEqual; 
+PASS XHTML1.0 Frameset parsing &GreaterGreater; 
+PASS XHTML1.0 Frameset parsing &GreaterLess; 
+PASS XHTML1.0 Frameset parsing &GreaterSlantEqual; 
+PASS XHTML1.0 Frameset parsing &GreaterTilde; 
+PASS XHTML1.0 Frameset parsing &Gscr; 
+PASS XHTML1.0 Frameset parsing &gscr; 
+PASS XHTML1.0 Frameset parsing &gsim; 
+PASS XHTML1.0 Frameset parsing &gsime; 
+PASS XHTML1.0 Frameset parsing &gsiml; 
+PASS XHTML1.0 Frameset parsing &gtcc; 
+PASS XHTML1.0 Frameset parsing &gtcir; 
+PASS XHTML1.0 Frameset parsing &gt; 
+PASS XHTML1.0 Frameset parsing &GT; 
+PASS XHTML1.0 Frameset parsing &Gt; 
+PASS XHTML1.0 Frameset parsing &gtdot; 
+PASS XHTML1.0 Frameset parsing &gtlPar; 
+PASS XHTML1.0 Frameset parsing &gtquest; 
+PASS XHTML1.0 Frameset parsing &gtrapprox; 
+PASS XHTML1.0 Frameset parsing &gtrarr; 
+PASS XHTML1.0 Frameset parsing &gtrdot; 
+PASS XHTML1.0 Frameset parsing &gtreqless; 
+PASS XHTML1.0 Frameset parsing &gtreqqless; 
+PASS XHTML1.0 Frameset parsing &gtrless; 
+PASS XHTML1.0 Frameset parsing &gtrsim; 
+PASS XHTML1.0 Frameset parsing &gvertneqq; 
+PASS XHTML1.0 Frameset parsing &gvnE; 
+PASS XHTML1.0 Frameset parsing &Hacek; 
+PASS XHTML1.0 Frameset parsing &hairsp; 
+PASS XHTML1.0 Frameset parsing &half; 
+PASS XHTML1.0 Frameset parsing &hamilt; 
+PASS XHTML1.0 Frameset parsing &HARDcy; 
+PASS XHTML1.0 Frameset parsing &hardcy; 
+PASS XHTML1.0 Frameset parsing &harrcir; 
+PASS XHTML1.0 Frameset parsing &harr; 
+PASS XHTML1.0 Frameset parsing &hArr; 
+PASS XHTML1.0 Frameset parsing &harrw; 
+PASS XHTML1.0 Frameset parsing &Hat; 
+PASS XHTML1.0 Frameset parsing &hbar; 
+PASS XHTML1.0 Frameset parsing &Hcirc; 
+PASS XHTML1.0 Frameset parsing &hcirc; 
+PASS XHTML1.0 Frameset parsing &hearts; 
+PASS XHTML1.0 Frameset parsing &heartsuit; 
+PASS XHTML1.0 Frameset parsing &hellip; 
+PASS XHTML1.0 Frameset parsing &hercon; 
+PASS XHTML1.0 Frameset parsing &hfr; 
+PASS XHTML1.0 Frameset parsing &Hfr; 
+PASS XHTML1.0 Frameset parsing &HilbertSpace; 
+PASS XHTML1.0 Frameset parsing &hksearow; 
+PASS XHTML1.0 Frameset parsing &hkswarow; 
+PASS XHTML1.0 Frameset parsing &hoarr; 
+PASS XHTML1.0 Frameset parsing &homtht; 
+PASS XHTML1.0 Frameset parsing &hookleftarrow; 
+PASS XHTML1.0 Frameset parsing &hookrightarrow; 
+PASS XHTML1.0 Frameset parsing &hopf; 
+PASS XHTML1.0 Frameset parsing &Hopf; 
+PASS XHTML1.0 Frameset parsing &horbar; 
+PASS XHTML1.0 Frameset parsing &HorizontalLine; 
+PASS XHTML1.0 Frameset parsing &hscr; 
+PASS XHTML1.0 Frameset parsing &Hscr; 
+PASS XHTML1.0 Frameset parsing &hslash; 
+PASS XHTML1.0 Frameset parsing &Hstrok; 
+PASS XHTML1.0 Frameset parsing &hstrok; 
+PASS XHTML1.0 Frameset parsing &HumpDownHump; 
+PASS XHTML1.0 Frameset parsing &HumpEqual; 
+PASS XHTML1.0 Frameset parsing &hybull; 
+PASS XHTML1.0 Frameset parsing &hyphen; 
+PASS XHTML1.0 Frameset parsing &Iacute; 
+PASS XHTML1.0 Frameset parsing &iacute; 
+PASS XHTML1.0 Frameset parsing &ic; 
+PASS XHTML1.0 Frameset parsing &Icirc; 
+PASS XHTML1.0 Frameset parsing &icirc; 
+PASS XHTML1.0 Frameset parsing &Icy; 
+PASS XHTML1.0 Frameset parsing &icy; 
+PASS XHTML1.0 Frameset parsing &Idot; 
+PASS XHTML1.0 Frameset parsing &IEcy; 
+PASS XHTML1.0 Frameset parsing &iecy; 
+PASS XHTML1.0 Frameset parsing &iexcl; 
+PASS XHTML1.0 Frameset parsing &iff; 
+PASS XHTML1.0 Frameset parsing &ifr; 
+PASS XHTML1.0 Frameset parsing &Ifr; 
+PASS XHTML1.0 Frameset parsing &Igrave; 
+PASS XHTML1.0 Frameset parsing &igrave; 
+PASS XHTML1.0 Frameset parsing &ii; 
+PASS XHTML1.0 Frameset parsing &iiiint; 
+PASS XHTML1.0 Frameset parsing &iiint; 
+PASS XHTML1.0 Frameset parsing &iinfin; 
+PASS XHTML1.0 Frameset parsing &iiota; 
+PASS XHTML1.0 Frameset parsing &IJlig; 
+PASS XHTML1.0 Frameset parsing &ijlig; 
+PASS XHTML1.0 Frameset parsing &Imacr; 
+PASS XHTML1.0 Frameset parsing &imacr; 
+PASS XHTML1.0 Frameset parsing &image; 
+PASS XHTML1.0 Frameset parsing &ImaginaryI; 
+PASS XHTML1.0 Frameset parsing &imagline; 
+PASS XHTML1.0 Frameset parsing &imagpart; 
+PASS XHTML1.0 Frameset parsing &imath; 
+PASS XHTML1.0 Frameset parsing &Im; 
+PASS XHTML1.0 Frameset parsing &imof; 
+PASS XHTML1.0 Frameset parsing &imped; 
+PASS XHTML1.0 Frameset parsing &Implies; 
+PASS XHTML1.0 Frameset parsing &incare; 
+PASS XHTML1.0 Frameset parsing &in; 
+PASS XHTML1.0 Frameset parsing &infin; 
+PASS XHTML1.0 Frameset parsing &infintie; 
+PASS XHTML1.0 Frameset parsing &inodot; 
+PASS XHTML1.0 Frameset parsing &intcal; 
+PASS XHTML1.0 Frameset parsing &int; 
+PASS XHTML1.0 Frameset parsing &Int; 
+PASS XHTML1.0 Frameset parsing &integers; 
+PASS XHTML1.0 Frameset parsing &Integral; 
+PASS XHTML1.0 Frameset parsing &intercal; 
+PASS XHTML1.0 Frameset parsing &Intersection; 
+PASS XHTML1.0 Frameset parsing &intlarhk; 
+PASS XHTML1.0 Frameset parsing &intprod; 
+PASS XHTML1.0 Frameset parsing &InvisibleComma; 
+PASS XHTML1.0 Frameset parsing &InvisibleTimes; 
+PASS XHTML1.0 Frameset parsing &IOcy; 
+PASS XHTML1.0 Frameset parsing &iocy; 
+PASS XHTML1.0 Frameset parsing &Iogon; 
+PASS XHTML1.0 Frameset parsing &iogon; 
+PASS XHTML1.0 Frameset parsing &Iopf; 
+PASS XHTML1.0 Frameset parsing &iopf; 
+PASS XHTML1.0 Frameset parsing &Iota; 
+PASS XHTML1.0 Frameset parsing &iota; 
+PASS XHTML1.0 Frameset parsing &iprod; 
+PASS XHTML1.0 Frameset parsing &iquest; 
+PASS XHTML1.0 Frameset parsing &iscr; 
+PASS XHTML1.0 Frameset parsing &Iscr; 
+PASS XHTML1.0 Frameset parsing &isin; 
+PASS XHTML1.0 Frameset parsing &isindot; 
+PASS XHTML1.0 Frameset parsing &isinE; 
+PASS XHTML1.0 Frameset parsing &isins; 
+PASS XHTML1.0 Frameset parsing &isinsv; 
+PASS XHTML1.0 Frameset parsing &isinv; 
+PASS XHTML1.0 Frameset parsing &it; 
+PASS XHTML1.0 Frameset parsing &Itilde; 
+PASS XHTML1.0 Frameset parsing &itilde; 
+PASS XHTML1.0 Frameset parsing &Iukcy; 
+PASS XHTML1.0 Frameset parsing &iukcy; 
+PASS XHTML1.0 Frameset parsing &Iuml; 
+PASS XHTML1.0 Frameset parsing &iuml; 
+PASS XHTML1.0 Frameset parsing &Jcirc; 
+PASS XHTML1.0 Frameset parsing &jcirc; 
+PASS XHTML1.0 Frameset parsing &Jcy; 
+PASS XHTML1.0 Frameset parsing &jcy; 
+PASS XHTML1.0 Frameset parsing &Jfr; 
+PASS XHTML1.0 Frameset parsing &jfr; 
+PASS XHTML1.0 Frameset parsing &jmath; 
+PASS XHTML1.0 Frameset parsing &Jopf; 
+PASS XHTML1.0 Frameset parsing &jopf; 
+PASS XHTML1.0 Frameset parsing &Jscr; 
+PASS XHTML1.0 Frameset parsing &jscr; 
+PASS XHTML1.0 Frameset parsing &Jsercy; 
+PASS XHTML1.0 Frameset parsing &jsercy; 
+PASS XHTML1.0 Frameset parsing &Jukcy; 
+PASS XHTML1.0 Frameset parsing &jukcy; 
+PASS XHTML1.0 Frameset parsing &Kappa; 
+PASS XHTML1.0 Frameset parsing &kappa; 
+PASS XHTML1.0 Frameset parsing &kappav; 
+PASS XHTML1.0 Frameset parsing &Kcedil; 
+PASS XHTML1.0 Frameset parsing &kcedil; 
+PASS XHTML1.0 Frameset parsing &Kcy; 
+PASS XHTML1.0 Frameset parsing &kcy; 
+PASS XHTML1.0 Frameset parsing &Kfr; 
+PASS XHTML1.0 Frameset parsing &kfr; 
+PASS XHTML1.0 Frameset parsing &kgreen; 
+PASS XHTML1.0 Frameset parsing &KHcy; 
+PASS XHTML1.0 Frameset parsing &khcy; 
+PASS XHTML1.0 Frameset parsing &KJcy; 
+PASS XHTML1.0 Frameset parsing &kjcy; 
+PASS XHTML1.0 Frameset parsing &Kopf; 
+PASS XHTML1.0 Frameset parsing &kopf; 
+PASS XHTML1.0 Frameset parsing &Kscr; 
+PASS XHTML1.0 Frameset parsing &kscr; 
+PASS XHTML1.0 Frameset parsing &lAarr; 
+PASS XHTML1.0 Frameset parsing &Lacute; 
+PASS XHTML1.0 Frameset parsing &lacute; 
+PASS XHTML1.0 Frameset parsing &laemptyv; 
+PASS XHTML1.0 Frameset parsing &lagran; 
+PASS XHTML1.0 Frameset parsing &Lambda; 
+PASS XHTML1.0 Frameset parsing &lambda; 
+PASS XHTML1.0 Frameset parsing &lang; 
+PASS XHTML1.0 Frameset parsing &Lang; 
+PASS XHTML1.0 Frameset parsing &langd; 
+PASS XHTML1.0 Frameset parsing &langle; 
+PASS XHTML1.0 Frameset parsing &lap; 
+PASS XHTML1.0 Frameset parsing &Laplacetrf; 
+PASS XHTML1.0 Frameset parsing &laquo; 
+PASS XHTML1.0 Frameset parsing &larrb; 
+PASS XHTML1.0 Frameset parsing &larrbfs; 
+PASS XHTML1.0 Frameset parsing &larr; 
+PASS XHTML1.0 Frameset parsing &Larr; 
+PASS XHTML1.0 Frameset parsing &lArr; 
+PASS XHTML1.0 Frameset parsing &larrfs; 
+PASS XHTML1.0 Frameset parsing &larrhk; 
+PASS XHTML1.0 Frameset parsing &larrlp; 
+PASS XHTML1.0 Frameset parsing &larrpl; 
+PASS XHTML1.0 Frameset parsing &larrsim; 
+PASS XHTML1.0 Frameset parsing &larrtl; 
+PASS XHTML1.0 Frameset parsing &latail; 
+PASS XHTML1.0 Frameset parsing &lAtail; 
+PASS XHTML1.0 Frameset parsing &lat; 
+PASS XHTML1.0 Frameset parsing &late; 
+PASS XHTML1.0 Frameset parsing &lates; 
+PASS XHTML1.0 Frameset parsing &lbarr; 
+PASS XHTML1.0 Frameset parsing &lBarr; 
+PASS XHTML1.0 Frameset parsing &lbbrk; 
+PASS XHTML1.0 Frameset parsing &lbrace; 
+PASS XHTML1.0 Frameset parsing &lbrack; 
+PASS XHTML1.0 Frameset parsing &lbrke; 
+PASS XHTML1.0 Frameset parsing &lbrksld; 
+PASS XHTML1.0 Frameset parsing &lbrkslu; 
+PASS XHTML1.0 Frameset parsing &Lcaron; 
+PASS XHTML1.0 Frameset parsing &lcaron; 
+PASS XHTML1.0 Frameset parsing &Lcedil; 
+PASS XHTML1.0 Frameset parsing &lcedil; 
+PASS XHTML1.0 Frameset parsing &lceil; 
+PASS XHTML1.0 Frameset parsing &lcub; 
+PASS XHTML1.0 Frameset parsing &Lcy; 
+PASS XHTML1.0 Frameset parsing &lcy; 
+PASS XHTML1.0 Frameset parsing &ldca; 
+PASS XHTML1.0 Frameset parsing &ldquo; 
+PASS XHTML1.0 Frameset parsing &ldquor; 
+PASS XHTML1.0 Frameset parsing &ldrdhar; 
+PASS XHTML1.0 Frameset parsing &ldrushar; 
+PASS XHTML1.0 Frameset parsing &ldsh; 
+PASS XHTML1.0 Frameset parsing &le; 
+PASS XHTML1.0 Frameset parsing &lE; 
+PASS XHTML1.0 Frameset parsing &LeftAngleBracket; 
+PASS XHTML1.0 Frameset parsing &LeftArrowBar; 
+PASS XHTML1.0 Frameset parsing &leftarrow; 
+PASS XHTML1.0 Frameset parsing &LeftArrow; 
+PASS XHTML1.0 Frameset parsing &Leftarrow; 
+PASS XHTML1.0 Frameset parsing &LeftArrowRightArrow; 
+PASS XHTML1.0 Frameset parsing &leftarrowtail; 
+PASS XHTML1.0 Frameset parsing &LeftCeiling; 
+PASS XHTML1.0 Frameset parsing &LeftDoubleBracket; 
+PASS XHTML1.0 Frameset parsing &LeftDownTeeVector; 
+PASS XHTML1.0 Frameset parsing &LeftDownVectorBar; 
+PASS XHTML1.0 Frameset parsing &LeftDownVector; 
+PASS XHTML1.0 Frameset parsing &LeftFloor; 
+PASS XHTML1.0 Frameset parsing &leftharpoondown; 
+PASS XHTML1.0 Frameset parsing &leftharpoonup; 
+PASS XHTML1.0 Frameset parsing &leftleftarrows; 
+PASS XHTML1.0 Frameset parsing &leftrightarrow; 
+PASS XHTML1.0 Frameset parsing &LeftRightArrow; 
+PASS XHTML1.0 Frameset parsing &Leftrightarrow; 
+PASS XHTML1.0 Frameset parsing &leftrightarrows; 
+PASS XHTML1.0 Frameset parsing &leftrightharpoons; 
+PASS XHTML1.0 Frameset parsing &leftrightsquigarrow; 
+PASS XHTML1.0 Frameset parsing &LeftRightVector; 
+PASS XHTML1.0 Frameset parsing &LeftTeeArrow; 
+PASS XHTML1.0 Frameset parsing &LeftTee; 
+PASS XHTML1.0 Frameset parsing &LeftTeeVector; 
+PASS XHTML1.0 Frameset parsing &leftthreetimes; 
+PASS XHTML1.0 Frameset parsing &LeftTriangleBar; 
+PASS XHTML1.0 Frameset parsing &LeftTriangle; 
+PASS XHTML1.0 Frameset parsing &LeftTriangleEqual; 
+PASS XHTML1.0 Frameset parsing &LeftUpDownVector; 
+PASS XHTML1.0 Frameset parsing &LeftUpTeeVector; 
+PASS XHTML1.0 Frameset parsing &LeftUpVectorBar; 
+PASS XHTML1.0 Frameset parsing &LeftUpVector; 
+PASS XHTML1.0 Frameset parsing &LeftVectorBar; 
+PASS XHTML1.0 Frameset parsing &LeftVector; 
+PASS XHTML1.0 Frameset parsing &lEg; 
+PASS XHTML1.0 Frameset parsing &leg; 
+PASS XHTML1.0 Frameset parsing &leq; 
+PASS XHTML1.0 Frameset parsing &leqq; 
+PASS XHTML1.0 Frameset parsing &leqslant; 
+PASS XHTML1.0 Frameset parsing &lescc; 
+PASS XHTML1.0 Frameset parsing &les; 
+PASS XHTML1.0 Frameset parsing &lesdot; 
+PASS XHTML1.0 Frameset parsing &lesdoto; 
+PASS XHTML1.0 Frameset parsing &lesdotor; 
+PASS XHTML1.0 Frameset parsing &lesg; 
+PASS XHTML1.0 Frameset parsing &lesges; 
+PASS XHTML1.0 Frameset parsing &lessapprox; 
+PASS XHTML1.0 Frameset parsing &lessdot; 
+PASS XHTML1.0 Frameset parsing &lesseqgtr; 
+PASS XHTML1.0 Frameset parsing &lesseqqgtr; 
+PASS XHTML1.0 Frameset parsing &LessEqualGreater; 
+PASS XHTML1.0 Frameset parsing &LessFullEqual; 
+PASS XHTML1.0 Frameset parsing &LessGreater; 
+PASS XHTML1.0 Frameset parsing &lessgtr; 
+PASS XHTML1.0 Frameset parsing &LessLess; 
+PASS XHTML1.0 Frameset parsing &lesssim; 
+PASS XHTML1.0 Frameset parsing &LessSlantEqual; 
+PASS XHTML1.0 Frameset parsing &LessTilde; 
+PASS XHTML1.0 Frameset parsing &lfisht; 
+PASS XHTML1.0 Frameset parsing &lfloor; 
+PASS XHTML1.0 Frameset parsing &Lfr; 
+PASS XHTML1.0 Frameset parsing &lfr; 
+PASS XHTML1.0 Frameset parsing &lg; 
+PASS XHTML1.0 Frameset parsing &lgE; 
+PASS XHTML1.0 Frameset parsing &lHar; 
+PASS XHTML1.0 Frameset parsing &lhard; 
+PASS XHTML1.0 Frameset parsing &lharu; 
+PASS XHTML1.0 Frameset parsing &lharul; 
+PASS XHTML1.0 Frameset parsing &lhblk; 
+PASS XHTML1.0 Frameset parsing &LJcy; 
+PASS XHTML1.0 Frameset parsing &ljcy; 
+PASS XHTML1.0 Frameset parsing &llarr; 
+PASS XHTML1.0 Frameset parsing &ll; 
+PASS XHTML1.0 Frameset parsing &Ll; 
+PASS XHTML1.0 Frameset parsing &llcorner; 
+PASS XHTML1.0 Frameset parsing &Lleftarrow; 
+PASS XHTML1.0 Frameset parsing &llhard; 
+PASS XHTML1.0 Frameset parsing &lltri; 
+PASS XHTML1.0 Frameset parsing &Lmidot; 
+PASS XHTML1.0 Frameset parsing &lmidot; 
+PASS XHTML1.0 Frameset parsing &lmoustache; 
+PASS XHTML1.0 Frameset parsing &lmoust; 
+PASS XHTML1.0 Frameset parsing &lnap; 
+PASS XHTML1.0 Frameset parsing &lnapprox; 
+PASS XHTML1.0 Frameset parsing &lne; 
+PASS XHTML1.0 Frameset parsing &lnE; 
+PASS XHTML1.0 Frameset parsing &lneq; 
+PASS XHTML1.0 Frameset parsing &lneqq; 
+PASS XHTML1.0 Frameset parsing &lnsim; 
+PASS XHTML1.0 Frameset parsing &loang; 
+PASS XHTML1.0 Frameset parsing &loarr; 
+PASS XHTML1.0 Frameset parsing &lobrk; 
+PASS XHTML1.0 Frameset parsing &longleftarrow; 
+PASS XHTML1.0 Frameset parsing &LongLeftArrow; 
+PASS XHTML1.0 Frameset parsing &Longleftarrow; 
+PASS XHTML1.0 Frameset parsing &longleftrightarrow; 
+PASS XHTML1.0 Frameset parsing &LongLeftRightArrow; 
+PASS XHTML1.0 Frameset parsing &Longleftrightarrow; 
+PASS XHTML1.0 Frameset parsing &longmapsto; 
+PASS XHTML1.0 Frameset parsing &longrightarrow; 
+PASS XHTML1.0 Frameset parsing &LongRightArrow; 
+PASS XHTML1.0 Frameset parsing &Longrightarrow; 
+PASS XHTML1.0 Frameset parsing &looparrowleft; 
+PASS XHTML1.0 Frameset parsing &looparrowright; 
+PASS XHTML1.0 Frameset parsing &lopar; 
+PASS XHTML1.0 Frameset parsing &Lopf; 
+PASS XHTML1.0 Frameset parsing &lopf; 
+PASS XHTML1.0 Frameset parsing &loplus; 
+PASS XHTML1.0 Frameset parsing &lotimes; 
+PASS XHTML1.0 Frameset parsing &lowast; 
+PASS XHTML1.0 Frameset parsing &lowbar; 
+PASS XHTML1.0 Frameset parsing &LowerLeftArrow; 
+PASS XHTML1.0 Frameset parsing &LowerRightArrow; 
+PASS XHTML1.0 Frameset parsing &loz; 
+PASS XHTML1.0 Frameset parsing &lozenge; 
+PASS XHTML1.0 Frameset parsing &lozf; 
+PASS XHTML1.0 Frameset parsing &lpar; 
+PASS XHTML1.0 Frameset parsing &lparlt; 
+PASS XHTML1.0 Frameset parsing &lrarr; 
+PASS XHTML1.0 Frameset parsing &lrcorner; 
+PASS XHTML1.0 Frameset parsing &lrhar; 
+PASS XHTML1.0 Frameset parsing &lrhard; 
+PASS XHTML1.0 Frameset parsing &lrm; 
+PASS XHTML1.0 Frameset parsing &lrtri; 
+PASS XHTML1.0 Frameset parsing &lsaquo; 
+PASS XHTML1.0 Frameset parsing &lscr; 
+PASS XHTML1.0 Frameset parsing &Lscr; 
+PASS XHTML1.0 Frameset parsing &lsh; 
+PASS XHTML1.0 Frameset parsing &Lsh; 
+PASS XHTML1.0 Frameset parsing &lsim; 
+PASS XHTML1.0 Frameset parsing &lsime; 
+PASS XHTML1.0 Frameset parsing &lsimg; 
+PASS XHTML1.0 Frameset parsing &lsqb; 
+PASS XHTML1.0 Frameset parsing &lsquo; 
+PASS XHTML1.0 Frameset parsing &lsquor; 
+PASS XHTML1.0 Frameset parsing &Lstrok; 
+PASS XHTML1.0 Frameset parsing &lstrok; 
+PASS XHTML1.0 Frameset parsing &ltcc; 
+PASS XHTML1.0 Frameset parsing &ltcir; 
+PASS XHTML1.0 Frameset parsing &lt; 
+FAIL XHTML1.0 Frameset parsing &LT; assert_true: expected true got false
+PASS XHTML1.0 Frameset parsing &Lt; 
+PASS XHTML1.0 Frameset parsing &ltdot; 
+PASS XHTML1.0 Frameset parsing &lthree; 
+PASS XHTML1.0 Frameset parsing &ltimes; 
+PASS XHTML1.0 Frameset parsing &ltlarr; 
+PASS XHTML1.0 Frameset parsing &ltquest; 
+PASS XHTML1.0 Frameset parsing &ltri; 
+PASS XHTML1.0 Frameset parsing &ltrie; 
+PASS XHTML1.0 Frameset parsing &ltrif; 
+PASS XHTML1.0 Frameset parsing &ltrPar; 
+PASS XHTML1.0 Frameset parsing &lurdshar; 
+PASS XHTML1.0 Frameset parsing &luruhar; 
+PASS XHTML1.0 Frameset parsing &lvertneqq; 
+PASS XHTML1.0 Frameset parsing &lvnE; 
+PASS XHTML1.0 Frameset parsing &macr; 
+PASS XHTML1.0 Frameset parsing &male; 
+PASS XHTML1.0 Frameset parsing &malt; 
+PASS XHTML1.0 Frameset parsing &maltese; 
+PASS XHTML1.0 Frameset parsing &Map; 
+PASS XHTML1.0 Frameset parsing &map; 
+PASS XHTML1.0 Frameset parsing &mapsto; 
+PASS XHTML1.0 Frameset parsing &mapstodown; 
+PASS XHTML1.0 Frameset parsing &mapstoleft; 
+PASS XHTML1.0 Frameset parsing &mapstoup; 
+PASS XHTML1.0 Frameset parsing &marker; 
+PASS XHTML1.0 Frameset parsing &mcomma; 
+PASS XHTML1.0 Frameset parsing &Mcy; 
+PASS XHTML1.0 Frameset parsing &mcy; 
+PASS XHTML1.0 Frameset parsing &mdash; 
+PASS XHTML1.0 Frameset parsing &mDDot; 
+PASS XHTML1.0 Frameset parsing &measuredangle; 
+PASS XHTML1.0 Frameset parsing &MediumSpace; 
+PASS XHTML1.0 Frameset parsing &Mellintrf; 
+PASS XHTML1.0 Frameset parsing &Mfr; 
+PASS XHTML1.0 Frameset parsing &mfr; 
+PASS XHTML1.0 Frameset parsing &mho; 
+PASS XHTML1.0 Frameset parsing &micro; 
+PASS XHTML1.0 Frameset parsing &midast; 
+PASS XHTML1.0 Frameset parsing &midcir; 
+PASS XHTML1.0 Frameset parsing &mid; 
+PASS XHTML1.0 Frameset parsing &middot; 
+PASS XHTML1.0 Frameset parsing &minusb; 
+PASS XHTML1.0 Frameset parsing &minus; 
+PASS XHTML1.0 Frameset parsing &minusd; 
+PASS XHTML1.0 Frameset parsing &minusdu; 
+PASS XHTML1.0 Frameset parsing &MinusPlus; 
+PASS XHTML1.0 Frameset parsing &mlcp; 
+PASS XHTML1.0 Frameset parsing &mldr; 
+PASS XHTML1.0 Frameset parsing &mnplus; 
+PASS XHTML1.0 Frameset parsing &models; 
+PASS XHTML1.0 Frameset parsing &Mopf; 
+PASS XHTML1.0 Frameset parsing &mopf; 
+PASS XHTML1.0 Frameset parsing &mp; 
+PASS XHTML1.0 Frameset parsing &mscr; 
+PASS XHTML1.0 Frameset parsing &Mscr; 
+PASS XHTML1.0 Frameset parsing &mstpos; 
+PASS XHTML1.0 Frameset parsing &Mu; 
+PASS XHTML1.0 Frameset parsing &mu; 
+PASS XHTML1.0 Frameset parsing &multimap; 
+PASS XHTML1.0 Frameset parsing &mumap; 
+PASS XHTML1.0 Frameset parsing &nabla; 
+PASS XHTML1.0 Frameset parsing &Nacute; 
+PASS XHTML1.0 Frameset parsing &nacute; 
+PASS XHTML1.0 Frameset parsing &nang; 
+PASS XHTML1.0 Frameset parsing &nap; 
+PASS XHTML1.0 Frameset parsing &napE; 
+PASS XHTML1.0 Frameset parsing &napid; 
+PASS XHTML1.0 Frameset parsing &napos; 
+PASS XHTML1.0 Frameset parsing &napprox; 
+PASS XHTML1.0 Frameset parsing &natural; 
+PASS XHTML1.0 Frameset parsing &naturals; 
+PASS XHTML1.0 Frameset parsing &natur; 
+PASS XHTML1.0 Frameset parsing &nbsp; 
+PASS XHTML1.0 Frameset parsing &nbump; 
+PASS XHTML1.0 Frameset parsing &nbumpe; 
+PASS XHTML1.0 Frameset parsing &ncap; 
+PASS XHTML1.0 Frameset parsing &Ncaron; 
+PASS XHTML1.0 Frameset parsing &ncaron; 
+PASS XHTML1.0 Frameset parsing &Ncedil; 
+PASS XHTML1.0 Frameset parsing &ncedil; 
+PASS XHTML1.0 Frameset parsing &ncong; 
+PASS XHTML1.0 Frameset parsing &ncongdot; 
+PASS XHTML1.0 Frameset parsing &ncup; 
+PASS XHTML1.0 Frameset parsing &Ncy; 
+PASS XHTML1.0 Frameset parsing &ncy; 
+PASS XHTML1.0 Frameset parsing &ndash; 
+PASS XHTML1.0 Frameset parsing &nearhk; 
+PASS XHTML1.0 Frameset parsing &nearr; 
+PASS XHTML1.0 Frameset parsing &neArr; 
+PASS XHTML1.0 Frameset parsing &nearrow; 
+PASS XHTML1.0 Frameset parsing &ne; 
+PASS XHTML1.0 Frameset parsing &nedot; 
+PASS XHTML1.0 Frameset parsing &NegativeMediumSpace; 
+PASS XHTML1.0 Frameset parsing &NegativeThickSpace; 
+PASS XHTML1.0 Frameset parsing &NegativeThinSpace; 
+PASS XHTML1.0 Frameset parsing &NegativeVeryThinSpace; 
+PASS XHTML1.0 Frameset parsing &nequiv; 
+PASS XHTML1.0 Frameset parsing &nesear; 
+PASS XHTML1.0 Frameset parsing &nesim; 
+PASS XHTML1.0 Frameset parsing &NestedGreaterGreater; 
+PASS XHTML1.0 Frameset parsing &NestedLessLess; 
+PASS XHTML1.0 Frameset parsing &NewLine; 
+PASS XHTML1.0 Frameset parsing &nexist; 
+PASS XHTML1.0 Frameset parsing &nexists; 
+PASS XHTML1.0 Frameset parsing &Nfr; 
+PASS XHTML1.0 Frameset parsing &nfr; 
+PASS XHTML1.0 Frameset parsing &ngE; 
+PASS XHTML1.0 Frameset parsing &nge; 
+PASS XHTML1.0 Frameset parsing &ngeq; 
+PASS XHTML1.0 Frameset parsing &ngeqq; 
+PASS XHTML1.0 Frameset parsing &ngeqslant; 
+PASS XHTML1.0 Frameset parsing &nges; 
+PASS XHTML1.0 Frameset parsing &nGg; 
+PASS XHTML1.0 Frameset parsing &ngsim; 
+PASS XHTML1.0 Frameset parsing &nGt; 
+PASS XHTML1.0 Frameset parsing &ngt; 
+PASS XHTML1.0 Frameset parsing &ngtr; 
+PASS XHTML1.0 Frameset parsing &nGtv; 
+PASS XHTML1.0 Frameset parsing &nharr; 
+PASS XHTML1.0 Frameset parsing &nhArr; 
+PASS XHTML1.0 Frameset parsing &nhpar; 
+PASS XHTML1.0 Frameset parsing &ni; 
+PASS XHTML1.0 Frameset parsing &nis; 
+PASS XHTML1.0 Frameset parsing &nisd; 
+PASS XHTML1.0 Frameset parsing &niv; 
+PASS XHTML1.0 Frameset parsing &NJcy; 
+PASS XHTML1.0 Frameset parsing &njcy; 
+PASS XHTML1.0 Frameset parsing &nlarr; 
+PASS XHTML1.0 Frameset parsing &nlArr; 
+PASS XHTML1.0 Frameset parsing &nldr; 
+PASS XHTML1.0 Frameset parsing &nlE; 
+PASS XHTML1.0 Frameset parsing &nle; 
+PASS XHTML1.0 Frameset parsing &nleftarrow; 
+PASS XHTML1.0 Frameset parsing &nLeftarrow; 
+PASS XHTML1.0 Frameset parsing &nleftrightarrow; 
+PASS XHTML1.0 Frameset parsing &nLeftrightarrow; 
+PASS XHTML1.0 Frameset parsing &nleq; 
+PASS XHTML1.0 Frameset parsing &nleqq; 
+PASS XHTML1.0 Frameset parsing &nleqslant; 
+PASS XHTML1.0 Frameset parsing &nles; 
+PASS XHTML1.0 Frameset parsing &nless; 
+PASS XHTML1.0 Frameset parsing &nLl; 
+PASS XHTML1.0 Frameset parsing &nlsim; 
+PASS XHTML1.0 Frameset parsing &nLt; 
+PASS XHTML1.0 Frameset parsing &nlt; 
+PASS XHTML1.0 Frameset parsing &nltri; 
+PASS XHTML1.0 Frameset parsing &nltrie; 
+PASS XHTML1.0 Frameset parsing &nLtv; 
+PASS XHTML1.0 Frameset parsing &nmid; 
+PASS XHTML1.0 Frameset parsing &NoBreak; 
+PASS XHTML1.0 Frameset parsing &NonBreakingSpace; 
+PASS XHTML1.0 Frameset parsing &nopf; 
+PASS XHTML1.0 Frameset parsing &Nopf; 
+PASS XHTML1.0 Frameset parsing &Not; 
+PASS XHTML1.0 Frameset parsing &not; 
+PASS XHTML1.0 Frameset parsing &NotCongruent; 
+PASS XHTML1.0 Frameset parsing &NotCupCap; 
+PASS XHTML1.0 Frameset parsing &NotDoubleVerticalBar; 
+PASS XHTML1.0 Frameset parsing &NotElement; 
+PASS XHTML1.0 Frameset parsing &NotEqual; 
+PASS XHTML1.0 Frameset parsing &NotEqualTilde; 
+PASS XHTML1.0 Frameset parsing &NotExists; 
+PASS XHTML1.0 Frameset parsing &NotGreater; 
+PASS XHTML1.0 Frameset parsing &NotGreaterEqual; 
+PASS XHTML1.0 Frameset parsing &NotGreaterFullEqual; 
+PASS XHTML1.0 Frameset parsing &NotGreaterGreater; 
+PASS XHTML1.0 Frameset parsing &NotGreaterLess; 
+PASS XHTML1.0 Frameset parsing &NotGreaterSlantEqual; 
+PASS XHTML1.0 Frameset parsing &NotGreaterTilde; 
+PASS XHTML1.0 Frameset parsing &NotHumpDownHump; 
+PASS XHTML1.0 Frameset parsing &NotHumpEqual; 
+PASS XHTML1.0 Frameset parsing &notin; 
+PASS XHTML1.0 Frameset parsing &notindot; 
+PASS XHTML1.0 Frameset parsing &notinE; 
+PASS XHTML1.0 Frameset parsing &notinva; 
+PASS XHTML1.0 Frameset parsing &notinvb; 
+PASS XHTML1.0 Frameset parsing &notinvc; 
+PASS XHTML1.0 Frameset parsing &NotLeftTriangleBar; 
+PASS XHTML1.0 Frameset parsing &NotLeftTriangle; 
+PASS XHTML1.0 Frameset parsing &NotLeftTriangleEqual; 
+PASS XHTML1.0 Frameset parsing &NotLess; 
+PASS XHTML1.0 Frameset parsing &NotLessEqual; 
+PASS XHTML1.0 Frameset parsing &NotLessGreater; 
+PASS XHTML1.0 Frameset parsing &NotLessLess; 
+PASS XHTML1.0 Frameset parsing &NotLessSlantEqual; 
+PASS XHTML1.0 Frameset parsing &NotLessTilde; 
+PASS XHTML1.0 Frameset parsing &NotNestedGreaterGreater; 
+PASS XHTML1.0 Frameset parsing &NotNestedLessLess; 
+PASS XHTML1.0 Frameset parsing &notni; 
+PASS XHTML1.0 Frameset parsing &notniva; 
+PASS XHTML1.0 Frameset parsing &notnivb; 
+PASS XHTML1.0 Frameset parsing &notnivc; 
+PASS XHTML1.0 Frameset parsing &NotPrecedes; 
+PASS XHTML1.0 Frameset parsing &NotPrecedesEqual; 
+PASS XHTML1.0 Frameset parsing &NotPrecedesSlantEqual; 
+PASS XHTML1.0 Frameset parsing &NotReverseElement; 
+PASS XHTML1.0 Frameset parsing &NotRightTriangleBar; 
+PASS XHTML1.0 Frameset parsing &NotRightTriangle; 
+PASS XHTML1.0 Frameset parsing &NotRightTriangleEqual; 
+PASS XHTML1.0 Frameset parsing &NotSquareSubset; 
+PASS XHTML1.0 Frameset parsing &NotSquareSubsetEqual; 
+PASS XHTML1.0 Frameset parsing &NotSquareSuperset; 
+PASS XHTML1.0 Frameset parsing &NotSquareSupersetEqual; 
+PASS XHTML1.0 Frameset parsing &NotSubset; 
+PASS XHTML1.0 Frameset parsing &NotSubsetEqual; 
+PASS XHTML1.0 Frameset parsing &NotSucceeds; 
+PASS XHTML1.0 Frameset parsing &NotSucceedsEqual; 
+PASS XHTML1.0 Frameset parsing &NotSucceedsSlantEqual; 
+PASS XHTML1.0 Frameset parsing &NotSucceedsTilde; 
+PASS XHTML1.0 Frameset parsing &NotSuperset; 
+PASS XHTML1.0 Frameset parsing &NotSupersetEqual; 
+PASS XHTML1.0 Frameset parsing &NotTilde; 
+PASS XHTML1.0 Frameset parsing &NotTildeEqual; 
+PASS XHTML1.0 Frameset parsing &NotTildeFullEqual; 
+PASS XHTML1.0 Frameset parsing &NotTildeTilde; 
+PASS XHTML1.0 Frameset parsing &NotVerticalBar; 
+PASS XHTML1.0 Frameset parsing &nparallel; 
+PASS XHTML1.0 Frameset parsing &npar; 
+PASS XHTML1.0 Frameset parsing &nparsl; 
+PASS XHTML1.0 Frameset parsing &npart; 
+PASS XHTML1.0 Frameset parsing &npolint; 
+PASS XHTML1.0 Frameset parsing &npr; 
+PASS XHTML1.0 Frameset parsing &nprcue; 
+PASS XHTML1.0 Frameset parsing &nprec; 
+PASS XHTML1.0 Frameset parsing &npreceq; 
+PASS XHTML1.0 Frameset parsing &npre; 
+PASS XHTML1.0 Frameset parsing &nrarrc; 
+PASS XHTML1.0 Frameset parsing &nrarr; 
+PASS XHTML1.0 Frameset parsing &nrArr; 
+PASS XHTML1.0 Frameset parsing &nrarrw; 
+PASS XHTML1.0 Frameset parsing &nrightarrow; 
+PASS XHTML1.0 Frameset parsing &nRightarrow; 
+PASS XHTML1.0 Frameset parsing &nrtri; 
+PASS XHTML1.0 Frameset parsing &nrtrie; 
+PASS XHTML1.0 Frameset parsing &nsc; 
+PASS XHTML1.0 Frameset parsing &nsccue; 
+PASS XHTML1.0 Frameset parsing &nsce; 
+PASS XHTML1.0 Frameset parsing &Nscr; 
+PASS XHTML1.0 Frameset parsing &nscr; 
+PASS XHTML1.0 Frameset parsing &nshortmid; 
+PASS XHTML1.0 Frameset parsing &nshortparallel; 
+PASS XHTML1.0 Frameset parsing &nsim; 
+PASS XHTML1.0 Frameset parsing &nsime; 
+PASS XHTML1.0 Frameset parsing &nsimeq; 
+PASS XHTML1.0 Frameset parsing &nsmid; 
+PASS XHTML1.0 Frameset parsing &nspar; 
+PASS XHTML1.0 Frameset parsing &nsqsube; 
+PASS XHTML1.0 Frameset parsing &nsqsupe; 
+PASS XHTML1.0 Frameset parsing &nsub; 
+PASS XHTML1.0 Frameset parsing &nsubE; 
+PASS XHTML1.0 Frameset parsing &nsube; 
+PASS XHTML1.0 Frameset parsing &nsubset; 
+PASS XHTML1.0 Frameset parsing &nsubseteq; 
+PASS XHTML1.0 Frameset parsing &nsubseteqq; 
+PASS XHTML1.0 Frameset parsing &nsucc; 
+PASS XHTML1.0 Frameset parsing &nsucceq; 
+PASS XHTML1.0 Frameset parsing &nsup; 
+PASS XHTML1.0 Frameset parsing &nsupE; 
+PASS XHTML1.0 Frameset parsing &nsupe; 
+PASS XHTML1.0 Frameset parsing &nsupset; 
+PASS XHTML1.0 Frameset parsing &nsupseteq; 
+PASS XHTML1.0 Frameset parsing &nsupseteqq; 
+PASS XHTML1.0 Frameset parsing &ntgl; 
+PASS XHTML1.0 Frameset parsing &Ntilde; 
+PASS XHTML1.0 Frameset parsing &ntilde; 
+PASS XHTML1.0 Frameset parsing &ntlg; 
+PASS XHTML1.0 Frameset parsing &ntriangleleft; 
+PASS XHTML1.0 Frameset parsing &ntrianglelefteq; 
+PASS XHTML1.0 Frameset parsing &ntriangleright; 
+PASS XHTML1.0 Frameset parsing &ntrianglerighteq; 
+PASS XHTML1.0 Frameset parsing &Nu; 
+PASS XHTML1.0 Frameset parsing &nu; 
+PASS XHTML1.0 Frameset parsing &num; 
+PASS XHTML1.0 Frameset parsing &numero; 
+PASS XHTML1.0 Frameset parsing &numsp; 
+PASS XHTML1.0 Frameset parsing &nvap; 
+PASS XHTML1.0 Frameset parsing &nvdash; 
+PASS XHTML1.0 Frameset parsing &nvDash; 
+PASS XHTML1.0 Frameset parsing &nVdash; 
+PASS XHTML1.0 Frameset parsing &nVDash; 
+PASS XHTML1.0 Frameset parsing &nvge; 
+PASS XHTML1.0 Frameset parsing &nvgt; 
+PASS XHTML1.0 Frameset parsing &nvHarr; 
+PASS XHTML1.0 Frameset parsing &nvinfin; 
+PASS XHTML1.0 Frameset parsing &nvlArr; 
+PASS XHTML1.0 Frameset parsing &nvle; 
+FAIL XHTML1.0 Frameset parsing &nvlt; assert_equals: XHTML1.0 Frameset parsing the entity reference caused a parse error; expected 3 but got 1
+PASS XHTML1.0 Frameset parsing &nvltrie; 
+PASS XHTML1.0 Frameset parsing &nvrArr; 
+PASS XHTML1.0 Frameset parsing &nvrtrie; 
+PASS XHTML1.0 Frameset parsing &nvsim; 
+PASS XHTML1.0 Frameset parsing &nwarhk; 
+PASS XHTML1.0 Frameset parsing &nwarr; 
+PASS XHTML1.0 Frameset parsing &nwArr; 
+PASS XHTML1.0 Frameset parsing &nwarrow; 
+PASS XHTML1.0 Frameset parsing &nwnear; 
+PASS XHTML1.0 Frameset parsing &Oacute; 
+PASS XHTML1.0 Frameset parsing &oacute; 
+PASS XHTML1.0 Frameset parsing &oast; 
+PASS XHTML1.0 Frameset parsing &Ocirc; 
+PASS XHTML1.0 Frameset parsing &ocirc; 
+PASS XHTML1.0 Frameset parsing &ocir; 
+PASS XHTML1.0 Frameset parsing &Ocy; 
+PASS XHTML1.0 Frameset parsing &ocy; 
+PASS XHTML1.0 Frameset parsing &odash; 
+PASS XHTML1.0 Frameset parsing &Odblac; 
+PASS XHTML1.0 Frameset parsing &odblac; 
+PASS XHTML1.0 Frameset parsing &odiv; 
+PASS XHTML1.0 Frameset parsing &odot; 
+PASS XHTML1.0 Frameset parsing &odsold; 
+PASS XHTML1.0 Frameset parsing &OElig; 
+PASS XHTML1.0 Frameset parsing &oelig; 
+PASS XHTML1.0 Frameset parsing &ofcir; 
+PASS XHTML1.0 Frameset parsing &Ofr; 
+PASS XHTML1.0 Frameset parsing &ofr; 
+PASS XHTML1.0 Frameset parsing &ogon; 
+PASS XHTML1.0 Frameset parsing &Ograve; 
+PASS XHTML1.0 Frameset parsing &ograve; 
+PASS XHTML1.0 Frameset parsing &ogt; 
+PASS XHTML1.0 Frameset parsing &ohbar; 
+PASS XHTML1.0 Frameset parsing &ohm; 
+PASS XHTML1.0 Frameset parsing &oint; 
+PASS XHTML1.0 Frameset parsing &olarr; 
+PASS XHTML1.0 Frameset parsing &olcir; 
+PASS XHTML1.0 Frameset parsing &olcross; 
+PASS XHTML1.0 Frameset parsing &oline; 
+PASS XHTML1.0 Frameset parsing &olt; 
+PASS XHTML1.0 Frameset parsing &Omacr; 
+PASS XHTML1.0 Frameset parsing &omacr; 
+PASS XHTML1.0 Frameset parsing &Omega; 
+PASS XHTML1.0 Frameset parsing &omega; 
+PASS XHTML1.0 Frameset parsing &Omicron; 
+PASS XHTML1.0 Frameset parsing &omicron; 
+PASS XHTML1.0 Frameset parsing &omid; 
+PASS XHTML1.0 Frameset parsing &ominus; 
+PASS XHTML1.0 Frameset parsing &Oopf; 
+PASS XHTML1.0 Frameset parsing &oopf; 
+PASS XHTML1.0 Frameset parsing &opar; 
+PASS XHTML1.0 Frameset parsing &OpenCurlyDoubleQuote; 
+PASS XHTML1.0 Frameset parsing &OpenCurlyQuote; 
+PASS XHTML1.0 Frameset parsing &operp; 
+PASS XHTML1.0 Frameset parsing &oplus; 
+PASS XHTML1.0 Frameset parsing &orarr; 
+PASS XHTML1.0 Frameset parsing &Or; 
+PASS XHTML1.0 Frameset parsing &or; 
+PASS XHTML1.0 Frameset parsing &ord; 
+PASS XHTML1.0 Frameset parsing &order; 
+PASS XHTML1.0 Frameset parsing &orderof; 
+PASS XHTML1.0 Frameset parsing &ordf; 
+PASS XHTML1.0 Frameset parsing &ordm; 
+PASS XHTML1.0 Frameset parsing &origof; 
+PASS XHTML1.0 Frameset parsing &oror; 
+PASS XHTML1.0 Frameset parsing &orslope; 
+PASS XHTML1.0 Frameset parsing &orv; 
+PASS XHTML1.0 Frameset parsing &oS; 
+PASS XHTML1.0 Frameset parsing &Oscr; 
+PASS XHTML1.0 Frameset parsing &oscr; 
+PASS XHTML1.0 Frameset parsing &Oslash; 
+PASS XHTML1.0 Frameset parsing &oslash; 
+PASS XHTML1.0 Frameset parsing &osol; 
+PASS XHTML1.0 Frameset parsing &Otilde; 
+PASS XHTML1.0 Frameset parsing &otilde; 
+PASS XHTML1.0 Frameset parsing &otimesas; 
+PASS XHTML1.0 Frameset parsing &Otimes; 
+PASS XHTML1.0 Frameset parsing &otimes; 
+PASS XHTML1.0 Frameset parsing &Ouml; 
+PASS XHTML1.0 Frameset parsing &ouml; 
+PASS XHTML1.0 Frameset parsing &ovbar; 
+PASS XHTML1.0 Frameset parsing &OverBar; 
+PASS XHTML1.0 Frameset parsing &OverBrace; 
+PASS XHTML1.0 Frameset parsing &OverBracket; 
+PASS XHTML1.0 Frameset parsing &OverParenthesis; 
+PASS XHTML1.0 Frameset parsing &para; 
+PASS XHTML1.0 Frameset parsing &parallel; 
+PASS XHTML1.0 Frameset parsing &par; 
+PASS XHTML1.0 Frameset parsing &parsim; 
+PASS XHTML1.0 Frameset parsing &parsl; 
+PASS XHTML1.0 Frameset parsing &part; 
+PASS XHTML1.0 Frameset parsing &PartialD; 
+PASS XHTML1.0 Frameset parsing &Pcy; 
+PASS XHTML1.0 Frameset parsing &pcy; 
+PASS XHTML1.0 Frameset parsing &percnt; 
+PASS XHTML1.0 Frameset parsing &period; 
+PASS XHTML1.0 Frameset parsing &permil; 
+PASS XHTML1.0 Frameset parsing &perp; 
+PASS XHTML1.0 Frameset parsing &pertenk; 
+PASS XHTML1.0 Frameset parsing &Pfr; 
+PASS XHTML1.0 Frameset parsing &pfr; 
+PASS XHTML1.0 Frameset parsing &Phi; 
+PASS XHTML1.0 Frameset parsing &phi; 
+PASS XHTML1.0 Frameset parsing &phiv; 
+PASS XHTML1.0 Frameset parsing &phmmat; 
+PASS XHTML1.0 Frameset parsing &phone; 
+PASS XHTML1.0 Frameset parsing &Pi; 
+PASS XHTML1.0 Frameset parsing &pi; 
+PASS XHTML1.0 Frameset parsing &pitchfork; 
+PASS XHTML1.0 Frameset parsing &piv; 
+PASS XHTML1.0 Frameset parsing &planck; 
+PASS XHTML1.0 Frameset parsing &planckh; 
+PASS XHTML1.0 Frameset parsing &plankv; 
+PASS XHTML1.0 Frameset parsing &plusacir; 
+PASS XHTML1.0 Frameset parsing &plusb; 
+PASS XHTML1.0 Frameset parsing &pluscir; 
+PASS XHTML1.0 Frameset parsing &plus; 
+PASS XHTML1.0 Frameset parsing &plusdo; 
+PASS XHTML1.0 Frameset parsing &plusdu; 
+PASS XHTML1.0 Frameset parsing &pluse; 
+PASS XHTML1.0 Frameset parsing &PlusMinus; 
+PASS XHTML1.0 Frameset parsing &plusmn; 
+PASS XHTML1.0 Frameset parsing &plussim; 
+PASS XHTML1.0 Frameset parsing &plustwo; 
+PASS XHTML1.0 Frameset parsing &pm; 
+PASS XHTML1.0 Frameset parsing &Poincareplane; 
+PASS XHTML1.0 Frameset parsing &pointint; 
+PASS XHTML1.0 Frameset parsing &popf; 
+PASS XHTML1.0 Frameset parsing &Popf; 
+PASS XHTML1.0 Frameset parsing &pound; 
+PASS XHTML1.0 Frameset parsing &prap; 
+PASS XHTML1.0 Frameset parsing &Pr; 
+PASS XHTML1.0 Frameset parsing &pr; 
+PASS XHTML1.0 Frameset parsing &prcue; 
+PASS XHTML1.0 Frameset parsing &precapprox; 
+PASS XHTML1.0 Frameset parsing &prec; 
+PASS XHTML1.0 Frameset parsing &preccurlyeq; 
+PASS XHTML1.0 Frameset parsing &Precedes; 
+PASS XHTML1.0 Frameset parsing &PrecedesEqual; 
+PASS XHTML1.0 Frameset parsing &PrecedesSlantEqual; 
+PASS XHTML1.0 Frameset parsing &PrecedesTilde; 
+PASS XHTML1.0 Frameset parsing &preceq; 
+PASS XHTML1.0 Frameset parsing &precnapprox; 
+PASS XHTML1.0 Frameset parsing &precneqq; 
+PASS XHTML1.0 Frameset parsing &precnsim; 
+PASS XHTML1.0 Frameset parsing &pre; 
+PASS XHTML1.0 Frameset parsing &prE; 
+PASS XHTML1.0 Frameset parsing &precsim; 
+PASS XHTML1.0 Frameset parsing &prime; 
+PASS XHTML1.0 Frameset parsing &Prime; 
+PASS XHTML1.0 Frameset parsing &primes; 
+PASS XHTML1.0 Frameset parsing &prnap; 
+PASS XHTML1.0 Frameset parsing &prnE; 
+PASS XHTML1.0 Frameset parsing &prnsim; 
+PASS XHTML1.0 Frameset parsing &prod; 
+PASS XHTML1.0 Frameset parsing &Product; 
+PASS XHTML1.0 Frameset parsing &profalar; 
+PASS XHTML1.0 Frameset parsing &profline; 
+PASS XHTML1.0 Frameset parsing &profsurf; 
+PASS XHTML1.0 Frameset parsing &prop; 
+PASS XHTML1.0 Frameset parsing &Proportional; 
+PASS XHTML1.0 Frameset parsing &Proportion; 
+PASS XHTML1.0 Frameset parsing &propto; 
+PASS XHTML1.0 Frameset parsing &prsim; 
+PASS XHTML1.0 Frameset parsing &prurel; 
+PASS XHTML1.0 Frameset parsing &Pscr; 
+PASS XHTML1.0 Frameset parsing &pscr; 
+PASS XHTML1.0 Frameset parsing &Psi; 
+PASS XHTML1.0 Frameset parsing &psi; 
+PASS XHTML1.0 Frameset parsing &puncsp; 
+PASS XHTML1.0 Frameset parsing &Qfr; 
+PASS XHTML1.0 Frameset parsing &qfr; 
+PASS XHTML1.0 Frameset parsing &qint; 
+PASS XHTML1.0 Frameset parsing &qopf; 
+PASS XHTML1.0 Frameset parsing &Qopf; 
+PASS XHTML1.0 Frameset parsing &qprime; 
+PASS XHTML1.0 Frameset parsing &Qscr; 
+PASS XHTML1.0 Frameset parsing &qscr; 
+PASS XHTML1.0 Frameset parsing &quaternions; 
+PASS XHTML1.0 Frameset parsing &quatint; 
+PASS XHTML1.0 Frameset parsing &quest; 
+PASS XHTML1.0 Frameset parsing &questeq; 
+PASS XHTML1.0 Frameset parsing &quot; 
+PASS XHTML1.0 Frameset parsing &QUOT; 
+PASS XHTML1.0 Frameset parsing &rAarr; 
+PASS XHTML1.0 Frameset parsing &race; 
+PASS XHTML1.0 Frameset parsing &Racute; 
+PASS XHTML1.0 Frameset parsing &racute; 
+PASS XHTML1.0 Frameset parsing &radic; 
+PASS XHTML1.0 Frameset parsing &raemptyv; 
+PASS XHTML1.0 Frameset parsing &rang; 
+PASS XHTML1.0 Frameset parsing &Rang; 
+PASS XHTML1.0 Frameset parsing &rangd; 
+PASS XHTML1.0 Frameset parsing &range; 
+PASS XHTML1.0 Frameset parsing &rangle; 
+PASS XHTML1.0 Frameset parsing &raquo; 
+PASS XHTML1.0 Frameset parsing &rarrap; 
+PASS XHTML1.0 Frameset parsing &rarrb; 
+PASS XHTML1.0 Frameset parsing &rarrbfs; 
+PASS XHTML1.0 Frameset parsing &rarrc; 
+PASS XHTML1.0 Frameset parsing &rarr; 
+PASS XHTML1.0 Frameset parsing &Rarr; 
+PASS XHTML1.0 Frameset parsing &rArr; 
+PASS XHTML1.0 Frameset parsing &rarrfs; 
+PASS XHTML1.0 Frameset parsing &rarrhk; 
+PASS XHTML1.0 Frameset parsing &rarrlp; 
+PASS XHTML1.0 Frameset parsing &rarrpl; 
+PASS XHTML1.0 Frameset parsing &rarrsim; 
+PASS XHTML1.0 Frameset parsing &Rarrtl; 
+PASS XHTML1.0 Frameset parsing &rarrtl; 
+PASS XHTML1.0 Frameset parsing &rarrw; 
+PASS XHTML1.0 Frameset parsing &ratail; 
+PASS XHTML1.0 Frameset parsing &rAtail; 
+PASS XHTML1.0 Frameset parsing &ratio; 
+PASS XHTML1.0 Frameset parsing &rationals; 
+PASS XHTML1.0 Frameset parsing &rbarr; 
+PASS XHTML1.0 Frameset parsing &rBarr; 
+PASS XHTML1.0 Frameset parsing &RBarr; 
+PASS XHTML1.0 Frameset parsing &rbbrk; 
+PASS XHTML1.0 Frameset parsing &rbrace; 
+PASS XHTML1.0 Frameset parsing &rbrack; 
+PASS XHTML1.0 Frameset parsing &rbrke; 
+PASS XHTML1.0 Frameset parsing &rbrksld; 
+PASS XHTML1.0 Frameset parsing &rbrkslu; 
+PASS XHTML1.0 Frameset parsing &Rcaron; 
+PASS XHTML1.0 Frameset parsing &rcaron; 
+PASS XHTML1.0 Frameset parsing &Rcedil; 
+PASS XHTML1.0 Frameset parsing &rcedil; 
+PASS XHTML1.0 Frameset parsing &rceil; 
+PASS XHTML1.0 Frameset parsing &rcub; 
+PASS XHTML1.0 Frameset parsing &Rcy; 
+PASS XHTML1.0 Frameset parsing &rcy; 
+PASS XHTML1.0 Frameset parsing &rdca; 
+PASS XHTML1.0 Frameset parsing &rdldhar; 
+PASS XHTML1.0 Frameset parsing &rdquo; 
+PASS XHTML1.0 Frameset parsing &rdquor; 
+PASS XHTML1.0 Frameset parsing &rdsh; 
+PASS XHTML1.0 Frameset parsing &real; 
+PASS XHTML1.0 Frameset parsing &realine; 
+PASS XHTML1.0 Frameset parsing &realpart; 
+PASS XHTML1.0 Frameset parsing &reals; 
+PASS XHTML1.0 Frameset parsing &Re; 
+PASS XHTML1.0 Frameset parsing &rect; 
+PASS XHTML1.0 Frameset parsing &reg; 
+PASS XHTML1.0 Frameset parsing &REG; 
+PASS XHTML1.0 Frameset parsing &ReverseElement; 
+PASS XHTML1.0 Frameset parsing &ReverseEquilibrium; 
+PASS XHTML1.0 Frameset parsing &ReverseUpEquilibrium; 
+PASS XHTML1.0 Frameset parsing &rfisht; 
+PASS XHTML1.0 Frameset parsing &rfloor; 
+PASS XHTML1.0 Frameset parsing &rfr; 
+PASS XHTML1.0 Frameset parsing &Rfr; 
+PASS XHTML1.0 Frameset parsing &rHar; 
+PASS XHTML1.0 Frameset parsing &rhard; 
+PASS XHTML1.0 Frameset parsing &rharu; 
+PASS XHTML1.0 Frameset parsing &rharul; 
+PASS XHTML1.0 Frameset parsing &Rho; 
+PASS XHTML1.0 Frameset parsing &rho; 
+PASS XHTML1.0 Frameset parsing &rhov; 
+PASS XHTML1.0 Frameset parsing &RightAngleBracket; 
+PASS XHTML1.0 Frameset parsing &RightArrowBar; 
+PASS XHTML1.0 Frameset parsing &rightarrow; 
+PASS XHTML1.0 Frameset parsing &RightArrow; 
+PASS XHTML1.0 Frameset parsing &Rightarrow; 
+PASS XHTML1.0 Frameset parsing &RightArrowLeftArrow; 
+PASS XHTML1.0 Frameset parsing &rightarrowtail; 
+PASS XHTML1.0 Frameset parsing &RightCeiling; 
+PASS XHTML1.0 Frameset parsing &RightDoubleBracket; 
+PASS XHTML1.0 Frameset parsing &RightDownTeeVector; 
+PASS XHTML1.0 Frameset parsing &RightDownVectorBar; 
+PASS XHTML1.0 Frameset parsing &RightDownVector; 
+PASS XHTML1.0 Frameset parsing &RightFloor; 
+PASS XHTML1.0 Frameset parsing &rightharpoondown; 
+PASS XHTML1.0 Frameset parsing &rightharpoonup; 
+PASS XHTML1.0 Frameset parsing &rightleftarrows; 
+PASS XHTML1.0 Frameset parsing &rightleftharpoons; 
+PASS XHTML1.0 Frameset parsing &rightrightarrows; 
+PASS XHTML1.0 Frameset parsing &rightsquigarrow; 
+PASS XHTML1.0 Frameset parsing &RightTeeArrow; 
+PASS XHTML1.0 Frameset parsing &RightTee; 
+PASS XHTML1.0 Frameset parsing &RightTeeVector; 
+PASS XHTML1.0 Frameset parsing &rightthreetimes; 
+PASS XHTML1.0 Frameset parsing &RightTriangleBar; 
+PASS XHTML1.0 Frameset parsing &RightTriangle; 
+PASS XHTML1.0 Frameset parsing &RightTriangleEqual; 
+PASS XHTML1.0 Frameset parsing &RightUpDownVector; 
+PASS XHTML1.0 Frameset parsing &RightUpTeeVector; 
+PASS XHTML1.0 Frameset parsing &RightUpVectorBar; 
+PASS XHTML1.0 Frameset parsing &RightUpVector; 
+PASS XHTML1.0 Frameset parsing &RightVectorBar; 
+PASS XHTML1.0 Frameset parsing &RightVector; 
+PASS XHTML1.0 Frameset parsing &ring; 
+PASS XHTML1.0 Frameset parsing &risingdotseq; 
+PASS XHTML1.0 Frameset parsing &rlarr; 
+PASS XHTML1.0 Frameset parsing &rlhar; 
+PASS XHTML1.0 Frameset parsing &rlm; 
+PASS XHTML1.0 Frameset parsing &rmoustache; 
+PASS XHTML1.0 Frameset parsing &rmoust; 
+PASS XHTML1.0 Frameset parsing &rnmid; 
+PASS XHTML1.0 Frameset parsing &roang; 
+PASS XHTML1.0 Frameset parsing &roarr; 
+PASS XHTML1.0 Frameset parsing &robrk; 
+PASS XHTML1.0 Frameset parsing &ropar; 
+PASS XHTML1.0 Frameset parsing &ropf; 
+PASS XHTML1.0 Frameset parsing &Ropf; 
+PASS XHTML1.0 Frameset parsing &roplus; 
+PASS XHTML1.0 Frameset parsing &rotimes; 
+PASS XHTML1.0 Frameset parsing &RoundImplies; 
+PASS XHTML1.0 Frameset parsing &rpar; 
+PASS XHTML1.0 Frameset parsing &rpargt; 
+PASS XHTML1.0 Frameset parsing &rppolint; 
+PASS XHTML1.0 Frameset parsing &rrarr; 
+PASS XHTML1.0 Frameset parsing &Rrightarrow; 
+PASS XHTML1.0 Frameset parsing &rsaquo; 
+PASS XHTML1.0 Frameset parsing &rscr; 
+PASS XHTML1.0 Frameset parsing &Rscr; 
+PASS XHTML1.0 Frameset parsing &rsh; 
+PASS XHTML1.0 Frameset parsing &Rsh; 
+PASS XHTML1.0 Frameset parsing &rsqb; 
+PASS XHTML1.0 Frameset parsing &rsquo; 
+PASS XHTML1.0 Frameset parsing &rsquor; 
+PASS XHTML1.0 Frameset parsing &rthree; 
+PASS XHTML1.0 Frameset parsing &rtimes; 
+PASS XHTML1.0 Frameset parsing &rtri; 
+PASS XHTML1.0 Frameset parsing &rtrie; 
+PASS XHTML1.0 Frameset parsing &rtrif; 
+PASS XHTML1.0 Frameset parsing &rtriltri; 
+PASS XHTML1.0 Frameset parsing &RuleDelayed; 
+PASS XHTML1.0 Frameset parsing &ruluhar; 
+PASS XHTML1.0 Frameset parsing &rx; 
+PASS XHTML1.0 Frameset parsing &Sacute; 
+PASS XHTML1.0 Frameset parsing &sacute; 
+PASS XHTML1.0 Frameset parsing &sbquo; 
+PASS XHTML1.0 Frameset parsing &scap; 
+PASS XHTML1.0 Frameset parsing &Scaron; 
+PASS XHTML1.0 Frameset parsing &scaron; 
+PASS XHTML1.0 Frameset parsing &Sc; 
+PASS XHTML1.0 Frameset parsing &sc; 
+PASS XHTML1.0 Frameset parsing &sccue; 
+PASS XHTML1.0 Frameset parsing &sce; 
+PASS XHTML1.0 Frameset parsing &scE; 
+PASS XHTML1.0 Frameset parsing &Scedil; 
+PASS XHTML1.0 Frameset parsing &scedil; 
+PASS XHTML1.0 Frameset parsing &Scirc; 
+PASS XHTML1.0 Frameset parsing &scirc; 
+PASS XHTML1.0 Frameset parsing &scnap; 
+PASS XHTML1.0 Frameset parsing &scnE; 
+PASS XHTML1.0 Frameset parsing &scnsim; 
+PASS XHTML1.0 Frameset parsing &scpolint; 
+PASS XHTML1.0 Frameset parsing &scsim; 
+PASS XHTML1.0 Frameset parsing &Scy; 
+PASS XHTML1.0 Frameset parsing &scy; 
+PASS XHTML1.0 Frameset parsing &sdotb; 
+PASS XHTML1.0 Frameset parsing &sdot; 
+PASS XHTML1.0 Frameset parsing &sdote; 
+PASS XHTML1.0 Frameset parsing &searhk; 
+PASS XHTML1.0 Frameset parsing &searr; 
+PASS XHTML1.0 Frameset parsing &seArr; 
+PASS XHTML1.0 Frameset parsing &searrow; 
+PASS XHTML1.0 Frameset parsing &sect; 
+PASS XHTML1.0 Frameset parsing &semi; 
+PASS XHTML1.0 Frameset parsing &seswar; 
+PASS XHTML1.0 Frameset parsing &setminus; 
+PASS XHTML1.0 Frameset parsing &setmn; 
+PASS XHTML1.0 Frameset parsing &sext; 
+PASS XHTML1.0 Frameset parsing &Sfr; 
+PASS XHTML1.0 Frameset parsing &sfr; 
+PASS XHTML1.0 Frameset parsing &sfrown; 
+PASS XHTML1.0 Frameset parsing &sharp; 
+PASS XHTML1.0 Frameset parsing &SHCHcy; 
+PASS XHTML1.0 Frameset parsing &shchcy; 
+PASS XHTML1.0 Frameset parsing &SHcy; 
+PASS XHTML1.0 Frameset parsing &shcy; 
+PASS XHTML1.0 Frameset parsing &ShortDownArrow; 
+PASS XHTML1.0 Frameset parsing &ShortLeftArrow; 
+PASS XHTML1.0 Frameset parsing &shortmid; 
+PASS XHTML1.0 Frameset parsing &shortparallel; 
+PASS XHTML1.0 Frameset parsing &ShortRightArrow; 
+PASS XHTML1.0 Frameset parsing &ShortUpArrow; 
+PASS XHTML1.0 Frameset parsing &shy; 
+PASS XHTML1.0 Frameset parsing &Sigma; 
+PASS XHTML1.0 Frameset parsing &sigma; 
+PASS XHTML1.0 Frameset parsing &sigmaf; 
+PASS XHTML1.0 Frameset parsing &sigmav; 
+PASS XHTML1.0 Frameset parsing &sim; 
+PASS XHTML1.0 Frameset parsing &simdot; 
+PASS XHTML1.0 Frameset parsing &sime; 
+PASS XHTML1.0 Frameset parsing &simeq; 
+PASS XHTML1.0 Frameset parsing &simg; 
+PASS XHTML1.0 Frameset parsing &simgE; 
+PASS XHTML1.0 Frameset parsing &siml; 
+PASS XHTML1.0 Frameset parsing &simlE; 
+PASS XHTML1.0 Frameset parsing &simne; 
+PASS XHTML1.0 Frameset parsing &simplus; 
+PASS XHTML1.0 Frameset parsing &simrarr; 
+PASS XHTML1.0 Frameset parsing &slarr; 
+PASS XHTML1.0 Frameset parsing &SmallCircle; 
+PASS XHTML1.0 Frameset parsing &smallsetminus; 
+PASS XHTML1.0 Frameset parsing &smashp; 
+PASS XHTML1.0 Frameset parsing &smeparsl; 
+PASS XHTML1.0 Frameset parsing &smid; 
+PASS XHTML1.0 Frameset parsing &smile; 
+PASS XHTML1.0 Frameset parsing &smt; 
+PASS XHTML1.0 Frameset parsing &smte; 
+PASS XHTML1.0 Frameset parsing &smtes; 
+PASS XHTML1.0 Frameset parsing &SOFTcy; 
+PASS XHTML1.0 Frameset parsing &softcy; 
+PASS XHTML1.0 Frameset parsing &solbar; 
+PASS XHTML1.0 Frameset parsing &solb; 
+PASS XHTML1.0 Frameset parsing &sol; 
+PASS XHTML1.0 Frameset parsing &Sopf; 
+PASS XHTML1.0 Frameset parsing &sopf; 
+PASS XHTML1.0 Frameset parsing &spades; 
+PASS XHTML1.0 Frameset parsing &spadesuit; 
+PASS XHTML1.0 Frameset parsing &spar; 
+PASS XHTML1.0 Frameset parsing &sqcap; 
+PASS XHTML1.0 Frameset parsing &sqcaps; 
+PASS XHTML1.0 Frameset parsing &sqcup; 
+PASS XHTML1.0 Frameset parsing &sqcups; 
+PASS XHTML1.0 Frameset parsing &Sqrt; 
+PASS XHTML1.0 Frameset parsing &sqsub; 
+PASS XHTML1.0 Frameset parsing &sqsube; 
+PASS XHTML1.0 Frameset parsing &sqsubset; 
+PASS XHTML1.0 Frameset parsing &sqsubseteq; 
+PASS XHTML1.0 Frameset parsing &sqsup; 
+PASS XHTML1.0 Frameset parsing &sqsupe; 
+PASS XHTML1.0 Frameset parsing &sqsupset; 
+PASS XHTML1.0 Frameset parsing &sqsupseteq; 
+PASS XHTML1.0 Frameset parsing &square; 
+PASS XHTML1.0 Frameset parsing &Square; 
+PASS XHTML1.0 Frameset parsing &SquareIntersection; 
+PASS XHTML1.0 Frameset parsing &SquareSubset; 
+PASS XHTML1.0 Frameset parsing &SquareSubsetEqual; 
+PASS XHTML1.0 Frameset parsing &SquareSuperset; 
+PASS XHTML1.0 Frameset parsing &SquareSupersetEqual; 
+PASS XHTML1.0 Frameset parsing &SquareUnion; 
+PASS XHTML1.0 Frameset parsing &squarf; 
+PASS XHTML1.0 Frameset parsing &squ; 
+PASS XHTML1.0 Frameset parsing &squf; 
+PASS XHTML1.0 Frameset parsing &srarr; 
+PASS XHTML1.0 Frameset parsing &Sscr; 
+PASS XHTML1.0 Frameset parsing &sscr; 
+PASS XHTML1.0 Frameset parsing &ssetmn; 
+PASS XHTML1.0 Frameset parsing &ssmile; 
+PASS XHTML1.0 Frameset parsing &sstarf; 
+PASS XHTML1.0 Frameset parsing &Star; 
+PASS XHTML1.0 Frameset parsing &star; 
+PASS XHTML1.0 Frameset parsing &starf; 
+PASS XHTML1.0 Frameset parsing &straightepsilon; 
+PASS XHTML1.0 Frameset parsing &straightphi; 
+PASS XHTML1.0 Frameset parsing &strns; 
+PASS XHTML1.0 Frameset parsing &sub; 
+PASS XHTML1.0 Frameset parsing &Sub; 
+PASS XHTML1.0 Frameset parsing &subdot; 
+PASS XHTML1.0 Frameset parsing &subE; 
+PASS XHTML1.0 Frameset parsing &sube; 
+PASS XHTML1.0 Frameset parsing &subedot; 
+PASS XHTML1.0 Frameset parsing &submult; 
+PASS XHTML1.0 Frameset parsing &subnE; 
+PASS XHTML1.0 Frameset parsing &subne; 
+PASS XHTML1.0 Frameset parsing &subplus; 
+PASS XHTML1.0 Frameset parsing &subrarr; 
+PASS XHTML1.0 Frameset parsing &subset; 
+PASS XHTML1.0 Frameset parsing &Subset; 
+PASS XHTML1.0 Frameset parsing &subseteq; 
+PASS XHTML1.0 Frameset parsing &subseteqq; 
+PASS XHTML1.0 Frameset parsing &SubsetEqual; 
+PASS XHTML1.0 Frameset parsing &subsetneq; 
+PASS XHTML1.0 Frameset parsing &subsetneqq; 
+PASS XHTML1.0 Frameset parsing &subsim; 
+PASS XHTML1.0 Frameset parsing &subsub; 
+PASS XHTML1.0 Frameset parsing &subsup; 
+PASS XHTML1.0 Frameset parsing &succapprox; 
+PASS XHTML1.0 Frameset parsing &succ; 
+PASS XHTML1.0 Frameset parsing &succcurlyeq; 
+PASS XHTML1.0 Frameset parsing &Succeeds; 
+PASS XHTML1.0 Frameset parsing &SucceedsEqual; 
+PASS XHTML1.0 Frameset parsing &SucceedsSlantEqual; 
+PASS XHTML1.0 Frameset parsing &SucceedsTilde; 
+PASS XHTML1.0 Frameset parsing &succeq; 
+PASS XHTML1.0 Frameset parsing &succnapprox; 
+PASS XHTML1.0 Frameset parsing &succneqq; 
+PASS XHTML1.0 Frameset parsing &succnsim; 
+PASS XHTML1.0 Frameset parsing &succsim; 
+PASS XHTML1.0 Frameset parsing &SuchThat; 
+PASS XHTML1.0 Frameset parsing &sum; 
+PASS XHTML1.0 Frameset parsing &Sum; 
+PASS XHTML1.0 Frameset parsing &sung; 
+PASS XHTML1.0 Frameset parsing &sup1; 
+PASS XHTML1.0 Frameset parsing &sup2; 
+PASS XHTML1.0 Frameset parsing &sup3; 
+PASS XHTML1.0 Frameset parsing &sup; 
+PASS XHTML1.0 Frameset parsing &Sup; 
+PASS XHTML1.0 Frameset parsing &supdot; 
+PASS XHTML1.0 Frameset parsing &supdsub; 
+PASS XHTML1.0 Frameset parsing &supE; 
+PASS XHTML1.0 Frameset parsing &supe; 
+PASS XHTML1.0 Frameset parsing &supedot; 
+PASS XHTML1.0 Frameset parsing &Superset; 
+PASS XHTML1.0 Frameset parsing &SupersetEqual; 
+PASS XHTML1.0 Frameset parsing &suphsol; 
+PASS XHTML1.0 Frameset parsing &suphsub; 
+PASS XHTML1.0 Frameset parsing &suplarr; 
+PASS XHTML1.0 Frameset parsing &supmult; 
+PASS XHTML1.0 Frameset parsing &supnE; 
+PASS XHTML1.0 Frameset parsing &supne; 
+PASS XHTML1.0 Frameset parsing &supplus; 
+PASS XHTML1.0 Frameset parsing &supset; 
+PASS XHTML1.0 Frameset parsing &Supset; 
+PASS XHTML1.0 Frameset parsing &supseteq; 
+PASS XHTML1.0 Frameset parsing &supseteqq; 
+PASS XHTML1.0 Frameset parsing &supsetneq; 
+PASS XHTML1.0 Frameset parsing &supsetneqq; 
+PASS XHTML1.0 Frameset parsing &supsim; 
+PASS XHTML1.0 Frameset parsing &supsub; 
+PASS XHTML1.0 Frameset parsing &supsup; 
+PASS XHTML1.0 Frameset parsing &swarhk; 
+PASS XHTML1.0 Frameset parsing &swarr; 
+PASS XHTML1.0 Frameset parsing &swArr; 
+PASS XHTML1.0 Frameset parsing &swarrow; 
+PASS XHTML1.0 Frameset parsing &swnwar; 
+PASS XHTML1.0 Frameset parsing &szlig; 
+PASS XHTML1.0 Frameset parsing &Tab; 
+PASS XHTML1.0 Frameset parsing &target; 
+PASS XHTML1.0 Frameset parsing &Tau; 
+PASS XHTML1.0 Frameset parsing &tau; 
+PASS XHTML1.0 Frameset parsing &tbrk; 
+PASS XHTML1.0 Frameset parsing &Tcaron; 
+PASS XHTML1.0 Frameset parsing &tcaron; 
+PASS XHTML1.0 Frameset parsing &Tcedil; 
+PASS XHTML1.0 Frameset parsing &tcedil; 
+PASS XHTML1.0 Frameset parsing &Tcy; 
+PASS XHTML1.0 Frameset parsing &tcy; 
+PASS XHTML1.0 Frameset parsing &tdot; 
+PASS XHTML1.0 Frameset parsing &telrec; 
+PASS XHTML1.0 Frameset parsing &Tfr; 
+PASS XHTML1.0 Frameset parsing &tfr; 
+PASS XHTML1.0 Frameset parsing &there4; 
+PASS XHTML1.0 Frameset parsing &therefore; 
+PASS XHTML1.0 Frameset parsing &Therefore; 
+PASS XHTML1.0 Frameset parsing &Theta; 
+PASS XHTML1.0 Frameset parsing &theta; 
+PASS XHTML1.0 Frameset parsing &thetasym; 
+PASS XHTML1.0 Frameset parsing &thetav; 
+PASS XHTML1.0 Frameset parsing &thickapprox; 
+PASS XHTML1.0 Frameset parsing &thicksim; 
+PASS XHTML1.0 Frameset parsing &ThickSpace; 
+PASS XHTML1.0 Frameset parsing &ThinSpace; 
+PASS XHTML1.0 Frameset parsing &thinsp; 
+PASS XHTML1.0 Frameset parsing &thkap; 
+PASS XHTML1.0 Frameset parsing &thksim; 
+PASS XHTML1.0 Frameset parsing &THORN; 
+PASS XHTML1.0 Frameset parsing &thorn; 
+PASS XHTML1.0 Frameset parsing &tilde; 
+PASS XHTML1.0 Frameset parsing &Tilde; 
+PASS XHTML1.0 Frameset parsing &TildeEqual; 
+PASS XHTML1.0 Frameset parsing &TildeFullEqual; 
+PASS XHTML1.0 Frameset parsing &TildeTilde; 
+PASS XHTML1.0 Frameset parsing &timesbar; 
+PASS XHTML1.0 Frameset parsing &timesb; 
+PASS XHTML1.0 Frameset parsing &times; 
+PASS XHTML1.0 Frameset parsing &timesd; 
+PASS XHTML1.0 Frameset parsing &tint; 
+PASS XHTML1.0 Frameset parsing &toea; 
+PASS XHTML1.0 Frameset parsing &topbot; 
+PASS XHTML1.0 Frameset parsing &topcir; 
+PASS XHTML1.0 Frameset parsing &top; 
+PASS XHTML1.0 Frameset parsing &Topf; 
+PASS XHTML1.0 Frameset parsing &topf; 
+PASS XHTML1.0 Frameset parsing &topfork; 
+PASS XHTML1.0 Frameset parsing &tosa; 
+PASS XHTML1.0 Frameset parsing &tprime; 
+PASS XHTML1.0 Frameset parsing &trade; 
+PASS XHTML1.0 Frameset parsing &TRADE; 
+PASS XHTML1.0 Frameset parsing &triangle; 
+PASS XHTML1.0 Frameset parsing &triangledown; 
+PASS XHTML1.0 Frameset parsing &triangleleft; 
+PASS XHTML1.0 Frameset parsing &trianglelefteq; 
+PASS XHTML1.0 Frameset parsing &triangleq; 
+PASS XHTML1.0 Frameset parsing &triangleright; 
+PASS XHTML1.0 Frameset parsing &trianglerighteq; 
+PASS XHTML1.0 Frameset parsing &tridot; 
+PASS XHTML1.0 Frameset parsing &trie; 
+PASS XHTML1.0 Frameset parsing &triminus; 
+PASS XHTML1.0 Frameset parsing &TripleDot; 
+PASS XHTML1.0 Frameset parsing &triplus; 
+PASS XHTML1.0 Frameset parsing &trisb; 
+PASS XHTML1.0 Frameset parsing &tritime; 
+PASS XHTML1.0 Frameset parsing &trpezium; 
+PASS XHTML1.0 Frameset parsing &Tscr; 
+PASS XHTML1.0 Frameset parsing &tscr; 
+PASS XHTML1.0 Frameset parsing &TScy; 
+PASS XHTML1.0 Frameset parsing &tscy; 
+PASS XHTML1.0 Frameset parsing &TSHcy; 
+PASS XHTML1.0 Frameset parsing &tshcy; 
+PASS XHTML1.0 Frameset parsing &Tstrok; 
+PASS XHTML1.0 Frameset parsing &tstrok; 
+PASS XHTML1.0 Frameset parsing &twixt; 
+PASS XHTML1.0 Frameset parsing &twoheadleftarrow; 
+PASS XHTML1.0 Frameset parsing &twoheadrightarrow; 
+PASS XHTML1.0 Frameset parsing &Uacute; 
+PASS XHTML1.0 Frameset parsing &uacute; 
+PASS XHTML1.0 Frameset parsing &uarr; 
+PASS XHTML1.0 Frameset parsing &Uarr; 
+PASS XHTML1.0 Frameset parsing &uArr; 
+PASS XHTML1.0 Frameset parsing &Uarrocir; 
+PASS XHTML1.0 Frameset parsing &Ubrcy; 
+PASS XHTML1.0 Frameset parsing &ubrcy; 
+PASS XHTML1.0 Frameset parsing &Ubreve; 
+PASS XHTML1.0 Frameset parsing &ubreve; 
+PASS XHTML1.0 Frameset parsing &Ucirc; 
+PASS XHTML1.0 Frameset parsing &ucirc; 
+PASS XHTML1.0 Frameset parsing &Ucy; 
+PASS XHTML1.0 Frameset parsing &ucy; 
+PASS XHTML1.0 Frameset parsing &udarr; 
+PASS XHTML1.0 Frameset parsing &Udblac; 
+PASS XHTML1.0 Frameset parsing &udblac; 
+PASS XHTML1.0 Frameset parsing &udhar; 
+PASS XHTML1.0 Frameset parsing &ufisht; 
+PASS XHTML1.0 Frameset parsing &Ufr; 
+PASS XHTML1.0 Frameset parsing &ufr; 
+PASS XHTML1.0 Frameset parsing &Ugrave; 
+PASS XHTML1.0 Frameset parsing &ugrave; 
+PASS XHTML1.0 Frameset parsing &uHar; 
+PASS XHTML1.0 Frameset parsing &uharl; 
+PASS XHTML1.0 Frameset parsing &uharr; 
+PASS XHTML1.0 Frameset parsing &uhblk; 
+PASS XHTML1.0 Frameset parsing &ulcorn; 
+PASS XHTML1.0 Frameset parsing &ulcorner; 
+PASS XHTML1.0 Frameset parsing &ulcrop; 
+PASS XHTML1.0 Frameset parsing &ultri; 
+PASS XHTML1.0 Frameset parsing &Umacr; 
+PASS XHTML1.0 Frameset parsing &umacr; 
+PASS XHTML1.0 Frameset parsing &uml; 
+PASS XHTML1.0 Frameset parsing &UnderBar; 
+PASS XHTML1.0 Frameset parsing &UnderBrace; 
+PASS XHTML1.0 Frameset parsing &UnderBracket; 
+PASS XHTML1.0 Frameset parsing &UnderParenthesis; 
+PASS XHTML1.0 Frameset parsing &Union; 
+PASS XHTML1.0 Frameset parsing &UnionPlus; 
+PASS XHTML1.0 Frameset parsing &Uogon; 
+PASS XHTML1.0 Frameset parsing &uogon; 
+PASS XHTML1.0 Frameset parsing &Uopf; 
+PASS XHTML1.0 Frameset parsing &uopf; 
+PASS XHTML1.0 Frameset parsing &UpArrowBar; 
+PASS XHTML1.0 Frameset parsing &uparrow; 
+PASS XHTML1.0 Frameset parsing &UpArrow; 
+PASS XHTML1.0 Frameset parsing &Uparrow; 
+PASS XHTML1.0 Frameset parsing &UpArrowDownArrow; 
+PASS XHTML1.0 Frameset parsing &updownarrow; 
+PASS XHTML1.0 Frameset parsing &UpDownArrow; 
+PASS XHTML1.0 Frameset parsing &Updownarrow; 
+PASS XHTML1.0 Frameset parsing &UpEquilibrium; 
+PASS XHTML1.0 Frameset parsing &upharpoonleft; 
+PASS XHTML1.0 Frameset parsing &upharpoonright; 
+PASS XHTML1.0 Frameset parsing &uplus; 
+PASS XHTML1.0 Frameset parsing &UpperLeftArrow; 
+PASS XHTML1.0 Frameset parsing &UpperRightArrow; 
+PASS XHTML1.0 Frameset parsing &upsi; 
+PASS XHTML1.0 Frameset parsing &Upsi; 
+PASS XHTML1.0 Frameset parsing &upsih; 
+PASS XHTML1.0 Frameset parsing &Upsilon; 
+PASS XHTML1.0 Frameset parsing &upsilon; 
+PASS XHTML1.0 Frameset parsing &UpTeeArrow; 
+PASS XHTML1.0 Frameset parsing &UpTee; 
+PASS XHTML1.0 Frameset parsing &upuparrows; 
+PASS XHTML1.0 Frameset parsing &urcorn; 
+PASS XHTML1.0 Frameset parsing &urcorner; 
+PASS XHTML1.0 Frameset parsing &urcrop; 
+PASS XHTML1.0 Frameset parsing &Uring; 
+PASS XHTML1.0 Frameset parsing &uring; 
+PASS XHTML1.0 Frameset parsing &urtri; 
+PASS XHTML1.0 Frameset parsing &Uscr; 
+PASS XHTML1.0 Frameset parsing &uscr; 
+PASS XHTML1.0 Frameset parsing &utdot; 
+PASS XHTML1.0 Frameset parsing &Utilde; 
+PASS XHTML1.0 Frameset parsing &utilde; 
+PASS XHTML1.0 Frameset parsing &utri; 
+PASS XHTML1.0 Frameset parsing &utrif; 
+PASS XHTML1.0 Frameset parsing &uuarr; 
+PASS XHTML1.0 Frameset parsing &Uuml; 
+PASS XHTML1.0 Frameset parsing &uuml; 
+PASS XHTML1.0 Frameset parsing &uwangle; 
+PASS XHTML1.0 Frameset parsing &vangrt; 
+PASS XHTML1.0 Frameset parsing &varepsilon; 
+PASS XHTML1.0 Frameset parsing &varkappa; 
+PASS XHTML1.0 Frameset parsing &varnothing; 
+PASS XHTML1.0 Frameset parsing &varphi; 
+PASS XHTML1.0 Frameset parsing &varpi; 
+PASS XHTML1.0 Frameset parsing &varpropto; 
+PASS XHTML1.0 Frameset parsing &varr; 
+PASS XHTML1.0 Frameset parsing &vArr; 
+PASS XHTML1.0 Frameset parsing &varrho; 
+PASS XHTML1.0 Frameset parsing &varsigma; 
+PASS XHTML1.0 Frameset parsing &varsubsetneq; 
+PASS XHTML1.0 Frameset parsing &varsubsetneqq; 
+PASS XHTML1.0 Frameset parsing &varsupsetneq; 
+PASS XHTML1.0 Frameset parsing &varsupsetneqq; 
+PASS XHTML1.0 Frameset parsing &vartheta; 
+PASS XHTML1.0 Frameset parsing &vartriangleleft; 
+PASS XHTML1.0 Frameset parsing &vartriangleright; 
+PASS XHTML1.0 Frameset parsing &vBar; 
+PASS XHTML1.0 Frameset parsing &Vbar; 
+PASS XHTML1.0 Frameset parsing &vBarv; 
+PASS XHTML1.0 Frameset parsing &Vcy; 
+PASS XHTML1.0 Frameset parsing &vcy; 
+PASS XHTML1.0 Frameset parsing &vdash; 
+PASS XHTML1.0 Frameset parsing &vDash; 
+PASS XHTML1.0 Frameset parsing &Vdash; 
+PASS XHTML1.0 Frameset parsing &VDash; 
+PASS XHTML1.0 Frameset parsing &Vdashl; 
+PASS XHTML1.0 Frameset parsing &veebar; 
+PASS XHTML1.0 Frameset parsing &vee; 
+PASS XHTML1.0 Frameset parsing &Vee; 
+PASS XHTML1.0 Frameset parsing &veeeq; 
+PASS XHTML1.0 Frameset parsing &vellip; 
+PASS XHTML1.0 Frameset parsing &verbar; 
+PASS XHTML1.0 Frameset parsing &Verbar; 
+PASS XHTML1.0 Frameset parsing &vert; 
+PASS XHTML1.0 Frameset parsing &Vert; 
+PASS XHTML1.0 Frameset parsing &VerticalBar; 
+PASS XHTML1.0 Frameset parsing &VerticalLine; 
+PASS XHTML1.0 Frameset parsing &VerticalSeparator; 
+PASS XHTML1.0 Frameset parsing &VerticalTilde; 
+PASS XHTML1.0 Frameset parsing &VeryThinSpace; 
+PASS XHTML1.0 Frameset parsing &Vfr; 
+PASS XHTML1.0 Frameset parsing &vfr; 
+PASS XHTML1.0 Frameset parsing &vltri; 
+PASS XHTML1.0 Frameset parsing &vnsub; 
+PASS XHTML1.0 Frameset parsing &vnsup; 
+PASS XHTML1.0 Frameset parsing &Vopf; 
+PASS XHTML1.0 Frameset parsing &vopf; 
+PASS XHTML1.0 Frameset parsing &vprop; 
+PASS XHTML1.0 Frameset parsing &vrtri; 
+PASS XHTML1.0 Frameset parsing &Vscr; 
+PASS XHTML1.0 Frameset parsing &vscr; 
+PASS XHTML1.0 Frameset parsing &vsubnE; 
+PASS XHTML1.0 Frameset parsing &vsubne; 
+PASS XHTML1.0 Frameset parsing &vsupnE; 
+PASS XHTML1.0 Frameset parsing &vsupne; 
+PASS XHTML1.0 Frameset parsing &Vvdash; 
+PASS XHTML1.0 Frameset parsing &vzigzag; 
+PASS XHTML1.0 Frameset parsing &Wcirc; 
+PASS XHTML1.0 Frameset parsing &wcirc; 
+PASS XHTML1.0 Frameset parsing &wedbar; 
+PASS XHTML1.0 Frameset parsing &wedge; 
+PASS XHTML1.0 Frameset parsing &Wedge; 
+PASS XHTML1.0 Frameset parsing &wedgeq; 
+PASS XHTML1.0 Frameset parsing &weierp; 
+PASS XHTML1.0 Frameset parsing &Wfr; 
+PASS XHTML1.0 Frameset parsing &wfr; 
+PASS XHTML1.0 Frameset parsing &Wopf; 
+PASS XHTML1.0 Frameset parsing &wopf; 
+PASS XHTML1.0 Frameset parsing &wp; 
+PASS XHTML1.0 Frameset parsing &wr; 
+PASS XHTML1.0 Frameset parsing &wreath; 
+PASS XHTML1.0 Frameset parsing &Wscr; 
+PASS XHTML1.0 Frameset parsing &wscr; 
+PASS XHTML1.0 Frameset parsing &xcap; 
+PASS XHTML1.0 Frameset parsing &xcirc; 
+PASS XHTML1.0 Frameset parsing &xcup; 
+PASS XHTML1.0 Frameset parsing &xdtri; 
+PASS XHTML1.0 Frameset parsing &Xfr; 
+PASS XHTML1.0 Frameset parsing &xfr; 
+PASS XHTML1.0 Frameset parsing &xharr; 
+PASS XHTML1.0 Frameset parsing &xhArr; 
+PASS XHTML1.0 Frameset parsing &Xi; 
+PASS XHTML1.0 Frameset parsing &xi; 
+PASS XHTML1.0 Frameset parsing &xlarr; 
+PASS XHTML1.0 Frameset parsing &xlArr; 
+PASS XHTML1.0 Frameset parsing &xmap; 
+PASS XHTML1.0 Frameset parsing &xnis; 
+PASS XHTML1.0 Frameset parsing &xodot; 
+PASS XHTML1.0 Frameset parsing &Xopf; 
+PASS XHTML1.0 Frameset parsing &xopf; 
+PASS XHTML1.0 Frameset parsing &xoplus; 
+PASS XHTML1.0 Frameset parsing &xotime; 
+PASS XHTML1.0 Frameset parsing &xrarr; 
+PASS XHTML1.0 Frameset parsing &xrArr; 
+PASS XHTML1.0 Frameset parsing &Xscr; 
+PASS XHTML1.0 Frameset parsing &xscr; 
+PASS XHTML1.0 Frameset parsing &xsqcup; 
+PASS XHTML1.0 Frameset parsing &xuplus; 
+PASS XHTML1.0 Frameset parsing &xutri; 
+PASS XHTML1.0 Frameset parsing &xvee; 
+PASS XHTML1.0 Frameset parsing &xwedge; 
+PASS XHTML1.0 Frameset parsing &Yacute; 
+PASS XHTML1.0 Frameset parsing &yacute; 
+PASS XHTML1.0 Frameset parsing &YAcy; 
+PASS XHTML1.0 Frameset parsing &yacy; 
+PASS XHTML1.0 Frameset parsing &Ycirc; 
+PASS XHTML1.0 Frameset parsing &ycirc; 
+PASS XHTML1.0 Frameset parsing &Ycy; 
+PASS XHTML1.0 Frameset parsing &ycy; 
+PASS XHTML1.0 Frameset parsing &yen; 
+PASS XHTML1.0 Frameset parsing &Yfr; 
+PASS XHTML1.0 Frameset parsing &yfr; 
+PASS XHTML1.0 Frameset parsing &YIcy; 
+PASS XHTML1.0 Frameset parsing &yicy; 
+PASS XHTML1.0 Frameset parsing &Yopf; 
+PASS XHTML1.0 Frameset parsing &yopf; 
+PASS XHTML1.0 Frameset parsing &Yscr; 
+PASS XHTML1.0 Frameset parsing &yscr; 
+PASS XHTML1.0 Frameset parsing &YUcy; 
+PASS XHTML1.0 Frameset parsing &yucy; 
+PASS XHTML1.0 Frameset parsing &yuml; 
+PASS XHTML1.0 Frameset parsing &Yuml; 
+PASS XHTML1.0 Frameset parsing &Zacute; 
+PASS XHTML1.0 Frameset parsing &zacute; 
+PASS XHTML1.0 Frameset parsing &Zcaron; 
+PASS XHTML1.0 Frameset parsing &zcaron; 
+PASS XHTML1.0 Frameset parsing &Zcy; 
+PASS XHTML1.0 Frameset parsing &zcy; 
+PASS XHTML1.0 Frameset parsing &Zdot; 
+PASS XHTML1.0 Frameset parsing &zdot; 
+PASS XHTML1.0 Frameset parsing &zeetrf; 
+PASS XHTML1.0 Frameset parsing &ZeroWidthSpace; 
+PASS XHTML1.0 Frameset parsing &Zeta; 
+PASS XHTML1.0 Frameset parsing &zeta; 
+PASS XHTML1.0 Frameset parsing &zfr; 
+PASS XHTML1.0 Frameset parsing &Zfr; 
+PASS XHTML1.0 Frameset parsing &ZHcy; 
+PASS XHTML1.0 Frameset parsing &zhcy; 
+PASS XHTML1.0 Frameset parsing &zigrarr; 
+PASS XHTML1.0 Frameset parsing &zopf; 
+PASS XHTML1.0 Frameset parsing &Zopf; 
+PASS XHTML1.0 Frameset parsing &Zscr; 
+PASS XHTML1.0 Frameset parsing &zscr; 
+PASS XHTML1.0 Frameset parsing &zwj; 
+PASS XHTML1.0 Frameset parsing &zwnj; 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-4.htm b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-4.htm
new file mode 100644
index 0000000..53a68b4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-4.htm
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta name=timeout content=long>
+<title>HTML entities for various XHTML Doctype</title>
+<link rel=help href="http://w3c.github.io/html/xhtml.html#parsing-xhtml-documents">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe id="test" src="xhtml-mathml-dtd-entity-support.htm"></iframe>
+
+<script>
+onload = () => document.getElementById("test").contentWindow.run(
+["application/xhtml+xml", "-//W3C//DTD XHTML 1.0 Frameset//EN", "foo", "XHTML1.0 Frameset"]);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-5-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-5-expected.txt
new file mode 100644
index 0000000..3a94ff0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-5-expected.txt
@@ -0,0 +1,2129 @@
+This is a testharness.js-based test.
+Found 2125 tests; 2122 PASS, 3 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS XHTML Basic parsing &Aacute; 
+PASS XHTML Basic parsing &aacute; 
+PASS XHTML Basic parsing &Abreve; 
+PASS XHTML Basic parsing &abreve; 
+PASS XHTML Basic parsing &ac; 
+PASS XHTML Basic parsing &acd; 
+PASS XHTML Basic parsing &acE; 
+PASS XHTML Basic parsing &Acirc; 
+PASS XHTML Basic parsing &acirc; 
+PASS XHTML Basic parsing &acute; 
+PASS XHTML Basic parsing &Acy; 
+PASS XHTML Basic parsing &acy; 
+PASS XHTML Basic parsing &AElig; 
+PASS XHTML Basic parsing &aelig; 
+PASS XHTML Basic parsing &af; 
+PASS XHTML Basic parsing &Afr; 
+PASS XHTML Basic parsing &afr; 
+PASS XHTML Basic parsing &Agrave; 
+PASS XHTML Basic parsing &agrave; 
+PASS XHTML Basic parsing &alefsym; 
+PASS XHTML Basic parsing &aleph; 
+PASS XHTML Basic parsing &Alpha; 
+PASS XHTML Basic parsing &alpha; 
+PASS XHTML Basic parsing &Amacr; 
+PASS XHTML Basic parsing &amacr; 
+PASS XHTML Basic parsing &amalg; 
+PASS XHTML Basic parsing &amp; 
+FAIL XHTML Basic parsing &AMP; assert_true: expected true got false
+PASS XHTML Basic parsing &andand; 
+PASS XHTML Basic parsing &And; 
+PASS XHTML Basic parsing &and; 
+PASS XHTML Basic parsing &andd; 
+PASS XHTML Basic parsing &andslope; 
+PASS XHTML Basic parsing &andv; 
+PASS XHTML Basic parsing &ang; 
+PASS XHTML Basic parsing &ange; 
+PASS XHTML Basic parsing &angle; 
+PASS XHTML Basic parsing &angmsdaa; 
+PASS XHTML Basic parsing &angmsdab; 
+PASS XHTML Basic parsing &angmsdac; 
+PASS XHTML Basic parsing &angmsdad; 
+PASS XHTML Basic parsing &angmsdae; 
+PASS XHTML Basic parsing &angmsdaf; 
+PASS XHTML Basic parsing &angmsdag; 
+PASS XHTML Basic parsing &angmsdah; 
+PASS XHTML Basic parsing &angmsd; 
+PASS XHTML Basic parsing &angrt; 
+PASS XHTML Basic parsing &angrtvb; 
+PASS XHTML Basic parsing &angrtvbd; 
+PASS XHTML Basic parsing &angsph; 
+PASS XHTML Basic parsing &angst; 
+PASS XHTML Basic parsing &angzarr; 
+PASS XHTML Basic parsing &Aogon; 
+PASS XHTML Basic parsing &aogon; 
+PASS XHTML Basic parsing &Aopf; 
+PASS XHTML Basic parsing &aopf; 
+PASS XHTML Basic parsing &apacir; 
+PASS XHTML Basic parsing &ap; 
+PASS XHTML Basic parsing &apE; 
+PASS XHTML Basic parsing &ape; 
+PASS XHTML Basic parsing &apid; 
+PASS XHTML Basic parsing &apos; 
+PASS XHTML Basic parsing &ApplyFunction; 
+PASS XHTML Basic parsing &approx; 
+PASS XHTML Basic parsing &approxeq; 
+PASS XHTML Basic parsing &Aring; 
+PASS XHTML Basic parsing &aring; 
+PASS XHTML Basic parsing &Ascr; 
+PASS XHTML Basic parsing &ascr; 
+PASS XHTML Basic parsing &Assign; 
+PASS XHTML Basic parsing &ast; 
+PASS XHTML Basic parsing &asymp; 
+PASS XHTML Basic parsing &asympeq; 
+PASS XHTML Basic parsing &Atilde; 
+PASS XHTML Basic parsing &atilde; 
+PASS XHTML Basic parsing &Auml; 
+PASS XHTML Basic parsing &auml; 
+PASS XHTML Basic parsing &awconint; 
+PASS XHTML Basic parsing &awint; 
+PASS XHTML Basic parsing &backcong; 
+PASS XHTML Basic parsing &backepsilon; 
+PASS XHTML Basic parsing &backprime; 
+PASS XHTML Basic parsing &backsim; 
+PASS XHTML Basic parsing &backsimeq; 
+PASS XHTML Basic parsing &Backslash; 
+PASS XHTML Basic parsing &Barv; 
+PASS XHTML Basic parsing &barvee; 
+PASS XHTML Basic parsing &barwed; 
+PASS XHTML Basic parsing &Barwed; 
+PASS XHTML Basic parsing &barwedge; 
+PASS XHTML Basic parsing &bbrk; 
+PASS XHTML Basic parsing &bbrktbrk; 
+PASS XHTML Basic parsing &bcong; 
+PASS XHTML Basic parsing &Bcy; 
+PASS XHTML Basic parsing &bcy; 
+PASS XHTML Basic parsing &bdquo; 
+PASS XHTML Basic parsing &becaus; 
+PASS XHTML Basic parsing &because; 
+PASS XHTML Basic parsing &Because; 
+PASS XHTML Basic parsing &bemptyv; 
+PASS XHTML Basic parsing &bepsi; 
+PASS XHTML Basic parsing &bernou; 
+PASS XHTML Basic parsing &Bernoullis; 
+PASS XHTML Basic parsing &Beta; 
+PASS XHTML Basic parsing &beta; 
+PASS XHTML Basic parsing &beth; 
+PASS XHTML Basic parsing &between; 
+PASS XHTML Basic parsing &Bfr; 
+PASS XHTML Basic parsing &bfr; 
+PASS XHTML Basic parsing &bigcap; 
+PASS XHTML Basic parsing &bigcirc; 
+PASS XHTML Basic parsing &bigcup; 
+PASS XHTML Basic parsing &bigodot; 
+PASS XHTML Basic parsing &bigoplus; 
+PASS XHTML Basic parsing &bigotimes; 
+PASS XHTML Basic parsing &bigsqcup; 
+PASS XHTML Basic parsing &bigstar; 
+PASS XHTML Basic parsing &bigtriangledown; 
+PASS XHTML Basic parsing &bigtriangleup; 
+PASS XHTML Basic parsing &biguplus; 
+PASS XHTML Basic parsing &bigvee; 
+PASS XHTML Basic parsing &bigwedge; 
+PASS XHTML Basic parsing &bkarow; 
+PASS XHTML Basic parsing &blacklozenge; 
+PASS XHTML Basic parsing &blacksquare; 
+PASS XHTML Basic parsing &blacktriangle; 
+PASS XHTML Basic parsing &blacktriangledown; 
+PASS XHTML Basic parsing &blacktriangleleft; 
+PASS XHTML Basic parsing &blacktriangleright; 
+PASS XHTML Basic parsing &blank; 
+PASS XHTML Basic parsing &blk12; 
+PASS XHTML Basic parsing &blk14; 
+PASS XHTML Basic parsing &blk34; 
+PASS XHTML Basic parsing &block; 
+PASS XHTML Basic parsing &bne; 
+PASS XHTML Basic parsing &bnequiv; 
+PASS XHTML Basic parsing &bNot; 
+PASS XHTML Basic parsing &bnot; 
+PASS XHTML Basic parsing &Bopf; 
+PASS XHTML Basic parsing &bopf; 
+PASS XHTML Basic parsing &bot; 
+PASS XHTML Basic parsing &bottom; 
+PASS XHTML Basic parsing &bowtie; 
+PASS XHTML Basic parsing &boxbox; 
+PASS XHTML Basic parsing &boxdl; 
+PASS XHTML Basic parsing &boxdL; 
+PASS XHTML Basic parsing &boxDl; 
+PASS XHTML Basic parsing &boxDL; 
+PASS XHTML Basic parsing &boxdr; 
+PASS XHTML Basic parsing &boxdR; 
+PASS XHTML Basic parsing &boxDr; 
+PASS XHTML Basic parsing &boxDR; 
+PASS XHTML Basic parsing &boxh; 
+PASS XHTML Basic parsing &boxH; 
+PASS XHTML Basic parsing &boxhd; 
+PASS XHTML Basic parsing &boxHd; 
+PASS XHTML Basic parsing &boxhD; 
+PASS XHTML Basic parsing &boxHD; 
+PASS XHTML Basic parsing &boxhu; 
+PASS XHTML Basic parsing &boxHu; 
+PASS XHTML Basic parsing &boxhU; 
+PASS XHTML Basic parsing &boxHU; 
+PASS XHTML Basic parsing &boxminus; 
+PASS XHTML Basic parsing &boxplus; 
+PASS XHTML Basic parsing &boxtimes; 
+PASS XHTML Basic parsing &boxul; 
+PASS XHTML Basic parsing &boxuL; 
+PASS XHTML Basic parsing &boxUl; 
+PASS XHTML Basic parsing &boxUL; 
+PASS XHTML Basic parsing &boxur; 
+PASS XHTML Basic parsing &boxuR; 
+PASS XHTML Basic parsing &boxUr; 
+PASS XHTML Basic parsing &boxUR; 
+PASS XHTML Basic parsing &boxv; 
+PASS XHTML Basic parsing &boxV; 
+PASS XHTML Basic parsing &boxvh; 
+PASS XHTML Basic parsing &boxvH; 
+PASS XHTML Basic parsing &boxVh; 
+PASS XHTML Basic parsing &boxVH; 
+PASS XHTML Basic parsing &boxvl; 
+PASS XHTML Basic parsing &boxvL; 
+PASS XHTML Basic parsing &boxVl; 
+PASS XHTML Basic parsing &boxVL; 
+PASS XHTML Basic parsing &boxvr; 
+PASS XHTML Basic parsing &boxvR; 
+PASS XHTML Basic parsing &boxVr; 
+PASS XHTML Basic parsing &boxVR; 
+PASS XHTML Basic parsing &bprime; 
+PASS XHTML Basic parsing &breve; 
+PASS XHTML Basic parsing &Breve; 
+PASS XHTML Basic parsing &brvbar; 
+PASS XHTML Basic parsing &bscr; 
+PASS XHTML Basic parsing &Bscr; 
+PASS XHTML Basic parsing &bsemi; 
+PASS XHTML Basic parsing &bsim; 
+PASS XHTML Basic parsing &bsime; 
+PASS XHTML Basic parsing &bsolb; 
+PASS XHTML Basic parsing &bsol; 
+PASS XHTML Basic parsing &bsolhsub; 
+PASS XHTML Basic parsing &bull; 
+PASS XHTML Basic parsing &bullet; 
+PASS XHTML Basic parsing &bump; 
+PASS XHTML Basic parsing &bumpE; 
+PASS XHTML Basic parsing &bumpe; 
+PASS XHTML Basic parsing &Bumpeq; 
+PASS XHTML Basic parsing &bumpeq; 
+PASS XHTML Basic parsing &Cacute; 
+PASS XHTML Basic parsing &cacute; 
+PASS XHTML Basic parsing &capand; 
+PASS XHTML Basic parsing &capbrcup; 
+PASS XHTML Basic parsing &capcap; 
+PASS XHTML Basic parsing &cap; 
+PASS XHTML Basic parsing &Cap; 
+PASS XHTML Basic parsing &capcup; 
+PASS XHTML Basic parsing &capdot; 
+PASS XHTML Basic parsing &CapitalDifferentialD; 
+PASS XHTML Basic parsing &caps; 
+PASS XHTML Basic parsing &caret; 
+PASS XHTML Basic parsing &caron; 
+PASS XHTML Basic parsing &Cayleys; 
+PASS XHTML Basic parsing &ccaps; 
+PASS XHTML Basic parsing &Ccaron; 
+PASS XHTML Basic parsing &ccaron; 
+PASS XHTML Basic parsing &Ccedil; 
+PASS XHTML Basic parsing &ccedil; 
+PASS XHTML Basic parsing &Ccirc; 
+PASS XHTML Basic parsing &ccirc; 
+PASS XHTML Basic parsing &Cconint; 
+PASS XHTML Basic parsing &ccups; 
+PASS XHTML Basic parsing &ccupssm; 
+PASS XHTML Basic parsing &Cdot; 
+PASS XHTML Basic parsing &cdot; 
+PASS XHTML Basic parsing &cedil; 
+PASS XHTML Basic parsing &Cedilla; 
+PASS XHTML Basic parsing &cemptyv; 
+PASS XHTML Basic parsing &cent; 
+PASS XHTML Basic parsing &centerdot; 
+PASS XHTML Basic parsing &CenterDot; 
+PASS XHTML Basic parsing &cfr; 
+PASS XHTML Basic parsing &Cfr; 
+PASS XHTML Basic parsing &CHcy; 
+PASS XHTML Basic parsing &chcy; 
+PASS XHTML Basic parsing &check; 
+PASS XHTML Basic parsing &checkmark; 
+PASS XHTML Basic parsing &Chi; 
+PASS XHTML Basic parsing &chi; 
+PASS XHTML Basic parsing &circ; 
+PASS XHTML Basic parsing &circeq; 
+PASS XHTML Basic parsing &circlearrowleft; 
+PASS XHTML Basic parsing &circlearrowright; 
+PASS XHTML Basic parsing &circledast; 
+PASS XHTML Basic parsing &circledcirc; 
+PASS XHTML Basic parsing &circleddash; 
+PASS XHTML Basic parsing &CircleDot; 
+PASS XHTML Basic parsing &circledR; 
+PASS XHTML Basic parsing &circledS; 
+PASS XHTML Basic parsing &CircleMinus; 
+PASS XHTML Basic parsing &CirclePlus; 
+PASS XHTML Basic parsing &CircleTimes; 
+PASS XHTML Basic parsing &cir; 
+PASS XHTML Basic parsing &cirE; 
+PASS XHTML Basic parsing &cire; 
+PASS XHTML Basic parsing &cirfnint; 
+PASS XHTML Basic parsing &cirmid; 
+PASS XHTML Basic parsing &cirscir; 
+PASS XHTML Basic parsing &ClockwiseContourIntegral; 
+PASS XHTML Basic parsing &CloseCurlyDoubleQuote; 
+PASS XHTML Basic parsing &CloseCurlyQuote; 
+PASS XHTML Basic parsing &clubs; 
+PASS XHTML Basic parsing &clubsuit; 
+PASS XHTML Basic parsing &colon; 
+PASS XHTML Basic parsing &Colon; 
+PASS XHTML Basic parsing &Colone; 
+PASS XHTML Basic parsing &colone; 
+PASS XHTML Basic parsing &coloneq; 
+PASS XHTML Basic parsing &comma; 
+PASS XHTML Basic parsing &commat; 
+PASS XHTML Basic parsing &comp; 
+PASS XHTML Basic parsing &compfn; 
+PASS XHTML Basic parsing &complement; 
+PASS XHTML Basic parsing &complexes; 
+PASS XHTML Basic parsing &cong; 
+PASS XHTML Basic parsing &congdot; 
+PASS XHTML Basic parsing &Congruent; 
+PASS XHTML Basic parsing &conint; 
+PASS XHTML Basic parsing &Conint; 
+PASS XHTML Basic parsing &ContourIntegral; 
+PASS XHTML Basic parsing &copf; 
+PASS XHTML Basic parsing &Copf; 
+PASS XHTML Basic parsing &coprod; 
+PASS XHTML Basic parsing &Coproduct; 
+PASS XHTML Basic parsing &copy; 
+PASS XHTML Basic parsing &COPY; 
+PASS XHTML Basic parsing &copysr; 
+PASS XHTML Basic parsing &CounterClockwiseContourIntegral; 
+PASS XHTML Basic parsing &crarr; 
+PASS XHTML Basic parsing &cross; 
+PASS XHTML Basic parsing &Cross; 
+PASS XHTML Basic parsing &Cscr; 
+PASS XHTML Basic parsing &cscr; 
+PASS XHTML Basic parsing &csub; 
+PASS XHTML Basic parsing &csube; 
+PASS XHTML Basic parsing &csup; 
+PASS XHTML Basic parsing &csupe; 
+PASS XHTML Basic parsing &ctdot; 
+PASS XHTML Basic parsing &cudarrl; 
+PASS XHTML Basic parsing &cudarrr; 
+PASS XHTML Basic parsing &cuepr; 
+PASS XHTML Basic parsing &cuesc; 
+PASS XHTML Basic parsing &cularr; 
+PASS XHTML Basic parsing &cularrp; 
+PASS XHTML Basic parsing &cupbrcap; 
+PASS XHTML Basic parsing &cupcap; 
+PASS XHTML Basic parsing &CupCap; 
+PASS XHTML Basic parsing &cup; 
+PASS XHTML Basic parsing &Cup; 
+PASS XHTML Basic parsing &cupcup; 
+PASS XHTML Basic parsing &cupdot; 
+PASS XHTML Basic parsing &cupor; 
+PASS XHTML Basic parsing &cups; 
+PASS XHTML Basic parsing &curarr; 
+PASS XHTML Basic parsing &curarrm; 
+PASS XHTML Basic parsing &curlyeqprec; 
+PASS XHTML Basic parsing &curlyeqsucc; 
+PASS XHTML Basic parsing &curlyvee; 
+PASS XHTML Basic parsing &curlywedge; 
+PASS XHTML Basic parsing &curren; 
+PASS XHTML Basic parsing &curvearrowleft; 
+PASS XHTML Basic parsing &curvearrowright; 
+PASS XHTML Basic parsing &cuvee; 
+PASS XHTML Basic parsing &cuwed; 
+PASS XHTML Basic parsing &cwconint; 
+PASS XHTML Basic parsing &cwint; 
+PASS XHTML Basic parsing &cylcty; 
+PASS XHTML Basic parsing &dagger; 
+PASS XHTML Basic parsing &Dagger; 
+PASS XHTML Basic parsing &daleth; 
+PASS XHTML Basic parsing &darr; 
+PASS XHTML Basic parsing &Darr; 
+PASS XHTML Basic parsing &dArr; 
+PASS XHTML Basic parsing &dash; 
+PASS XHTML Basic parsing &Dashv; 
+PASS XHTML Basic parsing &dashv; 
+PASS XHTML Basic parsing &dbkarow; 
+PASS XHTML Basic parsing &dblac; 
+PASS XHTML Basic parsing &Dcaron; 
+PASS XHTML Basic parsing &dcaron; 
+PASS XHTML Basic parsing &Dcy; 
+PASS XHTML Basic parsing &dcy; 
+PASS XHTML Basic parsing &ddagger; 
+PASS XHTML Basic parsing &ddarr; 
+PASS XHTML Basic parsing &DD; 
+PASS XHTML Basic parsing &dd; 
+PASS XHTML Basic parsing &DDotrahd; 
+PASS XHTML Basic parsing &ddotseq; 
+PASS XHTML Basic parsing &deg; 
+PASS XHTML Basic parsing &Del; 
+PASS XHTML Basic parsing &Delta; 
+PASS XHTML Basic parsing &delta; 
+PASS XHTML Basic parsing &demptyv; 
+PASS XHTML Basic parsing &dfisht; 
+PASS XHTML Basic parsing &Dfr; 
+PASS XHTML Basic parsing &dfr; 
+PASS XHTML Basic parsing &dHar; 
+PASS XHTML Basic parsing &dharl; 
+PASS XHTML Basic parsing &dharr; 
+PASS XHTML Basic parsing &DiacriticalAcute; 
+PASS XHTML Basic parsing &DiacriticalDot; 
+PASS XHTML Basic parsing &DiacriticalDoubleAcute; 
+PASS XHTML Basic parsing &DiacriticalGrave; 
+PASS XHTML Basic parsing &DiacriticalTilde; 
+PASS XHTML Basic parsing &diam; 
+PASS XHTML Basic parsing &diamond; 
+PASS XHTML Basic parsing &Diamond; 
+PASS XHTML Basic parsing &diamondsuit; 
+PASS XHTML Basic parsing &diams; 
+PASS XHTML Basic parsing &die; 
+PASS XHTML Basic parsing &DifferentialD; 
+PASS XHTML Basic parsing &digamma; 
+PASS XHTML Basic parsing &disin; 
+PASS XHTML Basic parsing &div; 
+PASS XHTML Basic parsing &divide; 
+PASS XHTML Basic parsing &divideontimes; 
+PASS XHTML Basic parsing &divonx; 
+PASS XHTML Basic parsing &DJcy; 
+PASS XHTML Basic parsing &djcy; 
+PASS XHTML Basic parsing &dlcorn; 
+PASS XHTML Basic parsing &dlcrop; 
+PASS XHTML Basic parsing &dollar; 
+PASS XHTML Basic parsing &Dopf; 
+PASS XHTML Basic parsing &dopf; 
+PASS XHTML Basic parsing &Dot; 
+PASS XHTML Basic parsing &dot; 
+PASS XHTML Basic parsing &DotDot; 
+PASS XHTML Basic parsing &doteq; 
+PASS XHTML Basic parsing &doteqdot; 
+PASS XHTML Basic parsing &DotEqual; 
+PASS XHTML Basic parsing &dotminus; 
+PASS XHTML Basic parsing &dotplus; 
+PASS XHTML Basic parsing &dotsquare; 
+PASS XHTML Basic parsing &doublebarwedge; 
+PASS XHTML Basic parsing &DoubleContourIntegral; 
+PASS XHTML Basic parsing &DoubleDot; 
+PASS XHTML Basic parsing &DoubleDownArrow; 
+PASS XHTML Basic parsing &DoubleLeftArrow; 
+PASS XHTML Basic parsing &DoubleLeftRightArrow; 
+PASS XHTML Basic parsing &DoubleLeftTee; 
+PASS XHTML Basic parsing &DoubleLongLeftArrow; 
+PASS XHTML Basic parsing &DoubleLongLeftRightArrow; 
+PASS XHTML Basic parsing &DoubleLongRightArrow; 
+PASS XHTML Basic parsing &DoubleRightArrow; 
+PASS XHTML Basic parsing &DoubleRightTee; 
+PASS XHTML Basic parsing &DoubleUpArrow; 
+PASS XHTML Basic parsing &DoubleUpDownArrow; 
+PASS XHTML Basic parsing &DoubleVerticalBar; 
+PASS XHTML Basic parsing &DownArrowBar; 
+PASS XHTML Basic parsing &downarrow; 
+PASS XHTML Basic parsing &DownArrow; 
+PASS XHTML Basic parsing &Downarrow; 
+PASS XHTML Basic parsing &DownArrowUpArrow; 
+PASS XHTML Basic parsing &DownBreve; 
+PASS XHTML Basic parsing &downdownarrows; 
+PASS XHTML Basic parsing &downharpoonleft; 
+PASS XHTML Basic parsing &downharpoonright; 
+PASS XHTML Basic parsing &DownLeftRightVector; 
+PASS XHTML Basic parsing &DownLeftTeeVector; 
+PASS XHTML Basic parsing &DownLeftVectorBar; 
+PASS XHTML Basic parsing &DownLeftVector; 
+PASS XHTML Basic parsing &DownRightTeeVector; 
+PASS XHTML Basic parsing &DownRightVectorBar; 
+PASS XHTML Basic parsing &DownRightVector; 
+PASS XHTML Basic parsing &DownTeeArrow; 
+PASS XHTML Basic parsing &DownTee; 
+PASS XHTML Basic parsing &drbkarow; 
+PASS XHTML Basic parsing &drcorn; 
+PASS XHTML Basic parsing &drcrop; 
+PASS XHTML Basic parsing &Dscr; 
+PASS XHTML Basic parsing &dscr; 
+PASS XHTML Basic parsing &DScy; 
+PASS XHTML Basic parsing &dscy; 
+PASS XHTML Basic parsing &dsol; 
+PASS XHTML Basic parsing &Dstrok; 
+PASS XHTML Basic parsing &dstrok; 
+PASS XHTML Basic parsing &dtdot; 
+PASS XHTML Basic parsing &dtri; 
+PASS XHTML Basic parsing &dtrif; 
+PASS XHTML Basic parsing &duarr; 
+PASS XHTML Basic parsing &duhar; 
+PASS XHTML Basic parsing &dwangle; 
+PASS XHTML Basic parsing &DZcy; 
+PASS XHTML Basic parsing &dzcy; 
+PASS XHTML Basic parsing &dzigrarr; 
+PASS XHTML Basic parsing &Eacute; 
+PASS XHTML Basic parsing &eacute; 
+PASS XHTML Basic parsing &easter; 
+PASS XHTML Basic parsing &Ecaron; 
+PASS XHTML Basic parsing &ecaron; 
+PASS XHTML Basic parsing &Ecirc; 
+PASS XHTML Basic parsing &ecirc; 
+PASS XHTML Basic parsing &ecir; 
+PASS XHTML Basic parsing &ecolon; 
+PASS XHTML Basic parsing &Ecy; 
+PASS XHTML Basic parsing &ecy; 
+PASS XHTML Basic parsing &eDDot; 
+PASS XHTML Basic parsing &Edot; 
+PASS XHTML Basic parsing &edot; 
+PASS XHTML Basic parsing &eDot; 
+PASS XHTML Basic parsing &ee; 
+PASS XHTML Basic parsing &efDot; 
+PASS XHTML Basic parsing &Efr; 
+PASS XHTML Basic parsing &efr; 
+PASS XHTML Basic parsing &eg; 
+PASS XHTML Basic parsing &Egrave; 
+PASS XHTML Basic parsing &egrave; 
+PASS XHTML Basic parsing &egs; 
+PASS XHTML Basic parsing &egsdot; 
+PASS XHTML Basic parsing &el; 
+PASS XHTML Basic parsing &Element; 
+PASS XHTML Basic parsing &elinters; 
+PASS XHTML Basic parsing &ell; 
+PASS XHTML Basic parsing &els; 
+PASS XHTML Basic parsing &elsdot; 
+PASS XHTML Basic parsing &Emacr; 
+PASS XHTML Basic parsing &emacr; 
+PASS XHTML Basic parsing &empty; 
+PASS XHTML Basic parsing &emptyset; 
+PASS XHTML Basic parsing &EmptySmallSquare; 
+PASS XHTML Basic parsing &emptyv; 
+PASS XHTML Basic parsing &EmptyVerySmallSquare; 
+PASS XHTML Basic parsing &emsp13; 
+PASS XHTML Basic parsing &emsp14; 
+PASS XHTML Basic parsing &emsp; 
+PASS XHTML Basic parsing &ENG; 
+PASS XHTML Basic parsing &eng; 
+PASS XHTML Basic parsing &ensp; 
+PASS XHTML Basic parsing &Eogon; 
+PASS XHTML Basic parsing &eogon; 
+PASS XHTML Basic parsing &Eopf; 
+PASS XHTML Basic parsing &eopf; 
+PASS XHTML Basic parsing &epar; 
+PASS XHTML Basic parsing &eparsl; 
+PASS XHTML Basic parsing &eplus; 
+PASS XHTML Basic parsing &epsi; 
+PASS XHTML Basic parsing &Epsilon; 
+PASS XHTML Basic parsing &epsilon; 
+PASS XHTML Basic parsing &epsiv; 
+PASS XHTML Basic parsing &eqcirc; 
+PASS XHTML Basic parsing &eqcolon; 
+PASS XHTML Basic parsing &eqsim; 
+PASS XHTML Basic parsing &eqslantgtr; 
+PASS XHTML Basic parsing &eqslantless; 
+PASS XHTML Basic parsing &Equal; 
+PASS XHTML Basic parsing &equals; 
+PASS XHTML Basic parsing &EqualTilde; 
+PASS XHTML Basic parsing &equest; 
+PASS XHTML Basic parsing &Equilibrium; 
+PASS XHTML Basic parsing &equiv; 
+PASS XHTML Basic parsing &equivDD; 
+PASS XHTML Basic parsing &eqvparsl; 
+PASS XHTML Basic parsing &erarr; 
+PASS XHTML Basic parsing &erDot; 
+PASS XHTML Basic parsing &escr; 
+PASS XHTML Basic parsing &Escr; 
+PASS XHTML Basic parsing &esdot; 
+PASS XHTML Basic parsing &Esim; 
+PASS XHTML Basic parsing &esim; 
+PASS XHTML Basic parsing &Eta; 
+PASS XHTML Basic parsing &eta; 
+PASS XHTML Basic parsing &ETH; 
+PASS XHTML Basic parsing &eth; 
+PASS XHTML Basic parsing &Euml; 
+PASS XHTML Basic parsing &euml; 
+PASS XHTML Basic parsing &euro; 
+PASS XHTML Basic parsing &excl; 
+PASS XHTML Basic parsing &exist; 
+PASS XHTML Basic parsing &Exists; 
+PASS XHTML Basic parsing &expectation; 
+PASS XHTML Basic parsing &exponentiale; 
+PASS XHTML Basic parsing &ExponentialE; 
+PASS XHTML Basic parsing &fallingdotseq; 
+PASS XHTML Basic parsing &Fcy; 
+PASS XHTML Basic parsing &fcy; 
+PASS XHTML Basic parsing &female; 
+PASS XHTML Basic parsing &ffilig; 
+PASS XHTML Basic parsing &fflig; 
+PASS XHTML Basic parsing &ffllig; 
+PASS XHTML Basic parsing &Ffr; 
+PASS XHTML Basic parsing &ffr; 
+PASS XHTML Basic parsing &filig; 
+PASS XHTML Basic parsing &FilledSmallSquare; 
+PASS XHTML Basic parsing &FilledVerySmallSquare; 
+PASS XHTML Basic parsing &fjlig; 
+PASS XHTML Basic parsing &flat; 
+PASS XHTML Basic parsing &fllig; 
+PASS XHTML Basic parsing &fltns; 
+PASS XHTML Basic parsing &fnof; 
+PASS XHTML Basic parsing &Fopf; 
+PASS XHTML Basic parsing &fopf; 
+PASS XHTML Basic parsing &forall; 
+PASS XHTML Basic parsing &ForAll; 
+PASS XHTML Basic parsing &fork; 
+PASS XHTML Basic parsing &forkv; 
+PASS XHTML Basic parsing &Fouriertrf; 
+PASS XHTML Basic parsing &fpartint; 
+PASS XHTML Basic parsing &frac12; 
+PASS XHTML Basic parsing &frac13; 
+PASS XHTML Basic parsing &frac14; 
+PASS XHTML Basic parsing &frac15; 
+PASS XHTML Basic parsing &frac16; 
+PASS XHTML Basic parsing &frac18; 
+PASS XHTML Basic parsing &frac23; 
+PASS XHTML Basic parsing &frac25; 
+PASS XHTML Basic parsing &frac34; 
+PASS XHTML Basic parsing &frac35; 
+PASS XHTML Basic parsing &frac38; 
+PASS XHTML Basic parsing &frac45; 
+PASS XHTML Basic parsing &frac56; 
+PASS XHTML Basic parsing &frac58; 
+PASS XHTML Basic parsing &frac78; 
+PASS XHTML Basic parsing &frasl; 
+PASS XHTML Basic parsing &frown; 
+PASS XHTML Basic parsing &fscr; 
+PASS XHTML Basic parsing &Fscr; 
+PASS XHTML Basic parsing &gacute; 
+PASS XHTML Basic parsing &Gamma; 
+PASS XHTML Basic parsing &gamma; 
+PASS XHTML Basic parsing &Gammad; 
+PASS XHTML Basic parsing &gammad; 
+PASS XHTML Basic parsing &gap; 
+PASS XHTML Basic parsing &Gbreve; 
+PASS XHTML Basic parsing &gbreve; 
+PASS XHTML Basic parsing &Gcedil; 
+PASS XHTML Basic parsing &Gcirc; 
+PASS XHTML Basic parsing &gcirc; 
+PASS XHTML Basic parsing &Gcy; 
+PASS XHTML Basic parsing &gcy; 
+PASS XHTML Basic parsing &Gdot; 
+PASS XHTML Basic parsing &gdot; 
+PASS XHTML Basic parsing &ge; 
+PASS XHTML Basic parsing &gE; 
+PASS XHTML Basic parsing &gEl; 
+PASS XHTML Basic parsing &gel; 
+PASS XHTML Basic parsing &geq; 
+PASS XHTML Basic parsing &geqq; 
+PASS XHTML Basic parsing &geqslant; 
+PASS XHTML Basic parsing &gescc; 
+PASS XHTML Basic parsing &ges; 
+PASS XHTML Basic parsing &gesdot; 
+PASS XHTML Basic parsing &gesdoto; 
+PASS XHTML Basic parsing &gesdotol; 
+PASS XHTML Basic parsing &gesl; 
+PASS XHTML Basic parsing &gesles; 
+PASS XHTML Basic parsing &Gfr; 
+PASS XHTML Basic parsing &gfr; 
+PASS XHTML Basic parsing &gg; 
+PASS XHTML Basic parsing &Gg; 
+PASS XHTML Basic parsing &ggg; 
+PASS XHTML Basic parsing &gimel; 
+PASS XHTML Basic parsing &GJcy; 
+PASS XHTML Basic parsing &gjcy; 
+PASS XHTML Basic parsing &gla; 
+PASS XHTML Basic parsing &gl; 
+PASS XHTML Basic parsing &glE; 
+PASS XHTML Basic parsing &glj; 
+PASS XHTML Basic parsing &gnap; 
+PASS XHTML Basic parsing &gnapprox; 
+PASS XHTML Basic parsing &gne; 
+PASS XHTML Basic parsing &gnE; 
+PASS XHTML Basic parsing &gneq; 
+PASS XHTML Basic parsing &gneqq; 
+PASS XHTML Basic parsing &gnsim; 
+PASS XHTML Basic parsing &Gopf; 
+PASS XHTML Basic parsing &gopf; 
+PASS XHTML Basic parsing &grave; 
+PASS XHTML Basic parsing &GreaterEqual; 
+PASS XHTML Basic parsing &GreaterEqualLess; 
+PASS XHTML Basic parsing &GreaterFullEqual; 
+PASS XHTML Basic parsing &GreaterGreater; 
+PASS XHTML Basic parsing &GreaterLess; 
+PASS XHTML Basic parsing &GreaterSlantEqual; 
+PASS XHTML Basic parsing &GreaterTilde; 
+PASS XHTML Basic parsing &Gscr; 
+PASS XHTML Basic parsing &gscr; 
+PASS XHTML Basic parsing &gsim; 
+PASS XHTML Basic parsing &gsime; 
+PASS XHTML Basic parsing &gsiml; 
+PASS XHTML Basic parsing &gtcc; 
+PASS XHTML Basic parsing &gtcir; 
+PASS XHTML Basic parsing &gt; 
+PASS XHTML Basic parsing &GT; 
+PASS XHTML Basic parsing &Gt; 
+PASS XHTML Basic parsing &gtdot; 
+PASS XHTML Basic parsing &gtlPar; 
+PASS XHTML Basic parsing &gtquest; 
+PASS XHTML Basic parsing &gtrapprox; 
+PASS XHTML Basic parsing &gtrarr; 
+PASS XHTML Basic parsing &gtrdot; 
+PASS XHTML Basic parsing &gtreqless; 
+PASS XHTML Basic parsing &gtreqqless; 
+PASS XHTML Basic parsing &gtrless; 
+PASS XHTML Basic parsing &gtrsim; 
+PASS XHTML Basic parsing &gvertneqq; 
+PASS XHTML Basic parsing &gvnE; 
+PASS XHTML Basic parsing &Hacek; 
+PASS XHTML Basic parsing &hairsp; 
+PASS XHTML Basic parsing &half; 
+PASS XHTML Basic parsing &hamilt; 
+PASS XHTML Basic parsing &HARDcy; 
+PASS XHTML Basic parsing &hardcy; 
+PASS XHTML Basic parsing &harrcir; 
+PASS XHTML Basic parsing &harr; 
+PASS XHTML Basic parsing &hArr; 
+PASS XHTML Basic parsing &harrw; 
+PASS XHTML Basic parsing &Hat; 
+PASS XHTML Basic parsing &hbar; 
+PASS XHTML Basic parsing &Hcirc; 
+PASS XHTML Basic parsing &hcirc; 
+PASS XHTML Basic parsing &hearts; 
+PASS XHTML Basic parsing &heartsuit; 
+PASS XHTML Basic parsing &hellip; 
+PASS XHTML Basic parsing &hercon; 
+PASS XHTML Basic parsing &hfr; 
+PASS XHTML Basic parsing &Hfr; 
+PASS XHTML Basic parsing &HilbertSpace; 
+PASS XHTML Basic parsing &hksearow; 
+PASS XHTML Basic parsing &hkswarow; 
+PASS XHTML Basic parsing &hoarr; 
+PASS XHTML Basic parsing &homtht; 
+PASS XHTML Basic parsing &hookleftarrow; 
+PASS XHTML Basic parsing &hookrightarrow; 
+PASS XHTML Basic parsing &hopf; 
+PASS XHTML Basic parsing &Hopf; 
+PASS XHTML Basic parsing &horbar; 
+PASS XHTML Basic parsing &HorizontalLine; 
+PASS XHTML Basic parsing &hscr; 
+PASS XHTML Basic parsing &Hscr; 
+PASS XHTML Basic parsing &hslash; 
+PASS XHTML Basic parsing &Hstrok; 
+PASS XHTML Basic parsing &hstrok; 
+PASS XHTML Basic parsing &HumpDownHump; 
+PASS XHTML Basic parsing &HumpEqual; 
+PASS XHTML Basic parsing &hybull; 
+PASS XHTML Basic parsing &hyphen; 
+PASS XHTML Basic parsing &Iacute; 
+PASS XHTML Basic parsing &iacute; 
+PASS XHTML Basic parsing &ic; 
+PASS XHTML Basic parsing &Icirc; 
+PASS XHTML Basic parsing &icirc; 
+PASS XHTML Basic parsing &Icy; 
+PASS XHTML Basic parsing &icy; 
+PASS XHTML Basic parsing &Idot; 
+PASS XHTML Basic parsing &IEcy; 
+PASS XHTML Basic parsing &iecy; 
+PASS XHTML Basic parsing &iexcl; 
+PASS XHTML Basic parsing &iff; 
+PASS XHTML Basic parsing &ifr; 
+PASS XHTML Basic parsing &Ifr; 
+PASS XHTML Basic parsing &Igrave; 
+PASS XHTML Basic parsing &igrave; 
+PASS XHTML Basic parsing &ii; 
+PASS XHTML Basic parsing &iiiint; 
+PASS XHTML Basic parsing &iiint; 
+PASS XHTML Basic parsing &iinfin; 
+PASS XHTML Basic parsing &iiota; 
+PASS XHTML Basic parsing &IJlig; 
+PASS XHTML Basic parsing &ijlig; 
+PASS XHTML Basic parsing &Imacr; 
+PASS XHTML Basic parsing &imacr; 
+PASS XHTML Basic parsing &image; 
+PASS XHTML Basic parsing &ImaginaryI; 
+PASS XHTML Basic parsing &imagline; 
+PASS XHTML Basic parsing &imagpart; 
+PASS XHTML Basic parsing &imath; 
+PASS XHTML Basic parsing &Im; 
+PASS XHTML Basic parsing &imof; 
+PASS XHTML Basic parsing &imped; 
+PASS XHTML Basic parsing &Implies; 
+PASS XHTML Basic parsing &incare; 
+PASS XHTML Basic parsing &in; 
+PASS XHTML Basic parsing &infin; 
+PASS XHTML Basic parsing &infintie; 
+PASS XHTML Basic parsing &inodot; 
+PASS XHTML Basic parsing &intcal; 
+PASS XHTML Basic parsing &int; 
+PASS XHTML Basic parsing &Int; 
+PASS XHTML Basic parsing &integers; 
+PASS XHTML Basic parsing &Integral; 
+PASS XHTML Basic parsing &intercal; 
+PASS XHTML Basic parsing &Intersection; 
+PASS XHTML Basic parsing &intlarhk; 
+PASS XHTML Basic parsing &intprod; 
+PASS XHTML Basic parsing &InvisibleComma; 
+PASS XHTML Basic parsing &InvisibleTimes; 
+PASS XHTML Basic parsing &IOcy; 
+PASS XHTML Basic parsing &iocy; 
+PASS XHTML Basic parsing &Iogon; 
+PASS XHTML Basic parsing &iogon; 
+PASS XHTML Basic parsing &Iopf; 
+PASS XHTML Basic parsing &iopf; 
+PASS XHTML Basic parsing &Iota; 
+PASS XHTML Basic parsing &iota; 
+PASS XHTML Basic parsing &iprod; 
+PASS XHTML Basic parsing &iquest; 
+PASS XHTML Basic parsing &iscr; 
+PASS XHTML Basic parsing &Iscr; 
+PASS XHTML Basic parsing &isin; 
+PASS XHTML Basic parsing &isindot; 
+PASS XHTML Basic parsing &isinE; 
+PASS XHTML Basic parsing &isins; 
+PASS XHTML Basic parsing &isinsv; 
+PASS XHTML Basic parsing &isinv; 
+PASS XHTML Basic parsing &it; 
+PASS XHTML Basic parsing &Itilde; 
+PASS XHTML Basic parsing &itilde; 
+PASS XHTML Basic parsing &Iukcy; 
+PASS XHTML Basic parsing &iukcy; 
+PASS XHTML Basic parsing &Iuml; 
+PASS XHTML Basic parsing &iuml; 
+PASS XHTML Basic parsing &Jcirc; 
+PASS XHTML Basic parsing &jcirc; 
+PASS XHTML Basic parsing &Jcy; 
+PASS XHTML Basic parsing &jcy; 
+PASS XHTML Basic parsing &Jfr; 
+PASS XHTML Basic parsing &jfr; 
+PASS XHTML Basic parsing &jmath; 
+PASS XHTML Basic parsing &Jopf; 
+PASS XHTML Basic parsing &jopf; 
+PASS XHTML Basic parsing &Jscr; 
+PASS XHTML Basic parsing &jscr; 
+PASS XHTML Basic parsing &Jsercy; 
+PASS XHTML Basic parsing &jsercy; 
+PASS XHTML Basic parsing &Jukcy; 
+PASS XHTML Basic parsing &jukcy; 
+PASS XHTML Basic parsing &Kappa; 
+PASS XHTML Basic parsing &kappa; 
+PASS XHTML Basic parsing &kappav; 
+PASS XHTML Basic parsing &Kcedil; 
+PASS XHTML Basic parsing &kcedil; 
+PASS XHTML Basic parsing &Kcy; 
+PASS XHTML Basic parsing &kcy; 
+PASS XHTML Basic parsing &Kfr; 
+PASS XHTML Basic parsing &kfr; 
+PASS XHTML Basic parsing &kgreen; 
+PASS XHTML Basic parsing &KHcy; 
+PASS XHTML Basic parsing &khcy; 
+PASS XHTML Basic parsing &KJcy; 
+PASS XHTML Basic parsing &kjcy; 
+PASS XHTML Basic parsing &Kopf; 
+PASS XHTML Basic parsing &kopf; 
+PASS XHTML Basic parsing &Kscr; 
+PASS XHTML Basic parsing &kscr; 
+PASS XHTML Basic parsing &lAarr; 
+PASS XHTML Basic parsing &Lacute; 
+PASS XHTML Basic parsing &lacute; 
+PASS XHTML Basic parsing &laemptyv; 
+PASS XHTML Basic parsing &lagran; 
+PASS XHTML Basic parsing &Lambda; 
+PASS XHTML Basic parsing &lambda; 
+PASS XHTML Basic parsing &lang; 
+PASS XHTML Basic parsing &Lang; 
+PASS XHTML Basic parsing &langd; 
+PASS XHTML Basic parsing &langle; 
+PASS XHTML Basic parsing &lap; 
+PASS XHTML Basic parsing &Laplacetrf; 
+PASS XHTML Basic parsing &laquo; 
+PASS XHTML Basic parsing &larrb; 
+PASS XHTML Basic parsing &larrbfs; 
+PASS XHTML Basic parsing &larr; 
+PASS XHTML Basic parsing &Larr; 
+PASS XHTML Basic parsing &lArr; 
+PASS XHTML Basic parsing &larrfs; 
+PASS XHTML Basic parsing &larrhk; 
+PASS XHTML Basic parsing &larrlp; 
+PASS XHTML Basic parsing &larrpl; 
+PASS XHTML Basic parsing &larrsim; 
+PASS XHTML Basic parsing &larrtl; 
+PASS XHTML Basic parsing &latail; 
+PASS XHTML Basic parsing &lAtail; 
+PASS XHTML Basic parsing &lat; 
+PASS XHTML Basic parsing &late; 
+PASS XHTML Basic parsing &lates; 
+PASS XHTML Basic parsing &lbarr; 
+PASS XHTML Basic parsing &lBarr; 
+PASS XHTML Basic parsing &lbbrk; 
+PASS XHTML Basic parsing &lbrace; 
+PASS XHTML Basic parsing &lbrack; 
+PASS XHTML Basic parsing &lbrke; 
+PASS XHTML Basic parsing &lbrksld; 
+PASS XHTML Basic parsing &lbrkslu; 
+PASS XHTML Basic parsing &Lcaron; 
+PASS XHTML Basic parsing &lcaron; 
+PASS XHTML Basic parsing &Lcedil; 
+PASS XHTML Basic parsing &lcedil; 
+PASS XHTML Basic parsing &lceil; 
+PASS XHTML Basic parsing &lcub; 
+PASS XHTML Basic parsing &Lcy; 
+PASS XHTML Basic parsing &lcy; 
+PASS XHTML Basic parsing &ldca; 
+PASS XHTML Basic parsing &ldquo; 
+PASS XHTML Basic parsing &ldquor; 
+PASS XHTML Basic parsing &ldrdhar; 
+PASS XHTML Basic parsing &ldrushar; 
+PASS XHTML Basic parsing &ldsh; 
+PASS XHTML Basic parsing &le; 
+PASS XHTML Basic parsing &lE; 
+PASS XHTML Basic parsing &LeftAngleBracket; 
+PASS XHTML Basic parsing &LeftArrowBar; 
+PASS XHTML Basic parsing &leftarrow; 
+PASS XHTML Basic parsing &LeftArrow; 
+PASS XHTML Basic parsing &Leftarrow; 
+PASS XHTML Basic parsing &LeftArrowRightArrow; 
+PASS XHTML Basic parsing &leftarrowtail; 
+PASS XHTML Basic parsing &LeftCeiling; 
+PASS XHTML Basic parsing &LeftDoubleBracket; 
+PASS XHTML Basic parsing &LeftDownTeeVector; 
+PASS XHTML Basic parsing &LeftDownVectorBar; 
+PASS XHTML Basic parsing &LeftDownVector; 
+PASS XHTML Basic parsing &LeftFloor; 
+PASS XHTML Basic parsing &leftharpoondown; 
+PASS XHTML Basic parsing &leftharpoonup; 
+PASS XHTML Basic parsing &leftleftarrows; 
+PASS XHTML Basic parsing &leftrightarrow; 
+PASS XHTML Basic parsing &LeftRightArrow; 
+PASS XHTML Basic parsing &Leftrightarrow; 
+PASS XHTML Basic parsing &leftrightarrows; 
+PASS XHTML Basic parsing &leftrightharpoons; 
+PASS XHTML Basic parsing &leftrightsquigarrow; 
+PASS XHTML Basic parsing &LeftRightVector; 
+PASS XHTML Basic parsing &LeftTeeArrow; 
+PASS XHTML Basic parsing &LeftTee; 
+PASS XHTML Basic parsing &LeftTeeVector; 
+PASS XHTML Basic parsing &leftthreetimes; 
+PASS XHTML Basic parsing &LeftTriangleBar; 
+PASS XHTML Basic parsing &LeftTriangle; 
+PASS XHTML Basic parsing &LeftTriangleEqual; 
+PASS XHTML Basic parsing &LeftUpDownVector; 
+PASS XHTML Basic parsing &LeftUpTeeVector; 
+PASS XHTML Basic parsing &LeftUpVectorBar; 
+PASS XHTML Basic parsing &LeftUpVector; 
+PASS XHTML Basic parsing &LeftVectorBar; 
+PASS XHTML Basic parsing &LeftVector; 
+PASS XHTML Basic parsing &lEg; 
+PASS XHTML Basic parsing &leg; 
+PASS XHTML Basic parsing &leq; 
+PASS XHTML Basic parsing &leqq; 
+PASS XHTML Basic parsing &leqslant; 
+PASS XHTML Basic parsing &lescc; 
+PASS XHTML Basic parsing &les; 
+PASS XHTML Basic parsing &lesdot; 
+PASS XHTML Basic parsing &lesdoto; 
+PASS XHTML Basic parsing &lesdotor; 
+PASS XHTML Basic parsing &lesg; 
+PASS XHTML Basic parsing &lesges; 
+PASS XHTML Basic parsing &lessapprox; 
+PASS XHTML Basic parsing &lessdot; 
+PASS XHTML Basic parsing &lesseqgtr; 
+PASS XHTML Basic parsing &lesseqqgtr; 
+PASS XHTML Basic parsing &LessEqualGreater; 
+PASS XHTML Basic parsing &LessFullEqual; 
+PASS XHTML Basic parsing &LessGreater; 
+PASS XHTML Basic parsing &lessgtr; 
+PASS XHTML Basic parsing &LessLess; 
+PASS XHTML Basic parsing &lesssim; 
+PASS XHTML Basic parsing &LessSlantEqual; 
+PASS XHTML Basic parsing &LessTilde; 
+PASS XHTML Basic parsing &lfisht; 
+PASS XHTML Basic parsing &lfloor; 
+PASS XHTML Basic parsing &Lfr; 
+PASS XHTML Basic parsing &lfr; 
+PASS XHTML Basic parsing &lg; 
+PASS XHTML Basic parsing &lgE; 
+PASS XHTML Basic parsing &lHar; 
+PASS XHTML Basic parsing &lhard; 
+PASS XHTML Basic parsing &lharu; 
+PASS XHTML Basic parsing &lharul; 
+PASS XHTML Basic parsing &lhblk; 
+PASS XHTML Basic parsing &LJcy; 
+PASS XHTML Basic parsing &ljcy; 
+PASS XHTML Basic parsing &llarr; 
+PASS XHTML Basic parsing &ll; 
+PASS XHTML Basic parsing &Ll; 
+PASS XHTML Basic parsing &llcorner; 
+PASS XHTML Basic parsing &Lleftarrow; 
+PASS XHTML Basic parsing &llhard; 
+PASS XHTML Basic parsing &lltri; 
+PASS XHTML Basic parsing &Lmidot; 
+PASS XHTML Basic parsing &lmidot; 
+PASS XHTML Basic parsing &lmoustache; 
+PASS XHTML Basic parsing &lmoust; 
+PASS XHTML Basic parsing &lnap; 
+PASS XHTML Basic parsing &lnapprox; 
+PASS XHTML Basic parsing &lne; 
+PASS XHTML Basic parsing &lnE; 
+PASS XHTML Basic parsing &lneq; 
+PASS XHTML Basic parsing &lneqq; 
+PASS XHTML Basic parsing &lnsim; 
+PASS XHTML Basic parsing &loang; 
+PASS XHTML Basic parsing &loarr; 
+PASS XHTML Basic parsing &lobrk; 
+PASS XHTML Basic parsing &longleftarrow; 
+PASS XHTML Basic parsing &LongLeftArrow; 
+PASS XHTML Basic parsing &Longleftarrow; 
+PASS XHTML Basic parsing &longleftrightarrow; 
+PASS XHTML Basic parsing &LongLeftRightArrow; 
+PASS XHTML Basic parsing &Longleftrightarrow; 
+PASS XHTML Basic parsing &longmapsto; 
+PASS XHTML Basic parsing &longrightarrow; 
+PASS XHTML Basic parsing &LongRightArrow; 
+PASS XHTML Basic parsing &Longrightarrow; 
+PASS XHTML Basic parsing &looparrowleft; 
+PASS XHTML Basic parsing &looparrowright; 
+PASS XHTML Basic parsing &lopar; 
+PASS XHTML Basic parsing &Lopf; 
+PASS XHTML Basic parsing &lopf; 
+PASS XHTML Basic parsing &loplus; 
+PASS XHTML Basic parsing &lotimes; 
+PASS XHTML Basic parsing &lowast; 
+PASS XHTML Basic parsing &lowbar; 
+PASS XHTML Basic parsing &LowerLeftArrow; 
+PASS XHTML Basic parsing &LowerRightArrow; 
+PASS XHTML Basic parsing &loz; 
+PASS XHTML Basic parsing &lozenge; 
+PASS XHTML Basic parsing &lozf; 
+PASS XHTML Basic parsing &lpar; 
+PASS XHTML Basic parsing &lparlt; 
+PASS XHTML Basic parsing &lrarr; 
+PASS XHTML Basic parsing &lrcorner; 
+PASS XHTML Basic parsing &lrhar; 
+PASS XHTML Basic parsing &lrhard; 
+PASS XHTML Basic parsing &lrm; 
+PASS XHTML Basic parsing &lrtri; 
+PASS XHTML Basic parsing &lsaquo; 
+PASS XHTML Basic parsing &lscr; 
+PASS XHTML Basic parsing &Lscr; 
+PASS XHTML Basic parsing &lsh; 
+PASS XHTML Basic parsing &Lsh; 
+PASS XHTML Basic parsing &lsim; 
+PASS XHTML Basic parsing &lsime; 
+PASS XHTML Basic parsing &lsimg; 
+PASS XHTML Basic parsing &lsqb; 
+PASS XHTML Basic parsing &lsquo; 
+PASS XHTML Basic parsing &lsquor; 
+PASS XHTML Basic parsing &Lstrok; 
+PASS XHTML Basic parsing &lstrok; 
+PASS XHTML Basic parsing &ltcc; 
+PASS XHTML Basic parsing &ltcir; 
+PASS XHTML Basic parsing &lt; 
+FAIL XHTML Basic parsing &LT; assert_true: expected true got false
+PASS XHTML Basic parsing &Lt; 
+PASS XHTML Basic parsing &ltdot; 
+PASS XHTML Basic parsing &lthree; 
+PASS XHTML Basic parsing &ltimes; 
+PASS XHTML Basic parsing &ltlarr; 
+PASS XHTML Basic parsing &ltquest; 
+PASS XHTML Basic parsing &ltri; 
+PASS XHTML Basic parsing &ltrie; 
+PASS XHTML Basic parsing &ltrif; 
+PASS XHTML Basic parsing &ltrPar; 
+PASS XHTML Basic parsing &lurdshar; 
+PASS XHTML Basic parsing &luruhar; 
+PASS XHTML Basic parsing &lvertneqq; 
+PASS XHTML Basic parsing &lvnE; 
+PASS XHTML Basic parsing &macr; 
+PASS XHTML Basic parsing &male; 
+PASS XHTML Basic parsing &malt; 
+PASS XHTML Basic parsing &maltese; 
+PASS XHTML Basic parsing &Map; 
+PASS XHTML Basic parsing &map; 
+PASS XHTML Basic parsing &mapsto; 
+PASS XHTML Basic parsing &mapstodown; 
+PASS XHTML Basic parsing &mapstoleft; 
+PASS XHTML Basic parsing &mapstoup; 
+PASS XHTML Basic parsing &marker; 
+PASS XHTML Basic parsing &mcomma; 
+PASS XHTML Basic parsing &Mcy; 
+PASS XHTML Basic parsing &mcy; 
+PASS XHTML Basic parsing &mdash; 
+PASS XHTML Basic parsing &mDDot; 
+PASS XHTML Basic parsing &measuredangle; 
+PASS XHTML Basic parsing &MediumSpace; 
+PASS XHTML Basic parsing &Mellintrf; 
+PASS XHTML Basic parsing &Mfr; 
+PASS XHTML Basic parsing &mfr; 
+PASS XHTML Basic parsing &mho; 
+PASS XHTML Basic parsing &micro; 
+PASS XHTML Basic parsing &midast; 
+PASS XHTML Basic parsing &midcir; 
+PASS XHTML Basic parsing &mid; 
+PASS XHTML Basic parsing &middot; 
+PASS XHTML Basic parsing &minusb; 
+PASS XHTML Basic parsing &minus; 
+PASS XHTML Basic parsing &minusd; 
+PASS XHTML Basic parsing &minusdu; 
+PASS XHTML Basic parsing &MinusPlus; 
+PASS XHTML Basic parsing &mlcp; 
+PASS XHTML Basic parsing &mldr; 
+PASS XHTML Basic parsing &mnplus; 
+PASS XHTML Basic parsing &models; 
+PASS XHTML Basic parsing &Mopf; 
+PASS XHTML Basic parsing &mopf; 
+PASS XHTML Basic parsing &mp; 
+PASS XHTML Basic parsing &mscr; 
+PASS XHTML Basic parsing &Mscr; 
+PASS XHTML Basic parsing &mstpos; 
+PASS XHTML Basic parsing &Mu; 
+PASS XHTML Basic parsing &mu; 
+PASS XHTML Basic parsing &multimap; 
+PASS XHTML Basic parsing &mumap; 
+PASS XHTML Basic parsing &nabla; 
+PASS XHTML Basic parsing &Nacute; 
+PASS XHTML Basic parsing &nacute; 
+PASS XHTML Basic parsing &nang; 
+PASS XHTML Basic parsing &nap; 
+PASS XHTML Basic parsing &napE; 
+PASS XHTML Basic parsing &napid; 
+PASS XHTML Basic parsing &napos; 
+PASS XHTML Basic parsing &napprox; 
+PASS XHTML Basic parsing &natural; 
+PASS XHTML Basic parsing &naturals; 
+PASS XHTML Basic parsing &natur; 
+PASS XHTML Basic parsing &nbsp; 
+PASS XHTML Basic parsing &nbump; 
+PASS XHTML Basic parsing &nbumpe; 
+PASS XHTML Basic parsing &ncap; 
+PASS XHTML Basic parsing &Ncaron; 
+PASS XHTML Basic parsing &ncaron; 
+PASS XHTML Basic parsing &Ncedil; 
+PASS XHTML Basic parsing &ncedil; 
+PASS XHTML Basic parsing &ncong; 
+PASS XHTML Basic parsing &ncongdot; 
+PASS XHTML Basic parsing &ncup; 
+PASS XHTML Basic parsing &Ncy; 
+PASS XHTML Basic parsing &ncy; 
+PASS XHTML Basic parsing &ndash; 
+PASS XHTML Basic parsing &nearhk; 
+PASS XHTML Basic parsing &nearr; 
+PASS XHTML Basic parsing &neArr; 
+PASS XHTML Basic parsing &nearrow; 
+PASS XHTML Basic parsing &ne; 
+PASS XHTML Basic parsing &nedot; 
+PASS XHTML Basic parsing &NegativeMediumSpace; 
+PASS XHTML Basic parsing &NegativeThickSpace; 
+PASS XHTML Basic parsing &NegativeThinSpace; 
+PASS XHTML Basic parsing &NegativeVeryThinSpace; 
+PASS XHTML Basic parsing &nequiv; 
+PASS XHTML Basic parsing &nesear; 
+PASS XHTML Basic parsing &nesim; 
+PASS XHTML Basic parsing &NestedGreaterGreater; 
+PASS XHTML Basic parsing &NestedLessLess; 
+PASS XHTML Basic parsing &NewLine; 
+PASS XHTML Basic parsing &nexist; 
+PASS XHTML Basic parsing &nexists; 
+PASS XHTML Basic parsing &Nfr; 
+PASS XHTML Basic parsing &nfr; 
+PASS XHTML Basic parsing &ngE; 
+PASS XHTML Basic parsing &nge; 
+PASS XHTML Basic parsing &ngeq; 
+PASS XHTML Basic parsing &ngeqq; 
+PASS XHTML Basic parsing &ngeqslant; 
+PASS XHTML Basic parsing &nges; 
+PASS XHTML Basic parsing &nGg; 
+PASS XHTML Basic parsing &ngsim; 
+PASS XHTML Basic parsing &nGt; 
+PASS XHTML Basic parsing &ngt; 
+PASS XHTML Basic parsing &ngtr; 
+PASS XHTML Basic parsing &nGtv; 
+PASS XHTML Basic parsing &nharr; 
+PASS XHTML Basic parsing &nhArr; 
+PASS XHTML Basic parsing &nhpar; 
+PASS XHTML Basic parsing &ni; 
+PASS XHTML Basic parsing &nis; 
+PASS XHTML Basic parsing &nisd; 
+PASS XHTML Basic parsing &niv; 
+PASS XHTML Basic parsing &NJcy; 
+PASS XHTML Basic parsing &njcy; 
+PASS XHTML Basic parsing &nlarr; 
+PASS XHTML Basic parsing &nlArr; 
+PASS XHTML Basic parsing &nldr; 
+PASS XHTML Basic parsing &nlE; 
+PASS XHTML Basic parsing &nle; 
+PASS XHTML Basic parsing &nleftarrow; 
+PASS XHTML Basic parsing &nLeftarrow; 
+PASS XHTML Basic parsing &nleftrightarrow; 
+PASS XHTML Basic parsing &nLeftrightarrow; 
+PASS XHTML Basic parsing &nleq; 
+PASS XHTML Basic parsing &nleqq; 
+PASS XHTML Basic parsing &nleqslant; 
+PASS XHTML Basic parsing &nles; 
+PASS XHTML Basic parsing &nless; 
+PASS XHTML Basic parsing &nLl; 
+PASS XHTML Basic parsing &nlsim; 
+PASS XHTML Basic parsing &nLt; 
+PASS XHTML Basic parsing &nlt; 
+PASS XHTML Basic parsing &nltri; 
+PASS XHTML Basic parsing &nltrie; 
+PASS XHTML Basic parsing &nLtv; 
+PASS XHTML Basic parsing &nmid; 
+PASS XHTML Basic parsing &NoBreak; 
+PASS XHTML Basic parsing &NonBreakingSpace; 
+PASS XHTML Basic parsing &nopf; 
+PASS XHTML Basic parsing &Nopf; 
+PASS XHTML Basic parsing &Not; 
+PASS XHTML Basic parsing &not; 
+PASS XHTML Basic parsing &NotCongruent; 
+PASS XHTML Basic parsing &NotCupCap; 
+PASS XHTML Basic parsing &NotDoubleVerticalBar; 
+PASS XHTML Basic parsing &NotElement; 
+PASS XHTML Basic parsing &NotEqual; 
+PASS XHTML Basic parsing &NotEqualTilde; 
+PASS XHTML Basic parsing &NotExists; 
+PASS XHTML Basic parsing &NotGreater; 
+PASS XHTML Basic parsing &NotGreaterEqual; 
+PASS XHTML Basic parsing &NotGreaterFullEqual; 
+PASS XHTML Basic parsing &NotGreaterGreater; 
+PASS XHTML Basic parsing &NotGreaterLess; 
+PASS XHTML Basic parsing &NotGreaterSlantEqual; 
+PASS XHTML Basic parsing &NotGreaterTilde; 
+PASS XHTML Basic parsing &NotHumpDownHump; 
+PASS XHTML Basic parsing &NotHumpEqual; 
+PASS XHTML Basic parsing &notin; 
+PASS XHTML Basic parsing &notindot; 
+PASS XHTML Basic parsing &notinE; 
+PASS XHTML Basic parsing &notinva; 
+PASS XHTML Basic parsing &notinvb; 
+PASS XHTML Basic parsing &notinvc; 
+PASS XHTML Basic parsing &NotLeftTriangleBar; 
+PASS XHTML Basic parsing &NotLeftTriangle; 
+PASS XHTML Basic parsing &NotLeftTriangleEqual; 
+PASS XHTML Basic parsing &NotLess; 
+PASS XHTML Basic parsing &NotLessEqual; 
+PASS XHTML Basic parsing &NotLessGreater; 
+PASS XHTML Basic parsing &NotLessLess; 
+PASS XHTML Basic parsing &NotLessSlantEqual; 
+PASS XHTML Basic parsing &NotLessTilde; 
+PASS XHTML Basic parsing &NotNestedGreaterGreater; 
+PASS XHTML Basic parsing &NotNestedLessLess; 
+PASS XHTML Basic parsing &notni; 
+PASS XHTML Basic parsing &notniva; 
+PASS XHTML Basic parsing &notnivb; 
+PASS XHTML Basic parsing &notnivc; 
+PASS XHTML Basic parsing &NotPrecedes; 
+PASS XHTML Basic parsing &NotPrecedesEqual; 
+PASS XHTML Basic parsing &NotPrecedesSlantEqual; 
+PASS XHTML Basic parsing &NotReverseElement; 
+PASS XHTML Basic parsing &NotRightTriangleBar; 
+PASS XHTML Basic parsing &NotRightTriangle; 
+PASS XHTML Basic parsing &NotRightTriangleEqual; 
+PASS XHTML Basic parsing &NotSquareSubset; 
+PASS XHTML Basic parsing &NotSquareSubsetEqual; 
+PASS XHTML Basic parsing &NotSquareSuperset; 
+PASS XHTML Basic parsing &NotSquareSupersetEqual; 
+PASS XHTML Basic parsing &NotSubset; 
+PASS XHTML Basic parsing &NotSubsetEqual; 
+PASS XHTML Basic parsing &NotSucceeds; 
+PASS XHTML Basic parsing &NotSucceedsEqual; 
+PASS XHTML Basic parsing &NotSucceedsSlantEqual; 
+PASS XHTML Basic parsing &NotSucceedsTilde; 
+PASS XHTML Basic parsing &NotSuperset; 
+PASS XHTML Basic parsing &NotSupersetEqual; 
+PASS XHTML Basic parsing &NotTilde; 
+PASS XHTML Basic parsing &NotTildeEqual; 
+PASS XHTML Basic parsing &NotTildeFullEqual; 
+PASS XHTML Basic parsing &NotTildeTilde; 
+PASS XHTML Basic parsing &NotVerticalBar; 
+PASS XHTML Basic parsing &nparallel; 
+PASS XHTML Basic parsing &npar; 
+PASS XHTML Basic parsing &nparsl; 
+PASS XHTML Basic parsing &npart; 
+PASS XHTML Basic parsing &npolint; 
+PASS XHTML Basic parsing &npr; 
+PASS XHTML Basic parsing &nprcue; 
+PASS XHTML Basic parsing &nprec; 
+PASS XHTML Basic parsing &npreceq; 
+PASS XHTML Basic parsing &npre; 
+PASS XHTML Basic parsing &nrarrc; 
+PASS XHTML Basic parsing &nrarr; 
+PASS XHTML Basic parsing &nrArr; 
+PASS XHTML Basic parsing &nrarrw; 
+PASS XHTML Basic parsing &nrightarrow; 
+PASS XHTML Basic parsing &nRightarrow; 
+PASS XHTML Basic parsing &nrtri; 
+PASS XHTML Basic parsing &nrtrie; 
+PASS XHTML Basic parsing &nsc; 
+PASS XHTML Basic parsing &nsccue; 
+PASS XHTML Basic parsing &nsce; 
+PASS XHTML Basic parsing &Nscr; 
+PASS XHTML Basic parsing &nscr; 
+PASS XHTML Basic parsing &nshortmid; 
+PASS XHTML Basic parsing &nshortparallel; 
+PASS XHTML Basic parsing &nsim; 
+PASS XHTML Basic parsing &nsime; 
+PASS XHTML Basic parsing &nsimeq; 
+PASS XHTML Basic parsing &nsmid; 
+PASS XHTML Basic parsing &nspar; 
+PASS XHTML Basic parsing &nsqsube; 
+PASS XHTML Basic parsing &nsqsupe; 
+PASS XHTML Basic parsing &nsub; 
+PASS XHTML Basic parsing &nsubE; 
+PASS XHTML Basic parsing &nsube; 
+PASS XHTML Basic parsing &nsubset; 
+PASS XHTML Basic parsing &nsubseteq; 
+PASS XHTML Basic parsing &nsubseteqq; 
+PASS XHTML Basic parsing &nsucc; 
+PASS XHTML Basic parsing &nsucceq; 
+PASS XHTML Basic parsing &nsup; 
+PASS XHTML Basic parsing &nsupE; 
+PASS XHTML Basic parsing &nsupe; 
+PASS XHTML Basic parsing &nsupset; 
+PASS XHTML Basic parsing &nsupseteq; 
+PASS XHTML Basic parsing &nsupseteqq; 
+PASS XHTML Basic parsing &ntgl; 
+PASS XHTML Basic parsing &Ntilde; 
+PASS XHTML Basic parsing &ntilde; 
+PASS XHTML Basic parsing &ntlg; 
+PASS XHTML Basic parsing &ntriangleleft; 
+PASS XHTML Basic parsing &ntrianglelefteq; 
+PASS XHTML Basic parsing &ntriangleright; 
+PASS XHTML Basic parsing &ntrianglerighteq; 
+PASS XHTML Basic parsing &Nu; 
+PASS XHTML Basic parsing &nu; 
+PASS XHTML Basic parsing &num; 
+PASS XHTML Basic parsing &numero; 
+PASS XHTML Basic parsing &numsp; 
+PASS XHTML Basic parsing &nvap; 
+PASS XHTML Basic parsing &nvdash; 
+PASS XHTML Basic parsing &nvDash; 
+PASS XHTML Basic parsing &nVdash; 
+PASS XHTML Basic parsing &nVDash; 
+PASS XHTML Basic parsing &nvge; 
+PASS XHTML Basic parsing &nvgt; 
+PASS XHTML Basic parsing &nvHarr; 
+PASS XHTML Basic parsing &nvinfin; 
+PASS XHTML Basic parsing &nvlArr; 
+PASS XHTML Basic parsing &nvle; 
+FAIL XHTML Basic parsing &nvlt; assert_equals: XHTML Basic parsing the entity reference caused a parse error; expected 3 but got 1
+PASS XHTML Basic parsing &nvltrie; 
+PASS XHTML Basic parsing &nvrArr; 
+PASS XHTML Basic parsing &nvrtrie; 
+PASS XHTML Basic parsing &nvsim; 
+PASS XHTML Basic parsing &nwarhk; 
+PASS XHTML Basic parsing &nwarr; 
+PASS XHTML Basic parsing &nwArr; 
+PASS XHTML Basic parsing &nwarrow; 
+PASS XHTML Basic parsing &nwnear; 
+PASS XHTML Basic parsing &Oacute; 
+PASS XHTML Basic parsing &oacute; 
+PASS XHTML Basic parsing &oast; 
+PASS XHTML Basic parsing &Ocirc; 
+PASS XHTML Basic parsing &ocirc; 
+PASS XHTML Basic parsing &ocir; 
+PASS XHTML Basic parsing &Ocy; 
+PASS XHTML Basic parsing &ocy; 
+PASS XHTML Basic parsing &odash; 
+PASS XHTML Basic parsing &Odblac; 
+PASS XHTML Basic parsing &odblac; 
+PASS XHTML Basic parsing &odiv; 
+PASS XHTML Basic parsing &odot; 
+PASS XHTML Basic parsing &odsold; 
+PASS XHTML Basic parsing &OElig; 
+PASS XHTML Basic parsing &oelig; 
+PASS XHTML Basic parsing &ofcir; 
+PASS XHTML Basic parsing &Ofr; 
+PASS XHTML Basic parsing &ofr; 
+PASS XHTML Basic parsing &ogon; 
+PASS XHTML Basic parsing &Ograve; 
+PASS XHTML Basic parsing &ograve; 
+PASS XHTML Basic parsing &ogt; 
+PASS XHTML Basic parsing &ohbar; 
+PASS XHTML Basic parsing &ohm; 
+PASS XHTML Basic parsing &oint; 
+PASS XHTML Basic parsing &olarr; 
+PASS XHTML Basic parsing &olcir; 
+PASS XHTML Basic parsing &olcross; 
+PASS XHTML Basic parsing &oline; 
+PASS XHTML Basic parsing &olt; 
+PASS XHTML Basic parsing &Omacr; 
+PASS XHTML Basic parsing &omacr; 
+PASS XHTML Basic parsing &Omega; 
+PASS XHTML Basic parsing &omega; 
+PASS XHTML Basic parsing &Omicron; 
+PASS XHTML Basic parsing &omicron; 
+PASS XHTML Basic parsing &omid; 
+PASS XHTML Basic parsing &ominus; 
+PASS XHTML Basic parsing &Oopf; 
+PASS XHTML Basic parsing &oopf; 
+PASS XHTML Basic parsing &opar; 
+PASS XHTML Basic parsing &OpenCurlyDoubleQuote; 
+PASS XHTML Basic parsing &OpenCurlyQuote; 
+PASS XHTML Basic parsing &operp; 
+PASS XHTML Basic parsing &oplus; 
+PASS XHTML Basic parsing &orarr; 
+PASS XHTML Basic parsing &Or; 
+PASS XHTML Basic parsing &or; 
+PASS XHTML Basic parsing &ord; 
+PASS XHTML Basic parsing &order; 
+PASS XHTML Basic parsing &orderof; 
+PASS XHTML Basic parsing &ordf; 
+PASS XHTML Basic parsing &ordm; 
+PASS XHTML Basic parsing &origof; 
+PASS XHTML Basic parsing &oror; 
+PASS XHTML Basic parsing &orslope; 
+PASS XHTML Basic parsing &orv; 
+PASS XHTML Basic parsing &oS; 
+PASS XHTML Basic parsing &Oscr; 
+PASS XHTML Basic parsing &oscr; 
+PASS XHTML Basic parsing &Oslash; 
+PASS XHTML Basic parsing &oslash; 
+PASS XHTML Basic parsing &osol; 
+PASS XHTML Basic parsing &Otilde; 
+PASS XHTML Basic parsing &otilde; 
+PASS XHTML Basic parsing &otimesas; 
+PASS XHTML Basic parsing &Otimes; 
+PASS XHTML Basic parsing &otimes; 
+PASS XHTML Basic parsing &Ouml; 
+PASS XHTML Basic parsing &ouml; 
+PASS XHTML Basic parsing &ovbar; 
+PASS XHTML Basic parsing &OverBar; 
+PASS XHTML Basic parsing &OverBrace; 
+PASS XHTML Basic parsing &OverBracket; 
+PASS XHTML Basic parsing &OverParenthesis; 
+PASS XHTML Basic parsing &para; 
+PASS XHTML Basic parsing &parallel; 
+PASS XHTML Basic parsing &par; 
+PASS XHTML Basic parsing &parsim; 
+PASS XHTML Basic parsing &parsl; 
+PASS XHTML Basic parsing &part; 
+PASS XHTML Basic parsing &PartialD; 
+PASS XHTML Basic parsing &Pcy; 
+PASS XHTML Basic parsing &pcy; 
+PASS XHTML Basic parsing &percnt; 
+PASS XHTML Basic parsing &period; 
+PASS XHTML Basic parsing &permil; 
+PASS XHTML Basic parsing &perp; 
+PASS XHTML Basic parsing &pertenk; 
+PASS XHTML Basic parsing &Pfr; 
+PASS XHTML Basic parsing &pfr; 
+PASS XHTML Basic parsing &Phi; 
+PASS XHTML Basic parsing &phi; 
+PASS XHTML Basic parsing &phiv; 
+PASS XHTML Basic parsing &phmmat; 
+PASS XHTML Basic parsing &phone; 
+PASS XHTML Basic parsing &Pi; 
+PASS XHTML Basic parsing &pi; 
+PASS XHTML Basic parsing &pitchfork; 
+PASS XHTML Basic parsing &piv; 
+PASS XHTML Basic parsing &planck; 
+PASS XHTML Basic parsing &planckh; 
+PASS XHTML Basic parsing &plankv; 
+PASS XHTML Basic parsing &plusacir; 
+PASS XHTML Basic parsing &plusb; 
+PASS XHTML Basic parsing &pluscir; 
+PASS XHTML Basic parsing &plus; 
+PASS XHTML Basic parsing &plusdo; 
+PASS XHTML Basic parsing &plusdu; 
+PASS XHTML Basic parsing &pluse; 
+PASS XHTML Basic parsing &PlusMinus; 
+PASS XHTML Basic parsing &plusmn; 
+PASS XHTML Basic parsing &plussim; 
+PASS XHTML Basic parsing &plustwo; 
+PASS XHTML Basic parsing &pm; 
+PASS XHTML Basic parsing &Poincareplane; 
+PASS XHTML Basic parsing &pointint; 
+PASS XHTML Basic parsing &popf; 
+PASS XHTML Basic parsing &Popf; 
+PASS XHTML Basic parsing &pound; 
+PASS XHTML Basic parsing &prap; 
+PASS XHTML Basic parsing &Pr; 
+PASS XHTML Basic parsing &pr; 
+PASS XHTML Basic parsing &prcue; 
+PASS XHTML Basic parsing &precapprox; 
+PASS XHTML Basic parsing &prec; 
+PASS XHTML Basic parsing &preccurlyeq; 
+PASS XHTML Basic parsing &Precedes; 
+PASS XHTML Basic parsing &PrecedesEqual; 
+PASS XHTML Basic parsing &PrecedesSlantEqual; 
+PASS XHTML Basic parsing &PrecedesTilde; 
+PASS XHTML Basic parsing &preceq; 
+PASS XHTML Basic parsing &precnapprox; 
+PASS XHTML Basic parsing &precneqq; 
+PASS XHTML Basic parsing &precnsim; 
+PASS XHTML Basic parsing &pre; 
+PASS XHTML Basic parsing &prE; 
+PASS XHTML Basic parsing &precsim; 
+PASS XHTML Basic parsing &prime; 
+PASS XHTML Basic parsing &Prime; 
+PASS XHTML Basic parsing &primes; 
+PASS XHTML Basic parsing &prnap; 
+PASS XHTML Basic parsing &prnE; 
+PASS XHTML Basic parsing &prnsim; 
+PASS XHTML Basic parsing &prod; 
+PASS XHTML Basic parsing &Product; 
+PASS XHTML Basic parsing &profalar; 
+PASS XHTML Basic parsing &profline; 
+PASS XHTML Basic parsing &profsurf; 
+PASS XHTML Basic parsing &prop; 
+PASS XHTML Basic parsing &Proportional; 
+PASS XHTML Basic parsing &Proportion; 
+PASS XHTML Basic parsing &propto; 
+PASS XHTML Basic parsing &prsim; 
+PASS XHTML Basic parsing &prurel; 
+PASS XHTML Basic parsing &Pscr; 
+PASS XHTML Basic parsing &pscr; 
+PASS XHTML Basic parsing &Psi; 
+PASS XHTML Basic parsing &psi; 
+PASS XHTML Basic parsing &puncsp; 
+PASS XHTML Basic parsing &Qfr; 
+PASS XHTML Basic parsing &qfr; 
+PASS XHTML Basic parsing &qint; 
+PASS XHTML Basic parsing &qopf; 
+PASS XHTML Basic parsing &Qopf; 
+PASS XHTML Basic parsing &qprime; 
+PASS XHTML Basic parsing &Qscr; 
+PASS XHTML Basic parsing &qscr; 
+PASS XHTML Basic parsing &quaternions; 
+PASS XHTML Basic parsing &quatint; 
+PASS XHTML Basic parsing &quest; 
+PASS XHTML Basic parsing &questeq; 
+PASS XHTML Basic parsing &quot; 
+PASS XHTML Basic parsing &QUOT; 
+PASS XHTML Basic parsing &rAarr; 
+PASS XHTML Basic parsing &race; 
+PASS XHTML Basic parsing &Racute; 
+PASS XHTML Basic parsing &racute; 
+PASS XHTML Basic parsing &radic; 
+PASS XHTML Basic parsing &raemptyv; 
+PASS XHTML Basic parsing &rang; 
+PASS XHTML Basic parsing &Rang; 
+PASS XHTML Basic parsing &rangd; 
+PASS XHTML Basic parsing &range; 
+PASS XHTML Basic parsing &rangle; 
+PASS XHTML Basic parsing &raquo; 
+PASS XHTML Basic parsing &rarrap; 
+PASS XHTML Basic parsing &rarrb; 
+PASS XHTML Basic parsing &rarrbfs; 
+PASS XHTML Basic parsing &rarrc; 
+PASS XHTML Basic parsing &rarr; 
+PASS XHTML Basic parsing &Rarr; 
+PASS XHTML Basic parsing &rArr; 
+PASS XHTML Basic parsing &rarrfs; 
+PASS XHTML Basic parsing &rarrhk; 
+PASS XHTML Basic parsing &rarrlp; 
+PASS XHTML Basic parsing &rarrpl; 
+PASS XHTML Basic parsing &rarrsim; 
+PASS XHTML Basic parsing &Rarrtl; 
+PASS XHTML Basic parsing &rarrtl; 
+PASS XHTML Basic parsing &rarrw; 
+PASS XHTML Basic parsing &ratail; 
+PASS XHTML Basic parsing &rAtail; 
+PASS XHTML Basic parsing &ratio; 
+PASS XHTML Basic parsing &rationals; 
+PASS XHTML Basic parsing &rbarr; 
+PASS XHTML Basic parsing &rBarr; 
+PASS XHTML Basic parsing &RBarr; 
+PASS XHTML Basic parsing &rbbrk; 
+PASS XHTML Basic parsing &rbrace; 
+PASS XHTML Basic parsing &rbrack; 
+PASS XHTML Basic parsing &rbrke; 
+PASS XHTML Basic parsing &rbrksld; 
+PASS XHTML Basic parsing &rbrkslu; 
+PASS XHTML Basic parsing &Rcaron; 
+PASS XHTML Basic parsing &rcaron; 
+PASS XHTML Basic parsing &Rcedil; 
+PASS XHTML Basic parsing &rcedil; 
+PASS XHTML Basic parsing &rceil; 
+PASS XHTML Basic parsing &rcub; 
+PASS XHTML Basic parsing &Rcy; 
+PASS XHTML Basic parsing &rcy; 
+PASS XHTML Basic parsing &rdca; 
+PASS XHTML Basic parsing &rdldhar; 
+PASS XHTML Basic parsing &rdquo; 
+PASS XHTML Basic parsing &rdquor; 
+PASS XHTML Basic parsing &rdsh; 
+PASS XHTML Basic parsing &real; 
+PASS XHTML Basic parsing &realine; 
+PASS XHTML Basic parsing &realpart; 
+PASS XHTML Basic parsing &reals; 
+PASS XHTML Basic parsing &Re; 
+PASS XHTML Basic parsing &rect; 
+PASS XHTML Basic parsing &reg; 
+PASS XHTML Basic parsing &REG; 
+PASS XHTML Basic parsing &ReverseElement; 
+PASS XHTML Basic parsing &ReverseEquilibrium; 
+PASS XHTML Basic parsing &ReverseUpEquilibrium; 
+PASS XHTML Basic parsing &rfisht; 
+PASS XHTML Basic parsing &rfloor; 
+PASS XHTML Basic parsing &rfr; 
+PASS XHTML Basic parsing &Rfr; 
+PASS XHTML Basic parsing &rHar; 
+PASS XHTML Basic parsing &rhard; 
+PASS XHTML Basic parsing &rharu; 
+PASS XHTML Basic parsing &rharul; 
+PASS XHTML Basic parsing &Rho; 
+PASS XHTML Basic parsing &rho; 
+PASS XHTML Basic parsing &rhov; 
+PASS XHTML Basic parsing &RightAngleBracket; 
+PASS XHTML Basic parsing &RightArrowBar; 
+PASS XHTML Basic parsing &rightarrow; 
+PASS XHTML Basic parsing &RightArrow; 
+PASS XHTML Basic parsing &Rightarrow; 
+PASS XHTML Basic parsing &RightArrowLeftArrow; 
+PASS XHTML Basic parsing &rightarrowtail; 
+PASS XHTML Basic parsing &RightCeiling; 
+PASS XHTML Basic parsing &RightDoubleBracket; 
+PASS XHTML Basic parsing &RightDownTeeVector; 
+PASS XHTML Basic parsing &RightDownVectorBar; 
+PASS XHTML Basic parsing &RightDownVector; 
+PASS XHTML Basic parsing &RightFloor; 
+PASS XHTML Basic parsing &rightharpoondown; 
+PASS XHTML Basic parsing &rightharpoonup; 
+PASS XHTML Basic parsing &rightleftarrows; 
+PASS XHTML Basic parsing &rightleftharpoons; 
+PASS XHTML Basic parsing &rightrightarrows; 
+PASS XHTML Basic parsing &rightsquigarrow; 
+PASS XHTML Basic parsing &RightTeeArrow; 
+PASS XHTML Basic parsing &RightTee; 
+PASS XHTML Basic parsing &RightTeeVector; 
+PASS XHTML Basic parsing &rightthreetimes; 
+PASS XHTML Basic parsing &RightTriangleBar; 
+PASS XHTML Basic parsing &RightTriangle; 
+PASS XHTML Basic parsing &RightTriangleEqual; 
+PASS XHTML Basic parsing &RightUpDownVector; 
+PASS XHTML Basic parsing &RightUpTeeVector; 
+PASS XHTML Basic parsing &RightUpVectorBar; 
+PASS XHTML Basic parsing &RightUpVector; 
+PASS XHTML Basic parsing &RightVectorBar; 
+PASS XHTML Basic parsing &RightVector; 
+PASS XHTML Basic parsing &ring; 
+PASS XHTML Basic parsing &risingdotseq; 
+PASS XHTML Basic parsing &rlarr; 
+PASS XHTML Basic parsing &rlhar; 
+PASS XHTML Basic parsing &rlm; 
+PASS XHTML Basic parsing &rmoustache; 
+PASS XHTML Basic parsing &rmoust; 
+PASS XHTML Basic parsing &rnmid; 
+PASS XHTML Basic parsing &roang; 
+PASS XHTML Basic parsing &roarr; 
+PASS XHTML Basic parsing &robrk; 
+PASS XHTML Basic parsing &ropar; 
+PASS XHTML Basic parsing &ropf; 
+PASS XHTML Basic parsing &Ropf; 
+PASS XHTML Basic parsing &roplus; 
+PASS XHTML Basic parsing &rotimes; 
+PASS XHTML Basic parsing &RoundImplies; 
+PASS XHTML Basic parsing &rpar; 
+PASS XHTML Basic parsing &rpargt; 
+PASS XHTML Basic parsing &rppolint; 
+PASS XHTML Basic parsing &rrarr; 
+PASS XHTML Basic parsing &Rrightarrow; 
+PASS XHTML Basic parsing &rsaquo; 
+PASS XHTML Basic parsing &rscr; 
+PASS XHTML Basic parsing &Rscr; 
+PASS XHTML Basic parsing &rsh; 
+PASS XHTML Basic parsing &Rsh; 
+PASS XHTML Basic parsing &rsqb; 
+PASS XHTML Basic parsing &rsquo; 
+PASS XHTML Basic parsing &rsquor; 
+PASS XHTML Basic parsing &rthree; 
+PASS XHTML Basic parsing &rtimes; 
+PASS XHTML Basic parsing &rtri; 
+PASS XHTML Basic parsing &rtrie; 
+PASS XHTML Basic parsing &rtrif; 
+PASS XHTML Basic parsing &rtriltri; 
+PASS XHTML Basic parsing &RuleDelayed; 
+PASS XHTML Basic parsing &ruluhar; 
+PASS XHTML Basic parsing &rx; 
+PASS XHTML Basic parsing &Sacute; 
+PASS XHTML Basic parsing &sacute; 
+PASS XHTML Basic parsing &sbquo; 
+PASS XHTML Basic parsing &scap; 
+PASS XHTML Basic parsing &Scaron; 
+PASS XHTML Basic parsing &scaron; 
+PASS XHTML Basic parsing &Sc; 
+PASS XHTML Basic parsing &sc; 
+PASS XHTML Basic parsing &sccue; 
+PASS XHTML Basic parsing &sce; 
+PASS XHTML Basic parsing &scE; 
+PASS XHTML Basic parsing &Scedil; 
+PASS XHTML Basic parsing &scedil; 
+PASS XHTML Basic parsing &Scirc; 
+PASS XHTML Basic parsing &scirc; 
+PASS XHTML Basic parsing &scnap; 
+PASS XHTML Basic parsing &scnE; 
+PASS XHTML Basic parsing &scnsim; 
+PASS XHTML Basic parsing &scpolint; 
+PASS XHTML Basic parsing &scsim; 
+PASS XHTML Basic parsing &Scy; 
+PASS XHTML Basic parsing &scy; 
+PASS XHTML Basic parsing &sdotb; 
+PASS XHTML Basic parsing &sdot; 
+PASS XHTML Basic parsing &sdote; 
+PASS XHTML Basic parsing &searhk; 
+PASS XHTML Basic parsing &searr; 
+PASS XHTML Basic parsing &seArr; 
+PASS XHTML Basic parsing &searrow; 
+PASS XHTML Basic parsing &sect; 
+PASS XHTML Basic parsing &semi; 
+PASS XHTML Basic parsing &seswar; 
+PASS XHTML Basic parsing &setminus; 
+PASS XHTML Basic parsing &setmn; 
+PASS XHTML Basic parsing &sext; 
+PASS XHTML Basic parsing &Sfr; 
+PASS XHTML Basic parsing &sfr; 
+PASS XHTML Basic parsing &sfrown; 
+PASS XHTML Basic parsing &sharp; 
+PASS XHTML Basic parsing &SHCHcy; 
+PASS XHTML Basic parsing &shchcy; 
+PASS XHTML Basic parsing &SHcy; 
+PASS XHTML Basic parsing &shcy; 
+PASS XHTML Basic parsing &ShortDownArrow; 
+PASS XHTML Basic parsing &ShortLeftArrow; 
+PASS XHTML Basic parsing &shortmid; 
+PASS XHTML Basic parsing &shortparallel; 
+PASS XHTML Basic parsing &ShortRightArrow; 
+PASS XHTML Basic parsing &ShortUpArrow; 
+PASS XHTML Basic parsing &shy; 
+PASS XHTML Basic parsing &Sigma; 
+PASS XHTML Basic parsing &sigma; 
+PASS XHTML Basic parsing &sigmaf; 
+PASS XHTML Basic parsing &sigmav; 
+PASS XHTML Basic parsing &sim; 
+PASS XHTML Basic parsing &simdot; 
+PASS XHTML Basic parsing &sime; 
+PASS XHTML Basic parsing &simeq; 
+PASS XHTML Basic parsing &simg; 
+PASS XHTML Basic parsing &simgE; 
+PASS XHTML Basic parsing &siml; 
+PASS XHTML Basic parsing &simlE; 
+PASS XHTML Basic parsing &simne; 
+PASS XHTML Basic parsing &simplus; 
+PASS XHTML Basic parsing &simrarr; 
+PASS XHTML Basic parsing &slarr; 
+PASS XHTML Basic parsing &SmallCircle; 
+PASS XHTML Basic parsing &smallsetminus; 
+PASS XHTML Basic parsing &smashp; 
+PASS XHTML Basic parsing &smeparsl; 
+PASS XHTML Basic parsing &smid; 
+PASS XHTML Basic parsing &smile; 
+PASS XHTML Basic parsing &smt; 
+PASS XHTML Basic parsing &smte; 
+PASS XHTML Basic parsing &smtes; 
+PASS XHTML Basic parsing &SOFTcy; 
+PASS XHTML Basic parsing &softcy; 
+PASS XHTML Basic parsing &solbar; 
+PASS XHTML Basic parsing &solb; 
+PASS XHTML Basic parsing &sol; 
+PASS XHTML Basic parsing &Sopf; 
+PASS XHTML Basic parsing &sopf; 
+PASS XHTML Basic parsing &spades; 
+PASS XHTML Basic parsing &spadesuit; 
+PASS XHTML Basic parsing &spar; 
+PASS XHTML Basic parsing &sqcap; 
+PASS XHTML Basic parsing &sqcaps; 
+PASS XHTML Basic parsing &sqcup; 
+PASS XHTML Basic parsing &sqcups; 
+PASS XHTML Basic parsing &Sqrt; 
+PASS XHTML Basic parsing &sqsub; 
+PASS XHTML Basic parsing &sqsube; 
+PASS XHTML Basic parsing &sqsubset; 
+PASS XHTML Basic parsing &sqsubseteq; 
+PASS XHTML Basic parsing &sqsup; 
+PASS XHTML Basic parsing &sqsupe; 
+PASS XHTML Basic parsing &sqsupset; 
+PASS XHTML Basic parsing &sqsupseteq; 
+PASS XHTML Basic parsing &square; 
+PASS XHTML Basic parsing &Square; 
+PASS XHTML Basic parsing &SquareIntersection; 
+PASS XHTML Basic parsing &SquareSubset; 
+PASS XHTML Basic parsing &SquareSubsetEqual; 
+PASS XHTML Basic parsing &SquareSuperset; 
+PASS XHTML Basic parsing &SquareSupersetEqual; 
+PASS XHTML Basic parsing &SquareUnion; 
+PASS XHTML Basic parsing &squarf; 
+PASS XHTML Basic parsing &squ; 
+PASS XHTML Basic parsing &squf; 
+PASS XHTML Basic parsing &srarr; 
+PASS XHTML Basic parsing &Sscr; 
+PASS XHTML Basic parsing &sscr; 
+PASS XHTML Basic parsing &ssetmn; 
+PASS XHTML Basic parsing &ssmile; 
+PASS XHTML Basic parsing &sstarf; 
+PASS XHTML Basic parsing &Star; 
+PASS XHTML Basic parsing &star; 
+PASS XHTML Basic parsing &starf; 
+PASS XHTML Basic parsing &straightepsilon; 
+PASS XHTML Basic parsing &straightphi; 
+PASS XHTML Basic parsing &strns; 
+PASS XHTML Basic parsing &sub; 
+PASS XHTML Basic parsing &Sub; 
+PASS XHTML Basic parsing &subdot; 
+PASS XHTML Basic parsing &subE; 
+PASS XHTML Basic parsing &sube; 
+PASS XHTML Basic parsing &subedot; 
+PASS XHTML Basic parsing &submult; 
+PASS XHTML Basic parsing &subnE; 
+PASS XHTML Basic parsing &subne; 
+PASS XHTML Basic parsing &subplus; 
+PASS XHTML Basic parsing &subrarr; 
+PASS XHTML Basic parsing &subset; 
+PASS XHTML Basic parsing &Subset; 
+PASS XHTML Basic parsing &subseteq; 
+PASS XHTML Basic parsing &subseteqq; 
+PASS XHTML Basic parsing &SubsetEqual; 
+PASS XHTML Basic parsing &subsetneq; 
+PASS XHTML Basic parsing &subsetneqq; 
+PASS XHTML Basic parsing &subsim; 
+PASS XHTML Basic parsing &subsub; 
+PASS XHTML Basic parsing &subsup; 
+PASS XHTML Basic parsing &succapprox; 
+PASS XHTML Basic parsing &succ; 
+PASS XHTML Basic parsing &succcurlyeq; 
+PASS XHTML Basic parsing &Succeeds; 
+PASS XHTML Basic parsing &SucceedsEqual; 
+PASS XHTML Basic parsing &SucceedsSlantEqual; 
+PASS XHTML Basic parsing &SucceedsTilde; 
+PASS XHTML Basic parsing &succeq; 
+PASS XHTML Basic parsing &succnapprox; 
+PASS XHTML Basic parsing &succneqq; 
+PASS XHTML Basic parsing &succnsim; 
+PASS XHTML Basic parsing &succsim; 
+PASS XHTML Basic parsing &SuchThat; 
+PASS XHTML Basic parsing &sum; 
+PASS XHTML Basic parsing &Sum; 
+PASS XHTML Basic parsing &sung; 
+PASS XHTML Basic parsing &sup1; 
+PASS XHTML Basic parsing &sup2; 
+PASS XHTML Basic parsing &sup3; 
+PASS XHTML Basic parsing &sup; 
+PASS XHTML Basic parsing &Sup; 
+PASS XHTML Basic parsing &supdot; 
+PASS XHTML Basic parsing &supdsub; 
+PASS XHTML Basic parsing &supE; 
+PASS XHTML Basic parsing &supe; 
+PASS XHTML Basic parsing &supedot; 
+PASS XHTML Basic parsing &Superset; 
+PASS XHTML Basic parsing &SupersetEqual; 
+PASS XHTML Basic parsing &suphsol; 
+PASS XHTML Basic parsing &suphsub; 
+PASS XHTML Basic parsing &suplarr; 
+PASS XHTML Basic parsing &supmult; 
+PASS XHTML Basic parsing &supnE; 
+PASS XHTML Basic parsing &supne; 
+PASS XHTML Basic parsing &supplus; 
+PASS XHTML Basic parsing &supset; 
+PASS XHTML Basic parsing &Supset; 
+PASS XHTML Basic parsing &supseteq; 
+PASS XHTML Basic parsing &supseteqq; 
+PASS XHTML Basic parsing &supsetneq; 
+PASS XHTML Basic parsing &supsetneqq; 
+PASS XHTML Basic parsing &supsim; 
+PASS XHTML Basic parsing &supsub; 
+PASS XHTML Basic parsing &supsup; 
+PASS XHTML Basic parsing &swarhk; 
+PASS XHTML Basic parsing &swarr; 
+PASS XHTML Basic parsing &swArr; 
+PASS XHTML Basic parsing &swarrow; 
+PASS XHTML Basic parsing &swnwar; 
+PASS XHTML Basic parsing &szlig; 
+PASS XHTML Basic parsing &Tab; 
+PASS XHTML Basic parsing &target; 
+PASS XHTML Basic parsing &Tau; 
+PASS XHTML Basic parsing &tau; 
+PASS XHTML Basic parsing &tbrk; 
+PASS XHTML Basic parsing &Tcaron; 
+PASS XHTML Basic parsing &tcaron; 
+PASS XHTML Basic parsing &Tcedil; 
+PASS XHTML Basic parsing &tcedil; 
+PASS XHTML Basic parsing &Tcy; 
+PASS XHTML Basic parsing &tcy; 
+PASS XHTML Basic parsing &tdot; 
+PASS XHTML Basic parsing &telrec; 
+PASS XHTML Basic parsing &Tfr; 
+PASS XHTML Basic parsing &tfr; 
+PASS XHTML Basic parsing &there4; 
+PASS XHTML Basic parsing &therefore; 
+PASS XHTML Basic parsing &Therefore; 
+PASS XHTML Basic parsing &Theta; 
+PASS XHTML Basic parsing &theta; 
+PASS XHTML Basic parsing &thetasym; 
+PASS XHTML Basic parsing &thetav; 
+PASS XHTML Basic parsing &thickapprox; 
+PASS XHTML Basic parsing &thicksim; 
+PASS XHTML Basic parsing &ThickSpace; 
+PASS XHTML Basic parsing &ThinSpace; 
+PASS XHTML Basic parsing &thinsp; 
+PASS XHTML Basic parsing &thkap; 
+PASS XHTML Basic parsing &thksim; 
+PASS XHTML Basic parsing &THORN; 
+PASS XHTML Basic parsing &thorn; 
+PASS XHTML Basic parsing &tilde; 
+PASS XHTML Basic parsing &Tilde; 
+PASS XHTML Basic parsing &TildeEqual; 
+PASS XHTML Basic parsing &TildeFullEqual; 
+PASS XHTML Basic parsing &TildeTilde; 
+PASS XHTML Basic parsing &timesbar; 
+PASS XHTML Basic parsing &timesb; 
+PASS XHTML Basic parsing &times; 
+PASS XHTML Basic parsing &timesd; 
+PASS XHTML Basic parsing &tint; 
+PASS XHTML Basic parsing &toea; 
+PASS XHTML Basic parsing &topbot; 
+PASS XHTML Basic parsing &topcir; 
+PASS XHTML Basic parsing &top; 
+PASS XHTML Basic parsing &Topf; 
+PASS XHTML Basic parsing &topf; 
+PASS XHTML Basic parsing &topfork; 
+PASS XHTML Basic parsing &tosa; 
+PASS XHTML Basic parsing &tprime; 
+PASS XHTML Basic parsing &trade; 
+PASS XHTML Basic parsing &TRADE; 
+PASS XHTML Basic parsing &triangle; 
+PASS XHTML Basic parsing &triangledown; 
+PASS XHTML Basic parsing &triangleleft; 
+PASS XHTML Basic parsing &trianglelefteq; 
+PASS XHTML Basic parsing &triangleq; 
+PASS XHTML Basic parsing &triangleright; 
+PASS XHTML Basic parsing &trianglerighteq; 
+PASS XHTML Basic parsing &tridot; 
+PASS XHTML Basic parsing &trie; 
+PASS XHTML Basic parsing &triminus; 
+PASS XHTML Basic parsing &TripleDot; 
+PASS XHTML Basic parsing &triplus; 
+PASS XHTML Basic parsing &trisb; 
+PASS XHTML Basic parsing &tritime; 
+PASS XHTML Basic parsing &trpezium; 
+PASS XHTML Basic parsing &Tscr; 
+PASS XHTML Basic parsing &tscr; 
+PASS XHTML Basic parsing &TScy; 
+PASS XHTML Basic parsing &tscy; 
+PASS XHTML Basic parsing &TSHcy; 
+PASS XHTML Basic parsing &tshcy; 
+PASS XHTML Basic parsing &Tstrok; 
+PASS XHTML Basic parsing &tstrok; 
+PASS XHTML Basic parsing &twixt; 
+PASS XHTML Basic parsing &twoheadleftarrow; 
+PASS XHTML Basic parsing &twoheadrightarrow; 
+PASS XHTML Basic parsing &Uacute; 
+PASS XHTML Basic parsing &uacute; 
+PASS XHTML Basic parsing &uarr; 
+PASS XHTML Basic parsing &Uarr; 
+PASS XHTML Basic parsing &uArr; 
+PASS XHTML Basic parsing &Uarrocir; 
+PASS XHTML Basic parsing &Ubrcy; 
+PASS XHTML Basic parsing &ubrcy; 
+PASS XHTML Basic parsing &Ubreve; 
+PASS XHTML Basic parsing &ubreve; 
+PASS XHTML Basic parsing &Ucirc; 
+PASS XHTML Basic parsing &ucirc; 
+PASS XHTML Basic parsing &Ucy; 
+PASS XHTML Basic parsing &ucy; 
+PASS XHTML Basic parsing &udarr; 
+PASS XHTML Basic parsing &Udblac; 
+PASS XHTML Basic parsing &udblac; 
+PASS XHTML Basic parsing &udhar; 
+PASS XHTML Basic parsing &ufisht; 
+PASS XHTML Basic parsing &Ufr; 
+PASS XHTML Basic parsing &ufr; 
+PASS XHTML Basic parsing &Ugrave; 
+PASS XHTML Basic parsing &ugrave; 
+PASS XHTML Basic parsing &uHar; 
+PASS XHTML Basic parsing &uharl; 
+PASS XHTML Basic parsing &uharr; 
+PASS XHTML Basic parsing &uhblk; 
+PASS XHTML Basic parsing &ulcorn; 
+PASS XHTML Basic parsing &ulcorner; 
+PASS XHTML Basic parsing &ulcrop; 
+PASS XHTML Basic parsing &ultri; 
+PASS XHTML Basic parsing &Umacr; 
+PASS XHTML Basic parsing &umacr; 
+PASS XHTML Basic parsing &uml; 
+PASS XHTML Basic parsing &UnderBar; 
+PASS XHTML Basic parsing &UnderBrace; 
+PASS XHTML Basic parsing &UnderBracket; 
+PASS XHTML Basic parsing &UnderParenthesis; 
+PASS XHTML Basic parsing &Union; 
+PASS XHTML Basic parsing &UnionPlus; 
+PASS XHTML Basic parsing &Uogon; 
+PASS XHTML Basic parsing &uogon; 
+PASS XHTML Basic parsing &Uopf; 
+PASS XHTML Basic parsing &uopf; 
+PASS XHTML Basic parsing &UpArrowBar; 
+PASS XHTML Basic parsing &uparrow; 
+PASS XHTML Basic parsing &UpArrow; 
+PASS XHTML Basic parsing &Uparrow; 
+PASS XHTML Basic parsing &UpArrowDownArrow; 
+PASS XHTML Basic parsing &updownarrow; 
+PASS XHTML Basic parsing &UpDownArrow; 
+PASS XHTML Basic parsing &Updownarrow; 
+PASS XHTML Basic parsing &UpEquilibrium; 
+PASS XHTML Basic parsing &upharpoonleft; 
+PASS XHTML Basic parsing &upharpoonright; 
+PASS XHTML Basic parsing &uplus; 
+PASS XHTML Basic parsing &UpperLeftArrow; 
+PASS XHTML Basic parsing &UpperRightArrow; 
+PASS XHTML Basic parsing &upsi; 
+PASS XHTML Basic parsing &Upsi; 
+PASS XHTML Basic parsing &upsih; 
+PASS XHTML Basic parsing &Upsilon; 
+PASS XHTML Basic parsing &upsilon; 
+PASS XHTML Basic parsing &UpTeeArrow; 
+PASS XHTML Basic parsing &UpTee; 
+PASS XHTML Basic parsing &upuparrows; 
+PASS XHTML Basic parsing &urcorn; 
+PASS XHTML Basic parsing &urcorner; 
+PASS XHTML Basic parsing &urcrop; 
+PASS XHTML Basic parsing &Uring; 
+PASS XHTML Basic parsing &uring; 
+PASS XHTML Basic parsing &urtri; 
+PASS XHTML Basic parsing &Uscr; 
+PASS XHTML Basic parsing &uscr; 
+PASS XHTML Basic parsing &utdot; 
+PASS XHTML Basic parsing &Utilde; 
+PASS XHTML Basic parsing &utilde; 
+PASS XHTML Basic parsing &utri; 
+PASS XHTML Basic parsing &utrif; 
+PASS XHTML Basic parsing &uuarr; 
+PASS XHTML Basic parsing &Uuml; 
+PASS XHTML Basic parsing &uuml; 
+PASS XHTML Basic parsing &uwangle; 
+PASS XHTML Basic parsing &vangrt; 
+PASS XHTML Basic parsing &varepsilon; 
+PASS XHTML Basic parsing &varkappa; 
+PASS XHTML Basic parsing &varnothing; 
+PASS XHTML Basic parsing &varphi; 
+PASS XHTML Basic parsing &varpi; 
+PASS XHTML Basic parsing &varpropto; 
+PASS XHTML Basic parsing &varr; 
+PASS XHTML Basic parsing &vArr; 
+PASS XHTML Basic parsing &varrho; 
+PASS XHTML Basic parsing &varsigma; 
+PASS XHTML Basic parsing &varsubsetneq; 
+PASS XHTML Basic parsing &varsubsetneqq; 
+PASS XHTML Basic parsing &varsupsetneq; 
+PASS XHTML Basic parsing &varsupsetneqq; 
+PASS XHTML Basic parsing &vartheta; 
+PASS XHTML Basic parsing &vartriangleleft; 
+PASS XHTML Basic parsing &vartriangleright; 
+PASS XHTML Basic parsing &vBar; 
+PASS XHTML Basic parsing &Vbar; 
+PASS XHTML Basic parsing &vBarv; 
+PASS XHTML Basic parsing &Vcy; 
+PASS XHTML Basic parsing &vcy; 
+PASS XHTML Basic parsing &vdash; 
+PASS XHTML Basic parsing &vDash; 
+PASS XHTML Basic parsing &Vdash; 
+PASS XHTML Basic parsing &VDash; 
+PASS XHTML Basic parsing &Vdashl; 
+PASS XHTML Basic parsing &veebar; 
+PASS XHTML Basic parsing &vee; 
+PASS XHTML Basic parsing &Vee; 
+PASS XHTML Basic parsing &veeeq; 
+PASS XHTML Basic parsing &vellip; 
+PASS XHTML Basic parsing &verbar; 
+PASS XHTML Basic parsing &Verbar; 
+PASS XHTML Basic parsing &vert; 
+PASS XHTML Basic parsing &Vert; 
+PASS XHTML Basic parsing &VerticalBar; 
+PASS XHTML Basic parsing &VerticalLine; 
+PASS XHTML Basic parsing &VerticalSeparator; 
+PASS XHTML Basic parsing &VerticalTilde; 
+PASS XHTML Basic parsing &VeryThinSpace; 
+PASS XHTML Basic parsing &Vfr; 
+PASS XHTML Basic parsing &vfr; 
+PASS XHTML Basic parsing &vltri; 
+PASS XHTML Basic parsing &vnsub; 
+PASS XHTML Basic parsing &vnsup; 
+PASS XHTML Basic parsing &Vopf; 
+PASS XHTML Basic parsing &vopf; 
+PASS XHTML Basic parsing &vprop; 
+PASS XHTML Basic parsing &vrtri; 
+PASS XHTML Basic parsing &Vscr; 
+PASS XHTML Basic parsing &vscr; 
+PASS XHTML Basic parsing &vsubnE; 
+PASS XHTML Basic parsing &vsubne; 
+PASS XHTML Basic parsing &vsupnE; 
+PASS XHTML Basic parsing &vsupne; 
+PASS XHTML Basic parsing &Vvdash; 
+PASS XHTML Basic parsing &vzigzag; 
+PASS XHTML Basic parsing &Wcirc; 
+PASS XHTML Basic parsing &wcirc; 
+PASS XHTML Basic parsing &wedbar; 
+PASS XHTML Basic parsing &wedge; 
+PASS XHTML Basic parsing &Wedge; 
+PASS XHTML Basic parsing &wedgeq; 
+PASS XHTML Basic parsing &weierp; 
+PASS XHTML Basic parsing &Wfr; 
+PASS XHTML Basic parsing &wfr; 
+PASS XHTML Basic parsing &Wopf; 
+PASS XHTML Basic parsing &wopf; 
+PASS XHTML Basic parsing &wp; 
+PASS XHTML Basic parsing &wr; 
+PASS XHTML Basic parsing &wreath; 
+PASS XHTML Basic parsing &Wscr; 
+PASS XHTML Basic parsing &wscr; 
+PASS XHTML Basic parsing &xcap; 
+PASS XHTML Basic parsing &xcirc; 
+PASS XHTML Basic parsing &xcup; 
+PASS XHTML Basic parsing &xdtri; 
+PASS XHTML Basic parsing &Xfr; 
+PASS XHTML Basic parsing &xfr; 
+PASS XHTML Basic parsing &xharr; 
+PASS XHTML Basic parsing &xhArr; 
+PASS XHTML Basic parsing &Xi; 
+PASS XHTML Basic parsing &xi; 
+PASS XHTML Basic parsing &xlarr; 
+PASS XHTML Basic parsing &xlArr; 
+PASS XHTML Basic parsing &xmap; 
+PASS XHTML Basic parsing &xnis; 
+PASS XHTML Basic parsing &xodot; 
+PASS XHTML Basic parsing &Xopf; 
+PASS XHTML Basic parsing &xopf; 
+PASS XHTML Basic parsing &xoplus; 
+PASS XHTML Basic parsing &xotime; 
+PASS XHTML Basic parsing &xrarr; 
+PASS XHTML Basic parsing &xrArr; 
+PASS XHTML Basic parsing &Xscr; 
+PASS XHTML Basic parsing &xscr; 
+PASS XHTML Basic parsing &xsqcup; 
+PASS XHTML Basic parsing &xuplus; 
+PASS XHTML Basic parsing &xutri; 
+PASS XHTML Basic parsing &xvee; 
+PASS XHTML Basic parsing &xwedge; 
+PASS XHTML Basic parsing &Yacute; 
+PASS XHTML Basic parsing &yacute; 
+PASS XHTML Basic parsing &YAcy; 
+PASS XHTML Basic parsing &yacy; 
+PASS XHTML Basic parsing &Ycirc; 
+PASS XHTML Basic parsing &ycirc; 
+PASS XHTML Basic parsing &Ycy; 
+PASS XHTML Basic parsing &ycy; 
+PASS XHTML Basic parsing &yen; 
+PASS XHTML Basic parsing &Yfr; 
+PASS XHTML Basic parsing &yfr; 
+PASS XHTML Basic parsing &YIcy; 
+PASS XHTML Basic parsing &yicy; 
+PASS XHTML Basic parsing &Yopf; 
+PASS XHTML Basic parsing &yopf; 
+PASS XHTML Basic parsing &Yscr; 
+PASS XHTML Basic parsing &yscr; 
+PASS XHTML Basic parsing &YUcy; 
+PASS XHTML Basic parsing &yucy; 
+PASS XHTML Basic parsing &yuml; 
+PASS XHTML Basic parsing &Yuml; 
+PASS XHTML Basic parsing &Zacute; 
+PASS XHTML Basic parsing &zacute; 
+PASS XHTML Basic parsing &Zcaron; 
+PASS XHTML Basic parsing &zcaron; 
+PASS XHTML Basic parsing &Zcy; 
+PASS XHTML Basic parsing &zcy; 
+PASS XHTML Basic parsing &Zdot; 
+PASS XHTML Basic parsing &zdot; 
+PASS XHTML Basic parsing &zeetrf; 
+PASS XHTML Basic parsing &ZeroWidthSpace; 
+PASS XHTML Basic parsing &Zeta; 
+PASS XHTML Basic parsing &zeta; 
+PASS XHTML Basic parsing &zfr; 
+PASS XHTML Basic parsing &Zfr; 
+PASS XHTML Basic parsing &ZHcy; 
+PASS XHTML Basic parsing &zhcy; 
+PASS XHTML Basic parsing &zigrarr; 
+PASS XHTML Basic parsing &zopf; 
+PASS XHTML Basic parsing &Zopf; 
+PASS XHTML Basic parsing &Zscr; 
+PASS XHTML Basic parsing &zscr; 
+PASS XHTML Basic parsing &zwj; 
+PASS XHTML Basic parsing &zwnj; 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-5.htm b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-5.htm
new file mode 100644
index 0000000..1777332
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-5.htm
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta name=timeout content=long>
+<title>HTML entities for various XHTML Doctype</title>
+<link rel=help href="http://w3c.github.io/html/xhtml.html#parsing-xhtml-documents">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe id="test" src="xhtml-mathml-dtd-entity-support.htm"></iframe>
+
+<script>
+onload = () => document.getElementById("test").contentWindow.run(
+["application/xhtml+xml", "-//W3C//DTD XHTML Basic 1.0//EN", "foo", "XHTML Basic"]);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-6-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-6-expected.txt
new file mode 100644
index 0000000..76871ff
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-6-expected.txt
@@ -0,0 +1,2129 @@
+This is a testharness.js-based test.
+Found 2125 tests; 2122 PASS, 3 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS XHTML1.1+MathML parsing &Aacute; 
+PASS XHTML1.1+MathML parsing &aacute; 
+PASS XHTML1.1+MathML parsing &Abreve; 
+PASS XHTML1.1+MathML parsing &abreve; 
+PASS XHTML1.1+MathML parsing &ac; 
+PASS XHTML1.1+MathML parsing &acd; 
+PASS XHTML1.1+MathML parsing &acE; 
+PASS XHTML1.1+MathML parsing &Acirc; 
+PASS XHTML1.1+MathML parsing &acirc; 
+PASS XHTML1.1+MathML parsing &acute; 
+PASS XHTML1.1+MathML parsing &Acy; 
+PASS XHTML1.1+MathML parsing &acy; 
+PASS XHTML1.1+MathML parsing &AElig; 
+PASS XHTML1.1+MathML parsing &aelig; 
+PASS XHTML1.1+MathML parsing &af; 
+PASS XHTML1.1+MathML parsing &Afr; 
+PASS XHTML1.1+MathML parsing &afr; 
+PASS XHTML1.1+MathML parsing &Agrave; 
+PASS XHTML1.1+MathML parsing &agrave; 
+PASS XHTML1.1+MathML parsing &alefsym; 
+PASS XHTML1.1+MathML parsing &aleph; 
+PASS XHTML1.1+MathML parsing &Alpha; 
+PASS XHTML1.1+MathML parsing &alpha; 
+PASS XHTML1.1+MathML parsing &Amacr; 
+PASS XHTML1.1+MathML parsing &amacr; 
+PASS XHTML1.1+MathML parsing &amalg; 
+PASS XHTML1.1+MathML parsing &amp; 
+FAIL XHTML1.1+MathML parsing &AMP; assert_true: expected true got false
+PASS XHTML1.1+MathML parsing &andand; 
+PASS XHTML1.1+MathML parsing &And; 
+PASS XHTML1.1+MathML parsing &and; 
+PASS XHTML1.1+MathML parsing &andd; 
+PASS XHTML1.1+MathML parsing &andslope; 
+PASS XHTML1.1+MathML parsing &andv; 
+PASS XHTML1.1+MathML parsing &ang; 
+PASS XHTML1.1+MathML parsing &ange; 
+PASS XHTML1.1+MathML parsing &angle; 
+PASS XHTML1.1+MathML parsing &angmsdaa; 
+PASS XHTML1.1+MathML parsing &angmsdab; 
+PASS XHTML1.1+MathML parsing &angmsdac; 
+PASS XHTML1.1+MathML parsing &angmsdad; 
+PASS XHTML1.1+MathML parsing &angmsdae; 
+PASS XHTML1.1+MathML parsing &angmsdaf; 
+PASS XHTML1.1+MathML parsing &angmsdag; 
+PASS XHTML1.1+MathML parsing &angmsdah; 
+PASS XHTML1.1+MathML parsing &angmsd; 
+PASS XHTML1.1+MathML parsing &angrt; 
+PASS XHTML1.1+MathML parsing &angrtvb; 
+PASS XHTML1.1+MathML parsing &angrtvbd; 
+PASS XHTML1.1+MathML parsing &angsph; 
+PASS XHTML1.1+MathML parsing &angst; 
+PASS XHTML1.1+MathML parsing &angzarr; 
+PASS XHTML1.1+MathML parsing &Aogon; 
+PASS XHTML1.1+MathML parsing &aogon; 
+PASS XHTML1.1+MathML parsing &Aopf; 
+PASS XHTML1.1+MathML parsing &aopf; 
+PASS XHTML1.1+MathML parsing &apacir; 
+PASS XHTML1.1+MathML parsing &ap; 
+PASS XHTML1.1+MathML parsing &apE; 
+PASS XHTML1.1+MathML parsing &ape; 
+PASS XHTML1.1+MathML parsing &apid; 
+PASS XHTML1.1+MathML parsing &apos; 
+PASS XHTML1.1+MathML parsing &ApplyFunction; 
+PASS XHTML1.1+MathML parsing &approx; 
+PASS XHTML1.1+MathML parsing &approxeq; 
+PASS XHTML1.1+MathML parsing &Aring; 
+PASS XHTML1.1+MathML parsing &aring; 
+PASS XHTML1.1+MathML parsing &Ascr; 
+PASS XHTML1.1+MathML parsing &ascr; 
+PASS XHTML1.1+MathML parsing &Assign; 
+PASS XHTML1.1+MathML parsing &ast; 
+PASS XHTML1.1+MathML parsing &asymp; 
+PASS XHTML1.1+MathML parsing &asympeq; 
+PASS XHTML1.1+MathML parsing &Atilde; 
+PASS XHTML1.1+MathML parsing &atilde; 
+PASS XHTML1.1+MathML parsing &Auml; 
+PASS XHTML1.1+MathML parsing &auml; 
+PASS XHTML1.1+MathML parsing &awconint; 
+PASS XHTML1.1+MathML parsing &awint; 
+PASS XHTML1.1+MathML parsing &backcong; 
+PASS XHTML1.1+MathML parsing &backepsilon; 
+PASS XHTML1.1+MathML parsing &backprime; 
+PASS XHTML1.1+MathML parsing &backsim; 
+PASS XHTML1.1+MathML parsing &backsimeq; 
+PASS XHTML1.1+MathML parsing &Backslash; 
+PASS XHTML1.1+MathML parsing &Barv; 
+PASS XHTML1.1+MathML parsing &barvee; 
+PASS XHTML1.1+MathML parsing &barwed; 
+PASS XHTML1.1+MathML parsing &Barwed; 
+PASS XHTML1.1+MathML parsing &barwedge; 
+PASS XHTML1.1+MathML parsing &bbrk; 
+PASS XHTML1.1+MathML parsing &bbrktbrk; 
+PASS XHTML1.1+MathML parsing &bcong; 
+PASS XHTML1.1+MathML parsing &Bcy; 
+PASS XHTML1.1+MathML parsing &bcy; 
+PASS XHTML1.1+MathML parsing &bdquo; 
+PASS XHTML1.1+MathML parsing &becaus; 
+PASS XHTML1.1+MathML parsing &because; 
+PASS XHTML1.1+MathML parsing &Because; 
+PASS XHTML1.1+MathML parsing &bemptyv; 
+PASS XHTML1.1+MathML parsing &bepsi; 
+PASS XHTML1.1+MathML parsing &bernou; 
+PASS XHTML1.1+MathML parsing &Bernoullis; 
+PASS XHTML1.1+MathML parsing &Beta; 
+PASS XHTML1.1+MathML parsing &beta; 
+PASS XHTML1.1+MathML parsing &beth; 
+PASS XHTML1.1+MathML parsing &between; 
+PASS XHTML1.1+MathML parsing &Bfr; 
+PASS XHTML1.1+MathML parsing &bfr; 
+PASS XHTML1.1+MathML parsing &bigcap; 
+PASS XHTML1.1+MathML parsing &bigcirc; 
+PASS XHTML1.1+MathML parsing &bigcup; 
+PASS XHTML1.1+MathML parsing &bigodot; 
+PASS XHTML1.1+MathML parsing &bigoplus; 
+PASS XHTML1.1+MathML parsing &bigotimes; 
+PASS XHTML1.1+MathML parsing &bigsqcup; 
+PASS XHTML1.1+MathML parsing &bigstar; 
+PASS XHTML1.1+MathML parsing &bigtriangledown; 
+PASS XHTML1.1+MathML parsing &bigtriangleup; 
+PASS XHTML1.1+MathML parsing &biguplus; 
+PASS XHTML1.1+MathML parsing &bigvee; 
+PASS XHTML1.1+MathML parsing &bigwedge; 
+PASS XHTML1.1+MathML parsing &bkarow; 
+PASS XHTML1.1+MathML parsing &blacklozenge; 
+PASS XHTML1.1+MathML parsing &blacksquare; 
+PASS XHTML1.1+MathML parsing &blacktriangle; 
+PASS XHTML1.1+MathML parsing &blacktriangledown; 
+PASS XHTML1.1+MathML parsing &blacktriangleleft; 
+PASS XHTML1.1+MathML parsing &blacktriangleright; 
+PASS XHTML1.1+MathML parsing &blank; 
+PASS XHTML1.1+MathML parsing &blk12; 
+PASS XHTML1.1+MathML parsing &blk14; 
+PASS XHTML1.1+MathML parsing &blk34; 
+PASS XHTML1.1+MathML parsing &block; 
+PASS XHTML1.1+MathML parsing &bne; 
+PASS XHTML1.1+MathML parsing &bnequiv; 
+PASS XHTML1.1+MathML parsing &bNot; 
+PASS XHTML1.1+MathML parsing &bnot; 
+PASS XHTML1.1+MathML parsing &Bopf; 
+PASS XHTML1.1+MathML parsing &bopf; 
+PASS XHTML1.1+MathML parsing &bot; 
+PASS XHTML1.1+MathML parsing &bottom; 
+PASS XHTML1.1+MathML parsing &bowtie; 
+PASS XHTML1.1+MathML parsing &boxbox; 
+PASS XHTML1.1+MathML parsing &boxdl; 
+PASS XHTML1.1+MathML parsing &boxdL; 
+PASS XHTML1.1+MathML parsing &boxDl; 
+PASS XHTML1.1+MathML parsing &boxDL; 
+PASS XHTML1.1+MathML parsing &boxdr; 
+PASS XHTML1.1+MathML parsing &boxdR; 
+PASS XHTML1.1+MathML parsing &boxDr; 
+PASS XHTML1.1+MathML parsing &boxDR; 
+PASS XHTML1.1+MathML parsing &boxh; 
+PASS XHTML1.1+MathML parsing &boxH; 
+PASS XHTML1.1+MathML parsing &boxhd; 
+PASS XHTML1.1+MathML parsing &boxHd; 
+PASS XHTML1.1+MathML parsing &boxhD; 
+PASS XHTML1.1+MathML parsing &boxHD; 
+PASS XHTML1.1+MathML parsing &boxhu; 
+PASS XHTML1.1+MathML parsing &boxHu; 
+PASS XHTML1.1+MathML parsing &boxhU; 
+PASS XHTML1.1+MathML parsing &boxHU; 
+PASS XHTML1.1+MathML parsing &boxminus; 
+PASS XHTML1.1+MathML parsing &boxplus; 
+PASS XHTML1.1+MathML parsing &boxtimes; 
+PASS XHTML1.1+MathML parsing &boxul; 
+PASS XHTML1.1+MathML parsing &boxuL; 
+PASS XHTML1.1+MathML parsing &boxUl; 
+PASS XHTML1.1+MathML parsing &boxUL; 
+PASS XHTML1.1+MathML parsing &boxur; 
+PASS XHTML1.1+MathML parsing &boxuR; 
+PASS XHTML1.1+MathML parsing &boxUr; 
+PASS XHTML1.1+MathML parsing &boxUR; 
+PASS XHTML1.1+MathML parsing &boxv; 
+PASS XHTML1.1+MathML parsing &boxV; 
+PASS XHTML1.1+MathML parsing &boxvh; 
+PASS XHTML1.1+MathML parsing &boxvH; 
+PASS XHTML1.1+MathML parsing &boxVh; 
+PASS XHTML1.1+MathML parsing &boxVH; 
+PASS XHTML1.1+MathML parsing &boxvl; 
+PASS XHTML1.1+MathML parsing &boxvL; 
+PASS XHTML1.1+MathML parsing &boxVl; 
+PASS XHTML1.1+MathML parsing &boxVL; 
+PASS XHTML1.1+MathML parsing &boxvr; 
+PASS XHTML1.1+MathML parsing &boxvR; 
+PASS XHTML1.1+MathML parsing &boxVr; 
+PASS XHTML1.1+MathML parsing &boxVR; 
+PASS XHTML1.1+MathML parsing &bprime; 
+PASS XHTML1.1+MathML parsing &breve; 
+PASS XHTML1.1+MathML parsing &Breve; 
+PASS XHTML1.1+MathML parsing &brvbar; 
+PASS XHTML1.1+MathML parsing &bscr; 
+PASS XHTML1.1+MathML parsing &Bscr; 
+PASS XHTML1.1+MathML parsing &bsemi; 
+PASS XHTML1.1+MathML parsing &bsim; 
+PASS XHTML1.1+MathML parsing &bsime; 
+PASS XHTML1.1+MathML parsing &bsolb; 
+PASS XHTML1.1+MathML parsing &bsol; 
+PASS XHTML1.1+MathML parsing &bsolhsub; 
+PASS XHTML1.1+MathML parsing &bull; 
+PASS XHTML1.1+MathML parsing &bullet; 
+PASS XHTML1.1+MathML parsing &bump; 
+PASS XHTML1.1+MathML parsing &bumpE; 
+PASS XHTML1.1+MathML parsing &bumpe; 
+PASS XHTML1.1+MathML parsing &Bumpeq; 
+PASS XHTML1.1+MathML parsing &bumpeq; 
+PASS XHTML1.1+MathML parsing &Cacute; 
+PASS XHTML1.1+MathML parsing &cacute; 
+PASS XHTML1.1+MathML parsing &capand; 
+PASS XHTML1.1+MathML parsing &capbrcup; 
+PASS XHTML1.1+MathML parsing &capcap; 
+PASS XHTML1.1+MathML parsing &cap; 
+PASS XHTML1.1+MathML parsing &Cap; 
+PASS XHTML1.1+MathML parsing &capcup; 
+PASS XHTML1.1+MathML parsing &capdot; 
+PASS XHTML1.1+MathML parsing &CapitalDifferentialD; 
+PASS XHTML1.1+MathML parsing &caps; 
+PASS XHTML1.1+MathML parsing &caret; 
+PASS XHTML1.1+MathML parsing &caron; 
+PASS XHTML1.1+MathML parsing &Cayleys; 
+PASS XHTML1.1+MathML parsing &ccaps; 
+PASS XHTML1.1+MathML parsing &Ccaron; 
+PASS XHTML1.1+MathML parsing &ccaron; 
+PASS XHTML1.1+MathML parsing &Ccedil; 
+PASS XHTML1.1+MathML parsing &ccedil; 
+PASS XHTML1.1+MathML parsing &Ccirc; 
+PASS XHTML1.1+MathML parsing &ccirc; 
+PASS XHTML1.1+MathML parsing &Cconint; 
+PASS XHTML1.1+MathML parsing &ccups; 
+PASS XHTML1.1+MathML parsing &ccupssm; 
+PASS XHTML1.1+MathML parsing &Cdot; 
+PASS XHTML1.1+MathML parsing &cdot; 
+PASS XHTML1.1+MathML parsing &cedil; 
+PASS XHTML1.1+MathML parsing &Cedilla; 
+PASS XHTML1.1+MathML parsing &cemptyv; 
+PASS XHTML1.1+MathML parsing &cent; 
+PASS XHTML1.1+MathML parsing &centerdot; 
+PASS XHTML1.1+MathML parsing &CenterDot; 
+PASS XHTML1.1+MathML parsing &cfr; 
+PASS XHTML1.1+MathML parsing &Cfr; 
+PASS XHTML1.1+MathML parsing &CHcy; 
+PASS XHTML1.1+MathML parsing &chcy; 
+PASS XHTML1.1+MathML parsing &check; 
+PASS XHTML1.1+MathML parsing &checkmark; 
+PASS XHTML1.1+MathML parsing &Chi; 
+PASS XHTML1.1+MathML parsing &chi; 
+PASS XHTML1.1+MathML parsing &circ; 
+PASS XHTML1.1+MathML parsing &circeq; 
+PASS XHTML1.1+MathML parsing &circlearrowleft; 
+PASS XHTML1.1+MathML parsing &circlearrowright; 
+PASS XHTML1.1+MathML parsing &circledast; 
+PASS XHTML1.1+MathML parsing &circledcirc; 
+PASS XHTML1.1+MathML parsing &circleddash; 
+PASS XHTML1.1+MathML parsing &CircleDot; 
+PASS XHTML1.1+MathML parsing &circledR; 
+PASS XHTML1.1+MathML parsing &circledS; 
+PASS XHTML1.1+MathML parsing &CircleMinus; 
+PASS XHTML1.1+MathML parsing &CirclePlus; 
+PASS XHTML1.1+MathML parsing &CircleTimes; 
+PASS XHTML1.1+MathML parsing &cir; 
+PASS XHTML1.1+MathML parsing &cirE; 
+PASS XHTML1.1+MathML parsing &cire; 
+PASS XHTML1.1+MathML parsing &cirfnint; 
+PASS XHTML1.1+MathML parsing &cirmid; 
+PASS XHTML1.1+MathML parsing &cirscir; 
+PASS XHTML1.1+MathML parsing &ClockwiseContourIntegral; 
+PASS XHTML1.1+MathML parsing &CloseCurlyDoubleQuote; 
+PASS XHTML1.1+MathML parsing &CloseCurlyQuote; 
+PASS XHTML1.1+MathML parsing &clubs; 
+PASS XHTML1.1+MathML parsing &clubsuit; 
+PASS XHTML1.1+MathML parsing &colon; 
+PASS XHTML1.1+MathML parsing &Colon; 
+PASS XHTML1.1+MathML parsing &Colone; 
+PASS XHTML1.1+MathML parsing &colone; 
+PASS XHTML1.1+MathML parsing &coloneq; 
+PASS XHTML1.1+MathML parsing &comma; 
+PASS XHTML1.1+MathML parsing &commat; 
+PASS XHTML1.1+MathML parsing &comp; 
+PASS XHTML1.1+MathML parsing &compfn; 
+PASS XHTML1.1+MathML parsing &complement; 
+PASS XHTML1.1+MathML parsing &complexes; 
+PASS XHTML1.1+MathML parsing &cong; 
+PASS XHTML1.1+MathML parsing &congdot; 
+PASS XHTML1.1+MathML parsing &Congruent; 
+PASS XHTML1.1+MathML parsing &conint; 
+PASS XHTML1.1+MathML parsing &Conint; 
+PASS XHTML1.1+MathML parsing &ContourIntegral; 
+PASS XHTML1.1+MathML parsing &copf; 
+PASS XHTML1.1+MathML parsing &Copf; 
+PASS XHTML1.1+MathML parsing &coprod; 
+PASS XHTML1.1+MathML parsing &Coproduct; 
+PASS XHTML1.1+MathML parsing &copy; 
+PASS XHTML1.1+MathML parsing &COPY; 
+PASS XHTML1.1+MathML parsing &copysr; 
+PASS XHTML1.1+MathML parsing &CounterClockwiseContourIntegral; 
+PASS XHTML1.1+MathML parsing &crarr; 
+PASS XHTML1.1+MathML parsing &cross; 
+PASS XHTML1.1+MathML parsing &Cross; 
+PASS XHTML1.1+MathML parsing &Cscr; 
+PASS XHTML1.1+MathML parsing &cscr; 
+PASS XHTML1.1+MathML parsing &csub; 
+PASS XHTML1.1+MathML parsing &csube; 
+PASS XHTML1.1+MathML parsing &csup; 
+PASS XHTML1.1+MathML parsing &csupe; 
+PASS XHTML1.1+MathML parsing &ctdot; 
+PASS XHTML1.1+MathML parsing &cudarrl; 
+PASS XHTML1.1+MathML parsing &cudarrr; 
+PASS XHTML1.1+MathML parsing &cuepr; 
+PASS XHTML1.1+MathML parsing &cuesc; 
+PASS XHTML1.1+MathML parsing &cularr; 
+PASS XHTML1.1+MathML parsing &cularrp; 
+PASS XHTML1.1+MathML parsing &cupbrcap; 
+PASS XHTML1.1+MathML parsing &cupcap; 
+PASS XHTML1.1+MathML parsing &CupCap; 
+PASS XHTML1.1+MathML parsing &cup; 
+PASS XHTML1.1+MathML parsing &Cup; 
+PASS XHTML1.1+MathML parsing &cupcup; 
+PASS XHTML1.1+MathML parsing &cupdot; 
+PASS XHTML1.1+MathML parsing &cupor; 
+PASS XHTML1.1+MathML parsing &cups; 
+PASS XHTML1.1+MathML parsing &curarr; 
+PASS XHTML1.1+MathML parsing &curarrm; 
+PASS XHTML1.1+MathML parsing &curlyeqprec; 
+PASS XHTML1.1+MathML parsing &curlyeqsucc; 
+PASS XHTML1.1+MathML parsing &curlyvee; 
+PASS XHTML1.1+MathML parsing &curlywedge; 
+PASS XHTML1.1+MathML parsing &curren; 
+PASS XHTML1.1+MathML parsing &curvearrowleft; 
+PASS XHTML1.1+MathML parsing &curvearrowright; 
+PASS XHTML1.1+MathML parsing &cuvee; 
+PASS XHTML1.1+MathML parsing &cuwed; 
+PASS XHTML1.1+MathML parsing &cwconint; 
+PASS XHTML1.1+MathML parsing &cwint; 
+PASS XHTML1.1+MathML parsing &cylcty; 
+PASS XHTML1.1+MathML parsing &dagger; 
+PASS XHTML1.1+MathML parsing &Dagger; 
+PASS XHTML1.1+MathML parsing &daleth; 
+PASS XHTML1.1+MathML parsing &darr; 
+PASS XHTML1.1+MathML parsing &Darr; 
+PASS XHTML1.1+MathML parsing &dArr; 
+PASS XHTML1.1+MathML parsing &dash; 
+PASS XHTML1.1+MathML parsing &Dashv; 
+PASS XHTML1.1+MathML parsing &dashv; 
+PASS XHTML1.1+MathML parsing &dbkarow; 
+PASS XHTML1.1+MathML parsing &dblac; 
+PASS XHTML1.1+MathML parsing &Dcaron; 
+PASS XHTML1.1+MathML parsing &dcaron; 
+PASS XHTML1.1+MathML parsing &Dcy; 
+PASS XHTML1.1+MathML parsing &dcy; 
+PASS XHTML1.1+MathML parsing &ddagger; 
+PASS XHTML1.1+MathML parsing &ddarr; 
+PASS XHTML1.1+MathML parsing &DD; 
+PASS XHTML1.1+MathML parsing &dd; 
+PASS XHTML1.1+MathML parsing &DDotrahd; 
+PASS XHTML1.1+MathML parsing &ddotseq; 
+PASS XHTML1.1+MathML parsing &deg; 
+PASS XHTML1.1+MathML parsing &Del; 
+PASS XHTML1.1+MathML parsing &Delta; 
+PASS XHTML1.1+MathML parsing &delta; 
+PASS XHTML1.1+MathML parsing &demptyv; 
+PASS XHTML1.1+MathML parsing &dfisht; 
+PASS XHTML1.1+MathML parsing &Dfr; 
+PASS XHTML1.1+MathML parsing &dfr; 
+PASS XHTML1.1+MathML parsing &dHar; 
+PASS XHTML1.1+MathML parsing &dharl; 
+PASS XHTML1.1+MathML parsing &dharr; 
+PASS XHTML1.1+MathML parsing &DiacriticalAcute; 
+PASS XHTML1.1+MathML parsing &DiacriticalDot; 
+PASS XHTML1.1+MathML parsing &DiacriticalDoubleAcute; 
+PASS XHTML1.1+MathML parsing &DiacriticalGrave; 
+PASS XHTML1.1+MathML parsing &DiacriticalTilde; 
+PASS XHTML1.1+MathML parsing &diam; 
+PASS XHTML1.1+MathML parsing &diamond; 
+PASS XHTML1.1+MathML parsing &Diamond; 
+PASS XHTML1.1+MathML parsing &diamondsuit; 
+PASS XHTML1.1+MathML parsing &diams; 
+PASS XHTML1.1+MathML parsing &die; 
+PASS XHTML1.1+MathML parsing &DifferentialD; 
+PASS XHTML1.1+MathML parsing &digamma; 
+PASS XHTML1.1+MathML parsing &disin; 
+PASS XHTML1.1+MathML parsing &div; 
+PASS XHTML1.1+MathML parsing &divide; 
+PASS XHTML1.1+MathML parsing &divideontimes; 
+PASS XHTML1.1+MathML parsing &divonx; 
+PASS XHTML1.1+MathML parsing &DJcy; 
+PASS XHTML1.1+MathML parsing &djcy; 
+PASS XHTML1.1+MathML parsing &dlcorn; 
+PASS XHTML1.1+MathML parsing &dlcrop; 
+PASS XHTML1.1+MathML parsing &dollar; 
+PASS XHTML1.1+MathML parsing &Dopf; 
+PASS XHTML1.1+MathML parsing &dopf; 
+PASS XHTML1.1+MathML parsing &Dot; 
+PASS XHTML1.1+MathML parsing &dot; 
+PASS XHTML1.1+MathML parsing &DotDot; 
+PASS XHTML1.1+MathML parsing &doteq; 
+PASS XHTML1.1+MathML parsing &doteqdot; 
+PASS XHTML1.1+MathML parsing &DotEqual; 
+PASS XHTML1.1+MathML parsing &dotminus; 
+PASS XHTML1.1+MathML parsing &dotplus; 
+PASS XHTML1.1+MathML parsing &dotsquare; 
+PASS XHTML1.1+MathML parsing &doublebarwedge; 
+PASS XHTML1.1+MathML parsing &DoubleContourIntegral; 
+PASS XHTML1.1+MathML parsing &DoubleDot; 
+PASS XHTML1.1+MathML parsing &DoubleDownArrow; 
+PASS XHTML1.1+MathML parsing &DoubleLeftArrow; 
+PASS XHTML1.1+MathML parsing &DoubleLeftRightArrow; 
+PASS XHTML1.1+MathML parsing &DoubleLeftTee; 
+PASS XHTML1.1+MathML parsing &DoubleLongLeftArrow; 
+PASS XHTML1.1+MathML parsing &DoubleLongLeftRightArrow; 
+PASS XHTML1.1+MathML parsing &DoubleLongRightArrow; 
+PASS XHTML1.1+MathML parsing &DoubleRightArrow; 
+PASS XHTML1.1+MathML parsing &DoubleRightTee; 
+PASS XHTML1.1+MathML parsing &DoubleUpArrow; 
+PASS XHTML1.1+MathML parsing &DoubleUpDownArrow; 
+PASS XHTML1.1+MathML parsing &DoubleVerticalBar; 
+PASS XHTML1.1+MathML parsing &DownArrowBar; 
+PASS XHTML1.1+MathML parsing &downarrow; 
+PASS XHTML1.1+MathML parsing &DownArrow; 
+PASS XHTML1.1+MathML parsing &Downarrow; 
+PASS XHTML1.1+MathML parsing &DownArrowUpArrow; 
+PASS XHTML1.1+MathML parsing &DownBreve; 
+PASS XHTML1.1+MathML parsing &downdownarrows; 
+PASS XHTML1.1+MathML parsing &downharpoonleft; 
+PASS XHTML1.1+MathML parsing &downharpoonright; 
+PASS XHTML1.1+MathML parsing &DownLeftRightVector; 
+PASS XHTML1.1+MathML parsing &DownLeftTeeVector; 
+PASS XHTML1.1+MathML parsing &DownLeftVectorBar; 
+PASS XHTML1.1+MathML parsing &DownLeftVector; 
+PASS XHTML1.1+MathML parsing &DownRightTeeVector; 
+PASS XHTML1.1+MathML parsing &DownRightVectorBar; 
+PASS XHTML1.1+MathML parsing &DownRightVector; 
+PASS XHTML1.1+MathML parsing &DownTeeArrow; 
+PASS XHTML1.1+MathML parsing &DownTee; 
+PASS XHTML1.1+MathML parsing &drbkarow; 
+PASS XHTML1.1+MathML parsing &drcorn; 
+PASS XHTML1.1+MathML parsing &drcrop; 
+PASS XHTML1.1+MathML parsing &Dscr; 
+PASS XHTML1.1+MathML parsing &dscr; 
+PASS XHTML1.1+MathML parsing &DScy; 
+PASS XHTML1.1+MathML parsing &dscy; 
+PASS XHTML1.1+MathML parsing &dsol; 
+PASS XHTML1.1+MathML parsing &Dstrok; 
+PASS XHTML1.1+MathML parsing &dstrok; 
+PASS XHTML1.1+MathML parsing &dtdot; 
+PASS XHTML1.1+MathML parsing &dtri; 
+PASS XHTML1.1+MathML parsing &dtrif; 
+PASS XHTML1.1+MathML parsing &duarr; 
+PASS XHTML1.1+MathML parsing &duhar; 
+PASS XHTML1.1+MathML parsing &dwangle; 
+PASS XHTML1.1+MathML parsing &DZcy; 
+PASS XHTML1.1+MathML parsing &dzcy; 
+PASS XHTML1.1+MathML parsing &dzigrarr; 
+PASS XHTML1.1+MathML parsing &Eacute; 
+PASS XHTML1.1+MathML parsing &eacute; 
+PASS XHTML1.1+MathML parsing &easter; 
+PASS XHTML1.1+MathML parsing &Ecaron; 
+PASS XHTML1.1+MathML parsing &ecaron; 
+PASS XHTML1.1+MathML parsing &Ecirc; 
+PASS XHTML1.1+MathML parsing &ecirc; 
+PASS XHTML1.1+MathML parsing &ecir; 
+PASS XHTML1.1+MathML parsing &ecolon; 
+PASS XHTML1.1+MathML parsing &Ecy; 
+PASS XHTML1.1+MathML parsing &ecy; 
+PASS XHTML1.1+MathML parsing &eDDot; 
+PASS XHTML1.1+MathML parsing &Edot; 
+PASS XHTML1.1+MathML parsing &edot; 
+PASS XHTML1.1+MathML parsing &eDot; 
+PASS XHTML1.1+MathML parsing &ee; 
+PASS XHTML1.1+MathML parsing &efDot; 
+PASS XHTML1.1+MathML parsing &Efr; 
+PASS XHTML1.1+MathML parsing &efr; 
+PASS XHTML1.1+MathML parsing &eg; 
+PASS XHTML1.1+MathML parsing &Egrave; 
+PASS XHTML1.1+MathML parsing &egrave; 
+PASS XHTML1.1+MathML parsing &egs; 
+PASS XHTML1.1+MathML parsing &egsdot; 
+PASS XHTML1.1+MathML parsing &el; 
+PASS XHTML1.1+MathML parsing &Element; 
+PASS XHTML1.1+MathML parsing &elinters; 
+PASS XHTML1.1+MathML parsing &ell; 
+PASS XHTML1.1+MathML parsing &els; 
+PASS XHTML1.1+MathML parsing &elsdot; 
+PASS XHTML1.1+MathML parsing &Emacr; 
+PASS XHTML1.1+MathML parsing &emacr; 
+PASS XHTML1.1+MathML parsing &empty; 
+PASS XHTML1.1+MathML parsing &emptyset; 
+PASS XHTML1.1+MathML parsing &EmptySmallSquare; 
+PASS XHTML1.1+MathML parsing &emptyv; 
+PASS XHTML1.1+MathML parsing &EmptyVerySmallSquare; 
+PASS XHTML1.1+MathML parsing &emsp13; 
+PASS XHTML1.1+MathML parsing &emsp14; 
+PASS XHTML1.1+MathML parsing &emsp; 
+PASS XHTML1.1+MathML parsing &ENG; 
+PASS XHTML1.1+MathML parsing &eng; 
+PASS XHTML1.1+MathML parsing &ensp; 
+PASS XHTML1.1+MathML parsing &Eogon; 
+PASS XHTML1.1+MathML parsing &eogon; 
+PASS XHTML1.1+MathML parsing &Eopf; 
+PASS XHTML1.1+MathML parsing &eopf; 
+PASS XHTML1.1+MathML parsing &epar; 
+PASS XHTML1.1+MathML parsing &eparsl; 
+PASS XHTML1.1+MathML parsing &eplus; 
+PASS XHTML1.1+MathML parsing &epsi; 
+PASS XHTML1.1+MathML parsing &Epsilon; 
+PASS XHTML1.1+MathML parsing &epsilon; 
+PASS XHTML1.1+MathML parsing &epsiv; 
+PASS XHTML1.1+MathML parsing &eqcirc; 
+PASS XHTML1.1+MathML parsing &eqcolon; 
+PASS XHTML1.1+MathML parsing &eqsim; 
+PASS XHTML1.1+MathML parsing &eqslantgtr; 
+PASS XHTML1.1+MathML parsing &eqslantless; 
+PASS XHTML1.1+MathML parsing &Equal; 
+PASS XHTML1.1+MathML parsing &equals; 
+PASS XHTML1.1+MathML parsing &EqualTilde; 
+PASS XHTML1.1+MathML parsing &equest; 
+PASS XHTML1.1+MathML parsing &Equilibrium; 
+PASS XHTML1.1+MathML parsing &equiv; 
+PASS XHTML1.1+MathML parsing &equivDD; 
+PASS XHTML1.1+MathML parsing &eqvparsl; 
+PASS XHTML1.1+MathML parsing &erarr; 
+PASS XHTML1.1+MathML parsing &erDot; 
+PASS XHTML1.1+MathML parsing &escr; 
+PASS XHTML1.1+MathML parsing &Escr; 
+PASS XHTML1.1+MathML parsing &esdot; 
+PASS XHTML1.1+MathML parsing &Esim; 
+PASS XHTML1.1+MathML parsing &esim; 
+PASS XHTML1.1+MathML parsing &Eta; 
+PASS XHTML1.1+MathML parsing &eta; 
+PASS XHTML1.1+MathML parsing &ETH; 
+PASS XHTML1.1+MathML parsing &eth; 
+PASS XHTML1.1+MathML parsing &Euml; 
+PASS XHTML1.1+MathML parsing &euml; 
+PASS XHTML1.1+MathML parsing &euro; 
+PASS XHTML1.1+MathML parsing &excl; 
+PASS XHTML1.1+MathML parsing &exist; 
+PASS XHTML1.1+MathML parsing &Exists; 
+PASS XHTML1.1+MathML parsing &expectation; 
+PASS XHTML1.1+MathML parsing &exponentiale; 
+PASS XHTML1.1+MathML parsing &ExponentialE; 
+PASS XHTML1.1+MathML parsing &fallingdotseq; 
+PASS XHTML1.1+MathML parsing &Fcy; 
+PASS XHTML1.1+MathML parsing &fcy; 
+PASS XHTML1.1+MathML parsing &female; 
+PASS XHTML1.1+MathML parsing &ffilig; 
+PASS XHTML1.1+MathML parsing &fflig; 
+PASS XHTML1.1+MathML parsing &ffllig; 
+PASS XHTML1.1+MathML parsing &Ffr; 
+PASS XHTML1.1+MathML parsing &ffr; 
+PASS XHTML1.1+MathML parsing &filig; 
+PASS XHTML1.1+MathML parsing &FilledSmallSquare; 
+PASS XHTML1.1+MathML parsing &FilledVerySmallSquare; 
+PASS XHTML1.1+MathML parsing &fjlig; 
+PASS XHTML1.1+MathML parsing &flat; 
+PASS XHTML1.1+MathML parsing &fllig; 
+PASS XHTML1.1+MathML parsing &fltns; 
+PASS XHTML1.1+MathML parsing &fnof; 
+PASS XHTML1.1+MathML parsing &Fopf; 
+PASS XHTML1.1+MathML parsing &fopf; 
+PASS XHTML1.1+MathML parsing &forall; 
+PASS XHTML1.1+MathML parsing &ForAll; 
+PASS XHTML1.1+MathML parsing &fork; 
+PASS XHTML1.1+MathML parsing &forkv; 
+PASS XHTML1.1+MathML parsing &Fouriertrf; 
+PASS XHTML1.1+MathML parsing &fpartint; 
+PASS XHTML1.1+MathML parsing &frac12; 
+PASS XHTML1.1+MathML parsing &frac13; 
+PASS XHTML1.1+MathML parsing &frac14; 
+PASS XHTML1.1+MathML parsing &frac15; 
+PASS XHTML1.1+MathML parsing &frac16; 
+PASS XHTML1.1+MathML parsing &frac18; 
+PASS XHTML1.1+MathML parsing &frac23; 
+PASS XHTML1.1+MathML parsing &frac25; 
+PASS XHTML1.1+MathML parsing &frac34; 
+PASS XHTML1.1+MathML parsing &frac35; 
+PASS XHTML1.1+MathML parsing &frac38; 
+PASS XHTML1.1+MathML parsing &frac45; 
+PASS XHTML1.1+MathML parsing &frac56; 
+PASS XHTML1.1+MathML parsing &frac58; 
+PASS XHTML1.1+MathML parsing &frac78; 
+PASS XHTML1.1+MathML parsing &frasl; 
+PASS XHTML1.1+MathML parsing &frown; 
+PASS XHTML1.1+MathML parsing &fscr; 
+PASS XHTML1.1+MathML parsing &Fscr; 
+PASS XHTML1.1+MathML parsing &gacute; 
+PASS XHTML1.1+MathML parsing &Gamma; 
+PASS XHTML1.1+MathML parsing &gamma; 
+PASS XHTML1.1+MathML parsing &Gammad; 
+PASS XHTML1.1+MathML parsing &gammad; 
+PASS XHTML1.1+MathML parsing &gap; 
+PASS XHTML1.1+MathML parsing &Gbreve; 
+PASS XHTML1.1+MathML parsing &gbreve; 
+PASS XHTML1.1+MathML parsing &Gcedil; 
+PASS XHTML1.1+MathML parsing &Gcirc; 
+PASS XHTML1.1+MathML parsing &gcirc; 
+PASS XHTML1.1+MathML parsing &Gcy; 
+PASS XHTML1.1+MathML parsing &gcy; 
+PASS XHTML1.1+MathML parsing &Gdot; 
+PASS XHTML1.1+MathML parsing &gdot; 
+PASS XHTML1.1+MathML parsing &ge; 
+PASS XHTML1.1+MathML parsing &gE; 
+PASS XHTML1.1+MathML parsing &gEl; 
+PASS XHTML1.1+MathML parsing &gel; 
+PASS XHTML1.1+MathML parsing &geq; 
+PASS XHTML1.1+MathML parsing &geqq; 
+PASS XHTML1.1+MathML parsing &geqslant; 
+PASS XHTML1.1+MathML parsing &gescc; 
+PASS XHTML1.1+MathML parsing &ges; 
+PASS XHTML1.1+MathML parsing &gesdot; 
+PASS XHTML1.1+MathML parsing &gesdoto; 
+PASS XHTML1.1+MathML parsing &gesdotol; 
+PASS XHTML1.1+MathML parsing &gesl; 
+PASS XHTML1.1+MathML parsing &gesles; 
+PASS XHTML1.1+MathML parsing &Gfr; 
+PASS XHTML1.1+MathML parsing &gfr; 
+PASS XHTML1.1+MathML parsing &gg; 
+PASS XHTML1.1+MathML parsing &Gg; 
+PASS XHTML1.1+MathML parsing &ggg; 
+PASS XHTML1.1+MathML parsing &gimel; 
+PASS XHTML1.1+MathML parsing &GJcy; 
+PASS XHTML1.1+MathML parsing &gjcy; 
+PASS XHTML1.1+MathML parsing &gla; 
+PASS XHTML1.1+MathML parsing &gl; 
+PASS XHTML1.1+MathML parsing &glE; 
+PASS XHTML1.1+MathML parsing &glj; 
+PASS XHTML1.1+MathML parsing &gnap; 
+PASS XHTML1.1+MathML parsing &gnapprox; 
+PASS XHTML1.1+MathML parsing &gne; 
+PASS XHTML1.1+MathML parsing &gnE; 
+PASS XHTML1.1+MathML parsing &gneq; 
+PASS XHTML1.1+MathML parsing &gneqq; 
+PASS XHTML1.1+MathML parsing &gnsim; 
+PASS XHTML1.1+MathML parsing &Gopf; 
+PASS XHTML1.1+MathML parsing &gopf; 
+PASS XHTML1.1+MathML parsing &grave; 
+PASS XHTML1.1+MathML parsing &GreaterEqual; 
+PASS XHTML1.1+MathML parsing &GreaterEqualLess; 
+PASS XHTML1.1+MathML parsing &GreaterFullEqual; 
+PASS XHTML1.1+MathML parsing &GreaterGreater; 
+PASS XHTML1.1+MathML parsing &GreaterLess; 
+PASS XHTML1.1+MathML parsing &GreaterSlantEqual; 
+PASS XHTML1.1+MathML parsing &GreaterTilde; 
+PASS XHTML1.1+MathML parsing &Gscr; 
+PASS XHTML1.1+MathML parsing &gscr; 
+PASS XHTML1.1+MathML parsing &gsim; 
+PASS XHTML1.1+MathML parsing &gsime; 
+PASS XHTML1.1+MathML parsing &gsiml; 
+PASS XHTML1.1+MathML parsing &gtcc; 
+PASS XHTML1.1+MathML parsing &gtcir; 
+PASS XHTML1.1+MathML parsing &gt; 
+PASS XHTML1.1+MathML parsing &GT; 
+PASS XHTML1.1+MathML parsing &Gt; 
+PASS XHTML1.1+MathML parsing &gtdot; 
+PASS XHTML1.1+MathML parsing &gtlPar; 
+PASS XHTML1.1+MathML parsing &gtquest; 
+PASS XHTML1.1+MathML parsing &gtrapprox; 
+PASS XHTML1.1+MathML parsing &gtrarr; 
+PASS XHTML1.1+MathML parsing &gtrdot; 
+PASS XHTML1.1+MathML parsing &gtreqless; 
+PASS XHTML1.1+MathML parsing &gtreqqless; 
+PASS XHTML1.1+MathML parsing &gtrless; 
+PASS XHTML1.1+MathML parsing &gtrsim; 
+PASS XHTML1.1+MathML parsing &gvertneqq; 
+PASS XHTML1.1+MathML parsing &gvnE; 
+PASS XHTML1.1+MathML parsing &Hacek; 
+PASS XHTML1.1+MathML parsing &hairsp; 
+PASS XHTML1.1+MathML parsing &half; 
+PASS XHTML1.1+MathML parsing &hamilt; 
+PASS XHTML1.1+MathML parsing &HARDcy; 
+PASS XHTML1.1+MathML parsing &hardcy; 
+PASS XHTML1.1+MathML parsing &harrcir; 
+PASS XHTML1.1+MathML parsing &harr; 
+PASS XHTML1.1+MathML parsing &hArr; 
+PASS XHTML1.1+MathML parsing &harrw; 
+PASS XHTML1.1+MathML parsing &Hat; 
+PASS XHTML1.1+MathML parsing &hbar; 
+PASS XHTML1.1+MathML parsing &Hcirc; 
+PASS XHTML1.1+MathML parsing &hcirc; 
+PASS XHTML1.1+MathML parsing &hearts; 
+PASS XHTML1.1+MathML parsing &heartsuit; 
+PASS XHTML1.1+MathML parsing &hellip; 
+PASS XHTML1.1+MathML parsing &hercon; 
+PASS XHTML1.1+MathML parsing &hfr; 
+PASS XHTML1.1+MathML parsing &Hfr; 
+PASS XHTML1.1+MathML parsing &HilbertSpace; 
+PASS XHTML1.1+MathML parsing &hksearow; 
+PASS XHTML1.1+MathML parsing &hkswarow; 
+PASS XHTML1.1+MathML parsing &hoarr; 
+PASS XHTML1.1+MathML parsing &homtht; 
+PASS XHTML1.1+MathML parsing &hookleftarrow; 
+PASS XHTML1.1+MathML parsing &hookrightarrow; 
+PASS XHTML1.1+MathML parsing &hopf; 
+PASS XHTML1.1+MathML parsing &Hopf; 
+PASS XHTML1.1+MathML parsing &horbar; 
+PASS XHTML1.1+MathML parsing &HorizontalLine; 
+PASS XHTML1.1+MathML parsing &hscr; 
+PASS XHTML1.1+MathML parsing &Hscr; 
+PASS XHTML1.1+MathML parsing &hslash; 
+PASS XHTML1.1+MathML parsing &Hstrok; 
+PASS XHTML1.1+MathML parsing &hstrok; 
+PASS XHTML1.1+MathML parsing &HumpDownHump; 
+PASS XHTML1.1+MathML parsing &HumpEqual; 
+PASS XHTML1.1+MathML parsing &hybull; 
+PASS XHTML1.1+MathML parsing &hyphen; 
+PASS XHTML1.1+MathML parsing &Iacute; 
+PASS XHTML1.1+MathML parsing &iacute; 
+PASS XHTML1.1+MathML parsing &ic; 
+PASS XHTML1.1+MathML parsing &Icirc; 
+PASS XHTML1.1+MathML parsing &icirc; 
+PASS XHTML1.1+MathML parsing &Icy; 
+PASS XHTML1.1+MathML parsing &icy; 
+PASS XHTML1.1+MathML parsing &Idot; 
+PASS XHTML1.1+MathML parsing &IEcy; 
+PASS XHTML1.1+MathML parsing &iecy; 
+PASS XHTML1.1+MathML parsing &iexcl; 
+PASS XHTML1.1+MathML parsing &iff; 
+PASS XHTML1.1+MathML parsing &ifr; 
+PASS XHTML1.1+MathML parsing &Ifr; 
+PASS XHTML1.1+MathML parsing &Igrave; 
+PASS XHTML1.1+MathML parsing &igrave; 
+PASS XHTML1.1+MathML parsing &ii; 
+PASS XHTML1.1+MathML parsing &iiiint; 
+PASS XHTML1.1+MathML parsing &iiint; 
+PASS XHTML1.1+MathML parsing &iinfin; 
+PASS XHTML1.1+MathML parsing &iiota; 
+PASS XHTML1.1+MathML parsing &IJlig; 
+PASS XHTML1.1+MathML parsing &ijlig; 
+PASS XHTML1.1+MathML parsing &Imacr; 
+PASS XHTML1.1+MathML parsing &imacr; 
+PASS XHTML1.1+MathML parsing &image; 
+PASS XHTML1.1+MathML parsing &ImaginaryI; 
+PASS XHTML1.1+MathML parsing &imagline; 
+PASS XHTML1.1+MathML parsing &imagpart; 
+PASS XHTML1.1+MathML parsing &imath; 
+PASS XHTML1.1+MathML parsing &Im; 
+PASS XHTML1.1+MathML parsing &imof; 
+PASS XHTML1.1+MathML parsing &imped; 
+PASS XHTML1.1+MathML parsing &Implies; 
+PASS XHTML1.1+MathML parsing &incare; 
+PASS XHTML1.1+MathML parsing &in; 
+PASS XHTML1.1+MathML parsing &infin; 
+PASS XHTML1.1+MathML parsing &infintie; 
+PASS XHTML1.1+MathML parsing &inodot; 
+PASS XHTML1.1+MathML parsing &intcal; 
+PASS XHTML1.1+MathML parsing &int; 
+PASS XHTML1.1+MathML parsing &Int; 
+PASS XHTML1.1+MathML parsing &integers; 
+PASS XHTML1.1+MathML parsing &Integral; 
+PASS XHTML1.1+MathML parsing &intercal; 
+PASS XHTML1.1+MathML parsing &Intersection; 
+PASS XHTML1.1+MathML parsing &intlarhk; 
+PASS XHTML1.1+MathML parsing &intprod; 
+PASS XHTML1.1+MathML parsing &InvisibleComma; 
+PASS XHTML1.1+MathML parsing &InvisibleTimes; 
+PASS XHTML1.1+MathML parsing &IOcy; 
+PASS XHTML1.1+MathML parsing &iocy; 
+PASS XHTML1.1+MathML parsing &Iogon; 
+PASS XHTML1.1+MathML parsing &iogon; 
+PASS XHTML1.1+MathML parsing &Iopf; 
+PASS XHTML1.1+MathML parsing &iopf; 
+PASS XHTML1.1+MathML parsing &Iota; 
+PASS XHTML1.1+MathML parsing &iota; 
+PASS XHTML1.1+MathML parsing &iprod; 
+PASS XHTML1.1+MathML parsing &iquest; 
+PASS XHTML1.1+MathML parsing &iscr; 
+PASS XHTML1.1+MathML parsing &Iscr; 
+PASS XHTML1.1+MathML parsing &isin; 
+PASS XHTML1.1+MathML parsing &isindot; 
+PASS XHTML1.1+MathML parsing &isinE; 
+PASS XHTML1.1+MathML parsing &isins; 
+PASS XHTML1.1+MathML parsing &isinsv; 
+PASS XHTML1.1+MathML parsing &isinv; 
+PASS XHTML1.1+MathML parsing &it; 
+PASS XHTML1.1+MathML parsing &Itilde; 
+PASS XHTML1.1+MathML parsing &itilde; 
+PASS XHTML1.1+MathML parsing &Iukcy; 
+PASS XHTML1.1+MathML parsing &iukcy; 
+PASS XHTML1.1+MathML parsing &Iuml; 
+PASS XHTML1.1+MathML parsing &iuml; 
+PASS XHTML1.1+MathML parsing &Jcirc; 
+PASS XHTML1.1+MathML parsing &jcirc; 
+PASS XHTML1.1+MathML parsing &Jcy; 
+PASS XHTML1.1+MathML parsing &jcy; 
+PASS XHTML1.1+MathML parsing &Jfr; 
+PASS XHTML1.1+MathML parsing &jfr; 
+PASS XHTML1.1+MathML parsing &jmath; 
+PASS XHTML1.1+MathML parsing &Jopf; 
+PASS XHTML1.1+MathML parsing &jopf; 
+PASS XHTML1.1+MathML parsing &Jscr; 
+PASS XHTML1.1+MathML parsing &jscr; 
+PASS XHTML1.1+MathML parsing &Jsercy; 
+PASS XHTML1.1+MathML parsing &jsercy; 
+PASS XHTML1.1+MathML parsing &Jukcy; 
+PASS XHTML1.1+MathML parsing &jukcy; 
+PASS XHTML1.1+MathML parsing &Kappa; 
+PASS XHTML1.1+MathML parsing &kappa; 
+PASS XHTML1.1+MathML parsing &kappav; 
+PASS XHTML1.1+MathML parsing &Kcedil; 
+PASS XHTML1.1+MathML parsing &kcedil; 
+PASS XHTML1.1+MathML parsing &Kcy; 
+PASS XHTML1.1+MathML parsing &kcy; 
+PASS XHTML1.1+MathML parsing &Kfr; 
+PASS XHTML1.1+MathML parsing &kfr; 
+PASS XHTML1.1+MathML parsing &kgreen; 
+PASS XHTML1.1+MathML parsing &KHcy; 
+PASS XHTML1.1+MathML parsing &khcy; 
+PASS XHTML1.1+MathML parsing &KJcy; 
+PASS XHTML1.1+MathML parsing &kjcy; 
+PASS XHTML1.1+MathML parsing &Kopf; 
+PASS XHTML1.1+MathML parsing &kopf; 
+PASS XHTML1.1+MathML parsing &Kscr; 
+PASS XHTML1.1+MathML parsing &kscr; 
+PASS XHTML1.1+MathML parsing &lAarr; 
+PASS XHTML1.1+MathML parsing &Lacute; 
+PASS XHTML1.1+MathML parsing &lacute; 
+PASS XHTML1.1+MathML parsing &laemptyv; 
+PASS XHTML1.1+MathML parsing &lagran; 
+PASS XHTML1.1+MathML parsing &Lambda; 
+PASS XHTML1.1+MathML parsing &lambda; 
+PASS XHTML1.1+MathML parsing &lang; 
+PASS XHTML1.1+MathML parsing &Lang; 
+PASS XHTML1.1+MathML parsing &langd; 
+PASS XHTML1.1+MathML parsing &langle; 
+PASS XHTML1.1+MathML parsing &lap; 
+PASS XHTML1.1+MathML parsing &Laplacetrf; 
+PASS XHTML1.1+MathML parsing &laquo; 
+PASS XHTML1.1+MathML parsing &larrb; 
+PASS XHTML1.1+MathML parsing &larrbfs; 
+PASS XHTML1.1+MathML parsing &larr; 
+PASS XHTML1.1+MathML parsing &Larr; 
+PASS XHTML1.1+MathML parsing &lArr; 
+PASS XHTML1.1+MathML parsing &larrfs; 
+PASS XHTML1.1+MathML parsing &larrhk; 
+PASS XHTML1.1+MathML parsing &larrlp; 
+PASS XHTML1.1+MathML parsing &larrpl; 
+PASS XHTML1.1+MathML parsing &larrsim; 
+PASS XHTML1.1+MathML parsing &larrtl; 
+PASS XHTML1.1+MathML parsing &latail; 
+PASS XHTML1.1+MathML parsing &lAtail; 
+PASS XHTML1.1+MathML parsing &lat; 
+PASS XHTML1.1+MathML parsing &late; 
+PASS XHTML1.1+MathML parsing &lates; 
+PASS XHTML1.1+MathML parsing &lbarr; 
+PASS XHTML1.1+MathML parsing &lBarr; 
+PASS XHTML1.1+MathML parsing &lbbrk; 
+PASS XHTML1.1+MathML parsing &lbrace; 
+PASS XHTML1.1+MathML parsing &lbrack; 
+PASS XHTML1.1+MathML parsing &lbrke; 
+PASS XHTML1.1+MathML parsing &lbrksld; 
+PASS XHTML1.1+MathML parsing &lbrkslu; 
+PASS XHTML1.1+MathML parsing &Lcaron; 
+PASS XHTML1.1+MathML parsing &lcaron; 
+PASS XHTML1.1+MathML parsing &Lcedil; 
+PASS XHTML1.1+MathML parsing &lcedil; 
+PASS XHTML1.1+MathML parsing &lceil; 
+PASS XHTML1.1+MathML parsing &lcub; 
+PASS XHTML1.1+MathML parsing &Lcy; 
+PASS XHTML1.1+MathML parsing &lcy; 
+PASS XHTML1.1+MathML parsing &ldca; 
+PASS XHTML1.1+MathML parsing &ldquo; 
+PASS XHTML1.1+MathML parsing &ldquor; 
+PASS XHTML1.1+MathML parsing &ldrdhar; 
+PASS XHTML1.1+MathML parsing &ldrushar; 
+PASS XHTML1.1+MathML parsing &ldsh; 
+PASS XHTML1.1+MathML parsing &le; 
+PASS XHTML1.1+MathML parsing &lE; 
+PASS XHTML1.1+MathML parsing &LeftAngleBracket; 
+PASS XHTML1.1+MathML parsing &LeftArrowBar; 
+PASS XHTML1.1+MathML parsing &leftarrow; 
+PASS XHTML1.1+MathML parsing &LeftArrow; 
+PASS XHTML1.1+MathML parsing &Leftarrow; 
+PASS XHTML1.1+MathML parsing &LeftArrowRightArrow; 
+PASS XHTML1.1+MathML parsing &leftarrowtail; 
+PASS XHTML1.1+MathML parsing &LeftCeiling; 
+PASS XHTML1.1+MathML parsing &LeftDoubleBracket; 
+PASS XHTML1.1+MathML parsing &LeftDownTeeVector; 
+PASS XHTML1.1+MathML parsing &LeftDownVectorBar; 
+PASS XHTML1.1+MathML parsing &LeftDownVector; 
+PASS XHTML1.1+MathML parsing &LeftFloor; 
+PASS XHTML1.1+MathML parsing &leftharpoondown; 
+PASS XHTML1.1+MathML parsing &leftharpoonup; 
+PASS XHTML1.1+MathML parsing &leftleftarrows; 
+PASS XHTML1.1+MathML parsing &leftrightarrow; 
+PASS XHTML1.1+MathML parsing &LeftRightArrow; 
+PASS XHTML1.1+MathML parsing &Leftrightarrow; 
+PASS XHTML1.1+MathML parsing &leftrightarrows; 
+PASS XHTML1.1+MathML parsing &leftrightharpoons; 
+PASS XHTML1.1+MathML parsing &leftrightsquigarrow; 
+PASS XHTML1.1+MathML parsing &LeftRightVector; 
+PASS XHTML1.1+MathML parsing &LeftTeeArrow; 
+PASS XHTML1.1+MathML parsing &LeftTee; 
+PASS XHTML1.1+MathML parsing &LeftTeeVector; 
+PASS XHTML1.1+MathML parsing &leftthreetimes; 
+PASS XHTML1.1+MathML parsing &LeftTriangleBar; 
+PASS XHTML1.1+MathML parsing &LeftTriangle; 
+PASS XHTML1.1+MathML parsing &LeftTriangleEqual; 
+PASS XHTML1.1+MathML parsing &LeftUpDownVector; 
+PASS XHTML1.1+MathML parsing &LeftUpTeeVector; 
+PASS XHTML1.1+MathML parsing &LeftUpVectorBar; 
+PASS XHTML1.1+MathML parsing &LeftUpVector; 
+PASS XHTML1.1+MathML parsing &LeftVectorBar; 
+PASS XHTML1.1+MathML parsing &LeftVector; 
+PASS XHTML1.1+MathML parsing &lEg; 
+PASS XHTML1.1+MathML parsing &leg; 
+PASS XHTML1.1+MathML parsing &leq; 
+PASS XHTML1.1+MathML parsing &leqq; 
+PASS XHTML1.1+MathML parsing &leqslant; 
+PASS XHTML1.1+MathML parsing &lescc; 
+PASS XHTML1.1+MathML parsing &les; 
+PASS XHTML1.1+MathML parsing &lesdot; 
+PASS XHTML1.1+MathML parsing &lesdoto; 
+PASS XHTML1.1+MathML parsing &lesdotor; 
+PASS XHTML1.1+MathML parsing &lesg; 
+PASS XHTML1.1+MathML parsing &lesges; 
+PASS XHTML1.1+MathML parsing &lessapprox; 
+PASS XHTML1.1+MathML parsing &lessdot; 
+PASS XHTML1.1+MathML parsing &lesseqgtr; 
+PASS XHTML1.1+MathML parsing &lesseqqgtr; 
+PASS XHTML1.1+MathML parsing &LessEqualGreater; 
+PASS XHTML1.1+MathML parsing &LessFullEqual; 
+PASS XHTML1.1+MathML parsing &LessGreater; 
+PASS XHTML1.1+MathML parsing &lessgtr; 
+PASS XHTML1.1+MathML parsing &LessLess; 
+PASS XHTML1.1+MathML parsing &lesssim; 
+PASS XHTML1.1+MathML parsing &LessSlantEqual; 
+PASS XHTML1.1+MathML parsing &LessTilde; 
+PASS XHTML1.1+MathML parsing &lfisht; 
+PASS XHTML1.1+MathML parsing &lfloor; 
+PASS XHTML1.1+MathML parsing &Lfr; 
+PASS XHTML1.1+MathML parsing &lfr; 
+PASS XHTML1.1+MathML parsing &lg; 
+PASS XHTML1.1+MathML parsing &lgE; 
+PASS XHTML1.1+MathML parsing &lHar; 
+PASS XHTML1.1+MathML parsing &lhard; 
+PASS XHTML1.1+MathML parsing &lharu; 
+PASS XHTML1.1+MathML parsing &lharul; 
+PASS XHTML1.1+MathML parsing &lhblk; 
+PASS XHTML1.1+MathML parsing &LJcy; 
+PASS XHTML1.1+MathML parsing &ljcy; 
+PASS XHTML1.1+MathML parsing &llarr; 
+PASS XHTML1.1+MathML parsing &ll; 
+PASS XHTML1.1+MathML parsing &Ll; 
+PASS XHTML1.1+MathML parsing &llcorner; 
+PASS XHTML1.1+MathML parsing &Lleftarrow; 
+PASS XHTML1.1+MathML parsing &llhard; 
+PASS XHTML1.1+MathML parsing &lltri; 
+PASS XHTML1.1+MathML parsing &Lmidot; 
+PASS XHTML1.1+MathML parsing &lmidot; 
+PASS XHTML1.1+MathML parsing &lmoustache; 
+PASS XHTML1.1+MathML parsing &lmoust; 
+PASS XHTML1.1+MathML parsing &lnap; 
+PASS XHTML1.1+MathML parsing &lnapprox; 
+PASS XHTML1.1+MathML parsing &lne; 
+PASS XHTML1.1+MathML parsing &lnE; 
+PASS XHTML1.1+MathML parsing &lneq; 
+PASS XHTML1.1+MathML parsing &lneqq; 
+PASS XHTML1.1+MathML parsing &lnsim; 
+PASS XHTML1.1+MathML parsing &loang; 
+PASS XHTML1.1+MathML parsing &loarr; 
+PASS XHTML1.1+MathML parsing &lobrk; 
+PASS XHTML1.1+MathML parsing &longleftarrow; 
+PASS XHTML1.1+MathML parsing &LongLeftArrow; 
+PASS XHTML1.1+MathML parsing &Longleftarrow; 
+PASS XHTML1.1+MathML parsing &longleftrightarrow; 
+PASS XHTML1.1+MathML parsing &LongLeftRightArrow; 
+PASS XHTML1.1+MathML parsing &Longleftrightarrow; 
+PASS XHTML1.1+MathML parsing &longmapsto; 
+PASS XHTML1.1+MathML parsing &longrightarrow; 
+PASS XHTML1.1+MathML parsing &LongRightArrow; 
+PASS XHTML1.1+MathML parsing &Longrightarrow; 
+PASS XHTML1.1+MathML parsing &looparrowleft; 
+PASS XHTML1.1+MathML parsing &looparrowright; 
+PASS XHTML1.1+MathML parsing &lopar; 
+PASS XHTML1.1+MathML parsing &Lopf; 
+PASS XHTML1.1+MathML parsing &lopf; 
+PASS XHTML1.1+MathML parsing &loplus; 
+PASS XHTML1.1+MathML parsing &lotimes; 
+PASS XHTML1.1+MathML parsing &lowast; 
+PASS XHTML1.1+MathML parsing &lowbar; 
+PASS XHTML1.1+MathML parsing &LowerLeftArrow; 
+PASS XHTML1.1+MathML parsing &LowerRightArrow; 
+PASS XHTML1.1+MathML parsing &loz; 
+PASS XHTML1.1+MathML parsing &lozenge; 
+PASS XHTML1.1+MathML parsing &lozf; 
+PASS XHTML1.1+MathML parsing &lpar; 
+PASS XHTML1.1+MathML parsing &lparlt; 
+PASS XHTML1.1+MathML parsing &lrarr; 
+PASS XHTML1.1+MathML parsing &lrcorner; 
+PASS XHTML1.1+MathML parsing &lrhar; 
+PASS XHTML1.1+MathML parsing &lrhard; 
+PASS XHTML1.1+MathML parsing &lrm; 
+PASS XHTML1.1+MathML parsing &lrtri; 
+PASS XHTML1.1+MathML parsing &lsaquo; 
+PASS XHTML1.1+MathML parsing &lscr; 
+PASS XHTML1.1+MathML parsing &Lscr; 
+PASS XHTML1.1+MathML parsing &lsh; 
+PASS XHTML1.1+MathML parsing &Lsh; 
+PASS XHTML1.1+MathML parsing &lsim; 
+PASS XHTML1.1+MathML parsing &lsime; 
+PASS XHTML1.1+MathML parsing &lsimg; 
+PASS XHTML1.1+MathML parsing &lsqb; 
+PASS XHTML1.1+MathML parsing &lsquo; 
+PASS XHTML1.1+MathML parsing &lsquor; 
+PASS XHTML1.1+MathML parsing &Lstrok; 
+PASS XHTML1.1+MathML parsing &lstrok; 
+PASS XHTML1.1+MathML parsing &ltcc; 
+PASS XHTML1.1+MathML parsing &ltcir; 
+PASS XHTML1.1+MathML parsing &lt; 
+FAIL XHTML1.1+MathML parsing &LT; assert_true: expected true got false
+PASS XHTML1.1+MathML parsing &Lt; 
+PASS XHTML1.1+MathML parsing &ltdot; 
+PASS XHTML1.1+MathML parsing &lthree; 
+PASS XHTML1.1+MathML parsing &ltimes; 
+PASS XHTML1.1+MathML parsing &ltlarr; 
+PASS XHTML1.1+MathML parsing &ltquest; 
+PASS XHTML1.1+MathML parsing &ltri; 
+PASS XHTML1.1+MathML parsing &ltrie; 
+PASS XHTML1.1+MathML parsing &ltrif; 
+PASS XHTML1.1+MathML parsing &ltrPar; 
+PASS XHTML1.1+MathML parsing &lurdshar; 
+PASS XHTML1.1+MathML parsing &luruhar; 
+PASS XHTML1.1+MathML parsing &lvertneqq; 
+PASS XHTML1.1+MathML parsing &lvnE; 
+PASS XHTML1.1+MathML parsing &macr; 
+PASS XHTML1.1+MathML parsing &male; 
+PASS XHTML1.1+MathML parsing &malt; 
+PASS XHTML1.1+MathML parsing &maltese; 
+PASS XHTML1.1+MathML parsing &Map; 
+PASS XHTML1.1+MathML parsing &map; 
+PASS XHTML1.1+MathML parsing &mapsto; 
+PASS XHTML1.1+MathML parsing &mapstodown; 
+PASS XHTML1.1+MathML parsing &mapstoleft; 
+PASS XHTML1.1+MathML parsing &mapstoup; 
+PASS XHTML1.1+MathML parsing &marker; 
+PASS XHTML1.1+MathML parsing &mcomma; 
+PASS XHTML1.1+MathML parsing &Mcy; 
+PASS XHTML1.1+MathML parsing &mcy; 
+PASS XHTML1.1+MathML parsing &mdash; 
+PASS XHTML1.1+MathML parsing &mDDot; 
+PASS XHTML1.1+MathML parsing &measuredangle; 
+PASS XHTML1.1+MathML parsing &MediumSpace; 
+PASS XHTML1.1+MathML parsing &Mellintrf; 
+PASS XHTML1.1+MathML parsing &Mfr; 
+PASS XHTML1.1+MathML parsing &mfr; 
+PASS XHTML1.1+MathML parsing &mho; 
+PASS XHTML1.1+MathML parsing &micro; 
+PASS XHTML1.1+MathML parsing &midast; 
+PASS XHTML1.1+MathML parsing &midcir; 
+PASS XHTML1.1+MathML parsing &mid; 
+PASS XHTML1.1+MathML parsing &middot; 
+PASS XHTML1.1+MathML parsing &minusb; 
+PASS XHTML1.1+MathML parsing &minus; 
+PASS XHTML1.1+MathML parsing &minusd; 
+PASS XHTML1.1+MathML parsing &minusdu; 
+PASS XHTML1.1+MathML parsing &MinusPlus; 
+PASS XHTML1.1+MathML parsing &mlcp; 
+PASS XHTML1.1+MathML parsing &mldr; 
+PASS XHTML1.1+MathML parsing &mnplus; 
+PASS XHTML1.1+MathML parsing &models; 
+PASS XHTML1.1+MathML parsing &Mopf; 
+PASS XHTML1.1+MathML parsing &mopf; 
+PASS XHTML1.1+MathML parsing &mp; 
+PASS XHTML1.1+MathML parsing &mscr; 
+PASS XHTML1.1+MathML parsing &Mscr; 
+PASS XHTML1.1+MathML parsing &mstpos; 
+PASS XHTML1.1+MathML parsing &Mu; 
+PASS XHTML1.1+MathML parsing &mu; 
+PASS XHTML1.1+MathML parsing &multimap; 
+PASS XHTML1.1+MathML parsing &mumap; 
+PASS XHTML1.1+MathML parsing &nabla; 
+PASS XHTML1.1+MathML parsing &Nacute; 
+PASS XHTML1.1+MathML parsing &nacute; 
+PASS XHTML1.1+MathML parsing &nang; 
+PASS XHTML1.1+MathML parsing &nap; 
+PASS XHTML1.1+MathML parsing &napE; 
+PASS XHTML1.1+MathML parsing &napid; 
+PASS XHTML1.1+MathML parsing &napos; 
+PASS XHTML1.1+MathML parsing &napprox; 
+PASS XHTML1.1+MathML parsing &natural; 
+PASS XHTML1.1+MathML parsing &naturals; 
+PASS XHTML1.1+MathML parsing &natur; 
+PASS XHTML1.1+MathML parsing &nbsp; 
+PASS XHTML1.1+MathML parsing &nbump; 
+PASS XHTML1.1+MathML parsing &nbumpe; 
+PASS XHTML1.1+MathML parsing &ncap; 
+PASS XHTML1.1+MathML parsing &Ncaron; 
+PASS XHTML1.1+MathML parsing &ncaron; 
+PASS XHTML1.1+MathML parsing &Ncedil; 
+PASS XHTML1.1+MathML parsing &ncedil; 
+PASS XHTML1.1+MathML parsing &ncong; 
+PASS XHTML1.1+MathML parsing &ncongdot; 
+PASS XHTML1.1+MathML parsing &ncup; 
+PASS XHTML1.1+MathML parsing &Ncy; 
+PASS XHTML1.1+MathML parsing &ncy; 
+PASS XHTML1.1+MathML parsing &ndash; 
+PASS XHTML1.1+MathML parsing &nearhk; 
+PASS XHTML1.1+MathML parsing &nearr; 
+PASS XHTML1.1+MathML parsing &neArr; 
+PASS XHTML1.1+MathML parsing &nearrow; 
+PASS XHTML1.1+MathML parsing &ne; 
+PASS XHTML1.1+MathML parsing &nedot; 
+PASS XHTML1.1+MathML parsing &NegativeMediumSpace; 
+PASS XHTML1.1+MathML parsing &NegativeThickSpace; 
+PASS XHTML1.1+MathML parsing &NegativeThinSpace; 
+PASS XHTML1.1+MathML parsing &NegativeVeryThinSpace; 
+PASS XHTML1.1+MathML parsing &nequiv; 
+PASS XHTML1.1+MathML parsing &nesear; 
+PASS XHTML1.1+MathML parsing &nesim; 
+PASS XHTML1.1+MathML parsing &NestedGreaterGreater; 
+PASS XHTML1.1+MathML parsing &NestedLessLess; 
+PASS XHTML1.1+MathML parsing &NewLine; 
+PASS XHTML1.1+MathML parsing &nexist; 
+PASS XHTML1.1+MathML parsing &nexists; 
+PASS XHTML1.1+MathML parsing &Nfr; 
+PASS XHTML1.1+MathML parsing &nfr; 
+PASS XHTML1.1+MathML parsing &ngE; 
+PASS XHTML1.1+MathML parsing &nge; 
+PASS XHTML1.1+MathML parsing &ngeq; 
+PASS XHTML1.1+MathML parsing &ngeqq; 
+PASS XHTML1.1+MathML parsing &ngeqslant; 
+PASS XHTML1.1+MathML parsing &nges; 
+PASS XHTML1.1+MathML parsing &nGg; 
+PASS XHTML1.1+MathML parsing &ngsim; 
+PASS XHTML1.1+MathML parsing &nGt; 
+PASS XHTML1.1+MathML parsing &ngt; 
+PASS XHTML1.1+MathML parsing &ngtr; 
+PASS XHTML1.1+MathML parsing &nGtv; 
+PASS XHTML1.1+MathML parsing &nharr; 
+PASS XHTML1.1+MathML parsing &nhArr; 
+PASS XHTML1.1+MathML parsing &nhpar; 
+PASS XHTML1.1+MathML parsing &ni; 
+PASS XHTML1.1+MathML parsing &nis; 
+PASS XHTML1.1+MathML parsing &nisd; 
+PASS XHTML1.1+MathML parsing &niv; 
+PASS XHTML1.1+MathML parsing &NJcy; 
+PASS XHTML1.1+MathML parsing &njcy; 
+PASS XHTML1.1+MathML parsing &nlarr; 
+PASS XHTML1.1+MathML parsing &nlArr; 
+PASS XHTML1.1+MathML parsing &nldr; 
+PASS XHTML1.1+MathML parsing &nlE; 
+PASS XHTML1.1+MathML parsing &nle; 
+PASS XHTML1.1+MathML parsing &nleftarrow; 
+PASS XHTML1.1+MathML parsing &nLeftarrow; 
+PASS XHTML1.1+MathML parsing &nleftrightarrow; 
+PASS XHTML1.1+MathML parsing &nLeftrightarrow; 
+PASS XHTML1.1+MathML parsing &nleq; 
+PASS XHTML1.1+MathML parsing &nleqq; 
+PASS XHTML1.1+MathML parsing &nleqslant; 
+PASS XHTML1.1+MathML parsing &nles; 
+PASS XHTML1.1+MathML parsing &nless; 
+PASS XHTML1.1+MathML parsing &nLl; 
+PASS XHTML1.1+MathML parsing &nlsim; 
+PASS XHTML1.1+MathML parsing &nLt; 
+PASS XHTML1.1+MathML parsing &nlt; 
+PASS XHTML1.1+MathML parsing &nltri; 
+PASS XHTML1.1+MathML parsing &nltrie; 
+PASS XHTML1.1+MathML parsing &nLtv; 
+PASS XHTML1.1+MathML parsing &nmid; 
+PASS XHTML1.1+MathML parsing &NoBreak; 
+PASS XHTML1.1+MathML parsing &NonBreakingSpace; 
+PASS XHTML1.1+MathML parsing &nopf; 
+PASS XHTML1.1+MathML parsing &Nopf; 
+PASS XHTML1.1+MathML parsing &Not; 
+PASS XHTML1.1+MathML parsing &not; 
+PASS XHTML1.1+MathML parsing &NotCongruent; 
+PASS XHTML1.1+MathML parsing &NotCupCap; 
+PASS XHTML1.1+MathML parsing &NotDoubleVerticalBar; 
+PASS XHTML1.1+MathML parsing &NotElement; 
+PASS XHTML1.1+MathML parsing &NotEqual; 
+PASS XHTML1.1+MathML parsing &NotEqualTilde; 
+PASS XHTML1.1+MathML parsing &NotExists; 
+PASS XHTML1.1+MathML parsing &NotGreater; 
+PASS XHTML1.1+MathML parsing &NotGreaterEqual; 
+PASS XHTML1.1+MathML parsing &NotGreaterFullEqual; 
+PASS XHTML1.1+MathML parsing &NotGreaterGreater; 
+PASS XHTML1.1+MathML parsing &NotGreaterLess; 
+PASS XHTML1.1+MathML parsing &NotGreaterSlantEqual; 
+PASS XHTML1.1+MathML parsing &NotGreaterTilde; 
+PASS XHTML1.1+MathML parsing &NotHumpDownHump; 
+PASS XHTML1.1+MathML parsing &NotHumpEqual; 
+PASS XHTML1.1+MathML parsing &notin; 
+PASS XHTML1.1+MathML parsing &notindot; 
+PASS XHTML1.1+MathML parsing &notinE; 
+PASS XHTML1.1+MathML parsing &notinva; 
+PASS XHTML1.1+MathML parsing &notinvb; 
+PASS XHTML1.1+MathML parsing &notinvc; 
+PASS XHTML1.1+MathML parsing &NotLeftTriangleBar; 
+PASS XHTML1.1+MathML parsing &NotLeftTriangle; 
+PASS XHTML1.1+MathML parsing &NotLeftTriangleEqual; 
+PASS XHTML1.1+MathML parsing &NotLess; 
+PASS XHTML1.1+MathML parsing &NotLessEqual; 
+PASS XHTML1.1+MathML parsing &NotLessGreater; 
+PASS XHTML1.1+MathML parsing &NotLessLess; 
+PASS XHTML1.1+MathML parsing &NotLessSlantEqual; 
+PASS XHTML1.1+MathML parsing &NotLessTilde; 
+PASS XHTML1.1+MathML parsing &NotNestedGreaterGreater; 
+PASS XHTML1.1+MathML parsing &NotNestedLessLess; 
+PASS XHTML1.1+MathML parsing &notni; 
+PASS XHTML1.1+MathML parsing &notniva; 
+PASS XHTML1.1+MathML parsing &notnivb; 
+PASS XHTML1.1+MathML parsing &notnivc; 
+PASS XHTML1.1+MathML parsing &NotPrecedes; 
+PASS XHTML1.1+MathML parsing &NotPrecedesEqual; 
+PASS XHTML1.1+MathML parsing &NotPrecedesSlantEqual; 
+PASS XHTML1.1+MathML parsing &NotReverseElement; 
+PASS XHTML1.1+MathML parsing &NotRightTriangleBar; 
+PASS XHTML1.1+MathML parsing &NotRightTriangle; 
+PASS XHTML1.1+MathML parsing &NotRightTriangleEqual; 
+PASS XHTML1.1+MathML parsing &NotSquareSubset; 
+PASS XHTML1.1+MathML parsing &NotSquareSubsetEqual; 
+PASS XHTML1.1+MathML parsing &NotSquareSuperset; 
+PASS XHTML1.1+MathML parsing &NotSquareSupersetEqual; 
+PASS XHTML1.1+MathML parsing &NotSubset; 
+PASS XHTML1.1+MathML parsing &NotSubsetEqual; 
+PASS XHTML1.1+MathML parsing &NotSucceeds; 
+PASS XHTML1.1+MathML parsing &NotSucceedsEqual; 
+PASS XHTML1.1+MathML parsing &NotSucceedsSlantEqual; 
+PASS XHTML1.1+MathML parsing &NotSucceedsTilde; 
+PASS XHTML1.1+MathML parsing &NotSuperset; 
+PASS XHTML1.1+MathML parsing &NotSupersetEqual; 
+PASS XHTML1.1+MathML parsing &NotTilde; 
+PASS XHTML1.1+MathML parsing &NotTildeEqual; 
+PASS XHTML1.1+MathML parsing &NotTildeFullEqual; 
+PASS XHTML1.1+MathML parsing &NotTildeTilde; 
+PASS XHTML1.1+MathML parsing &NotVerticalBar; 
+PASS XHTML1.1+MathML parsing &nparallel; 
+PASS XHTML1.1+MathML parsing &npar; 
+PASS XHTML1.1+MathML parsing &nparsl; 
+PASS XHTML1.1+MathML parsing &npart; 
+PASS XHTML1.1+MathML parsing &npolint; 
+PASS XHTML1.1+MathML parsing &npr; 
+PASS XHTML1.1+MathML parsing &nprcue; 
+PASS XHTML1.1+MathML parsing &nprec; 
+PASS XHTML1.1+MathML parsing &npreceq; 
+PASS XHTML1.1+MathML parsing &npre; 
+PASS XHTML1.1+MathML parsing &nrarrc; 
+PASS XHTML1.1+MathML parsing &nrarr; 
+PASS XHTML1.1+MathML parsing &nrArr; 
+PASS XHTML1.1+MathML parsing &nrarrw; 
+PASS XHTML1.1+MathML parsing &nrightarrow; 
+PASS XHTML1.1+MathML parsing &nRightarrow; 
+PASS XHTML1.1+MathML parsing &nrtri; 
+PASS XHTML1.1+MathML parsing &nrtrie; 
+PASS XHTML1.1+MathML parsing &nsc; 
+PASS XHTML1.1+MathML parsing &nsccue; 
+PASS XHTML1.1+MathML parsing &nsce; 
+PASS XHTML1.1+MathML parsing &Nscr; 
+PASS XHTML1.1+MathML parsing &nscr; 
+PASS XHTML1.1+MathML parsing &nshortmid; 
+PASS XHTML1.1+MathML parsing &nshortparallel; 
+PASS XHTML1.1+MathML parsing &nsim; 
+PASS XHTML1.1+MathML parsing &nsime; 
+PASS XHTML1.1+MathML parsing &nsimeq; 
+PASS XHTML1.1+MathML parsing &nsmid; 
+PASS XHTML1.1+MathML parsing &nspar; 
+PASS XHTML1.1+MathML parsing &nsqsube; 
+PASS XHTML1.1+MathML parsing &nsqsupe; 
+PASS XHTML1.1+MathML parsing &nsub; 
+PASS XHTML1.1+MathML parsing &nsubE; 
+PASS XHTML1.1+MathML parsing &nsube; 
+PASS XHTML1.1+MathML parsing &nsubset; 
+PASS XHTML1.1+MathML parsing &nsubseteq; 
+PASS XHTML1.1+MathML parsing &nsubseteqq; 
+PASS XHTML1.1+MathML parsing &nsucc; 
+PASS XHTML1.1+MathML parsing &nsucceq; 
+PASS XHTML1.1+MathML parsing &nsup; 
+PASS XHTML1.1+MathML parsing &nsupE; 
+PASS XHTML1.1+MathML parsing &nsupe; 
+PASS XHTML1.1+MathML parsing &nsupset; 
+PASS XHTML1.1+MathML parsing &nsupseteq; 
+PASS XHTML1.1+MathML parsing &nsupseteqq; 
+PASS XHTML1.1+MathML parsing &ntgl; 
+PASS XHTML1.1+MathML parsing &Ntilde; 
+PASS XHTML1.1+MathML parsing &ntilde; 
+PASS XHTML1.1+MathML parsing &ntlg; 
+PASS XHTML1.1+MathML parsing &ntriangleleft; 
+PASS XHTML1.1+MathML parsing &ntrianglelefteq; 
+PASS XHTML1.1+MathML parsing &ntriangleright; 
+PASS XHTML1.1+MathML parsing &ntrianglerighteq; 
+PASS XHTML1.1+MathML parsing &Nu; 
+PASS XHTML1.1+MathML parsing &nu; 
+PASS XHTML1.1+MathML parsing &num; 
+PASS XHTML1.1+MathML parsing &numero; 
+PASS XHTML1.1+MathML parsing &numsp; 
+PASS XHTML1.1+MathML parsing &nvap; 
+PASS XHTML1.1+MathML parsing &nvdash; 
+PASS XHTML1.1+MathML parsing &nvDash; 
+PASS XHTML1.1+MathML parsing &nVdash; 
+PASS XHTML1.1+MathML parsing &nVDash; 
+PASS XHTML1.1+MathML parsing &nvge; 
+PASS XHTML1.1+MathML parsing &nvgt; 
+PASS XHTML1.1+MathML parsing &nvHarr; 
+PASS XHTML1.1+MathML parsing &nvinfin; 
+PASS XHTML1.1+MathML parsing &nvlArr; 
+PASS XHTML1.1+MathML parsing &nvle; 
+FAIL XHTML1.1+MathML parsing &nvlt; assert_equals: XHTML1.1+MathML parsing the entity reference caused a parse error; expected 3 but got 1
+PASS XHTML1.1+MathML parsing &nvltrie; 
+PASS XHTML1.1+MathML parsing &nvrArr; 
+PASS XHTML1.1+MathML parsing &nvrtrie; 
+PASS XHTML1.1+MathML parsing &nvsim; 
+PASS XHTML1.1+MathML parsing &nwarhk; 
+PASS XHTML1.1+MathML parsing &nwarr; 
+PASS XHTML1.1+MathML parsing &nwArr; 
+PASS XHTML1.1+MathML parsing &nwarrow; 
+PASS XHTML1.1+MathML parsing &nwnear; 
+PASS XHTML1.1+MathML parsing &Oacute; 
+PASS XHTML1.1+MathML parsing &oacute; 
+PASS XHTML1.1+MathML parsing &oast; 
+PASS XHTML1.1+MathML parsing &Ocirc; 
+PASS XHTML1.1+MathML parsing &ocirc; 
+PASS XHTML1.1+MathML parsing &ocir; 
+PASS XHTML1.1+MathML parsing &Ocy; 
+PASS XHTML1.1+MathML parsing &ocy; 
+PASS XHTML1.1+MathML parsing &odash; 
+PASS XHTML1.1+MathML parsing &Odblac; 
+PASS XHTML1.1+MathML parsing &odblac; 
+PASS XHTML1.1+MathML parsing &odiv; 
+PASS XHTML1.1+MathML parsing &odot; 
+PASS XHTML1.1+MathML parsing &odsold; 
+PASS XHTML1.1+MathML parsing &OElig; 
+PASS XHTML1.1+MathML parsing &oelig; 
+PASS XHTML1.1+MathML parsing &ofcir; 
+PASS XHTML1.1+MathML parsing &Ofr; 
+PASS XHTML1.1+MathML parsing &ofr; 
+PASS XHTML1.1+MathML parsing &ogon; 
+PASS XHTML1.1+MathML parsing &Ograve; 
+PASS XHTML1.1+MathML parsing &ograve; 
+PASS XHTML1.1+MathML parsing &ogt; 
+PASS XHTML1.1+MathML parsing &ohbar; 
+PASS XHTML1.1+MathML parsing &ohm; 
+PASS XHTML1.1+MathML parsing &oint; 
+PASS XHTML1.1+MathML parsing &olarr; 
+PASS XHTML1.1+MathML parsing &olcir; 
+PASS XHTML1.1+MathML parsing &olcross; 
+PASS XHTML1.1+MathML parsing &oline; 
+PASS XHTML1.1+MathML parsing &olt; 
+PASS XHTML1.1+MathML parsing &Omacr; 
+PASS XHTML1.1+MathML parsing &omacr; 
+PASS XHTML1.1+MathML parsing &Omega; 
+PASS XHTML1.1+MathML parsing &omega; 
+PASS XHTML1.1+MathML parsing &Omicron; 
+PASS XHTML1.1+MathML parsing &omicron; 
+PASS XHTML1.1+MathML parsing &omid; 
+PASS XHTML1.1+MathML parsing &ominus; 
+PASS XHTML1.1+MathML parsing &Oopf; 
+PASS XHTML1.1+MathML parsing &oopf; 
+PASS XHTML1.1+MathML parsing &opar; 
+PASS XHTML1.1+MathML parsing &OpenCurlyDoubleQuote; 
+PASS XHTML1.1+MathML parsing &OpenCurlyQuote; 
+PASS XHTML1.1+MathML parsing &operp; 
+PASS XHTML1.1+MathML parsing &oplus; 
+PASS XHTML1.1+MathML parsing &orarr; 
+PASS XHTML1.1+MathML parsing &Or; 
+PASS XHTML1.1+MathML parsing &or; 
+PASS XHTML1.1+MathML parsing &ord; 
+PASS XHTML1.1+MathML parsing &order; 
+PASS XHTML1.1+MathML parsing &orderof; 
+PASS XHTML1.1+MathML parsing &ordf; 
+PASS XHTML1.1+MathML parsing &ordm; 
+PASS XHTML1.1+MathML parsing &origof; 
+PASS XHTML1.1+MathML parsing &oror; 
+PASS XHTML1.1+MathML parsing &orslope; 
+PASS XHTML1.1+MathML parsing &orv; 
+PASS XHTML1.1+MathML parsing &oS; 
+PASS XHTML1.1+MathML parsing &Oscr; 
+PASS XHTML1.1+MathML parsing &oscr; 
+PASS XHTML1.1+MathML parsing &Oslash; 
+PASS XHTML1.1+MathML parsing &oslash; 
+PASS XHTML1.1+MathML parsing &osol; 
+PASS XHTML1.1+MathML parsing &Otilde; 
+PASS XHTML1.1+MathML parsing &otilde; 
+PASS XHTML1.1+MathML parsing &otimesas; 
+PASS XHTML1.1+MathML parsing &Otimes; 
+PASS XHTML1.1+MathML parsing &otimes; 
+PASS XHTML1.1+MathML parsing &Ouml; 
+PASS XHTML1.1+MathML parsing &ouml; 
+PASS XHTML1.1+MathML parsing &ovbar; 
+PASS XHTML1.1+MathML parsing &OverBar; 
+PASS XHTML1.1+MathML parsing &OverBrace; 
+PASS XHTML1.1+MathML parsing &OverBracket; 
+PASS XHTML1.1+MathML parsing &OverParenthesis; 
+PASS XHTML1.1+MathML parsing &para; 
+PASS XHTML1.1+MathML parsing &parallel; 
+PASS XHTML1.1+MathML parsing &par; 
+PASS XHTML1.1+MathML parsing &parsim; 
+PASS XHTML1.1+MathML parsing &parsl; 
+PASS XHTML1.1+MathML parsing &part; 
+PASS XHTML1.1+MathML parsing &PartialD; 
+PASS XHTML1.1+MathML parsing &Pcy; 
+PASS XHTML1.1+MathML parsing &pcy; 
+PASS XHTML1.1+MathML parsing &percnt; 
+PASS XHTML1.1+MathML parsing &period; 
+PASS XHTML1.1+MathML parsing &permil; 
+PASS XHTML1.1+MathML parsing &perp; 
+PASS XHTML1.1+MathML parsing &pertenk; 
+PASS XHTML1.1+MathML parsing &Pfr; 
+PASS XHTML1.1+MathML parsing &pfr; 
+PASS XHTML1.1+MathML parsing &Phi; 
+PASS XHTML1.1+MathML parsing &phi; 
+PASS XHTML1.1+MathML parsing &phiv; 
+PASS XHTML1.1+MathML parsing &phmmat; 
+PASS XHTML1.1+MathML parsing &phone; 
+PASS XHTML1.1+MathML parsing &Pi; 
+PASS XHTML1.1+MathML parsing &pi; 
+PASS XHTML1.1+MathML parsing &pitchfork; 
+PASS XHTML1.1+MathML parsing &piv; 
+PASS XHTML1.1+MathML parsing &planck; 
+PASS XHTML1.1+MathML parsing &planckh; 
+PASS XHTML1.1+MathML parsing &plankv; 
+PASS XHTML1.1+MathML parsing &plusacir; 
+PASS XHTML1.1+MathML parsing &plusb; 
+PASS XHTML1.1+MathML parsing &pluscir; 
+PASS XHTML1.1+MathML parsing &plus; 
+PASS XHTML1.1+MathML parsing &plusdo; 
+PASS XHTML1.1+MathML parsing &plusdu; 
+PASS XHTML1.1+MathML parsing &pluse; 
+PASS XHTML1.1+MathML parsing &PlusMinus; 
+PASS XHTML1.1+MathML parsing &plusmn; 
+PASS XHTML1.1+MathML parsing &plussim; 
+PASS XHTML1.1+MathML parsing &plustwo; 
+PASS XHTML1.1+MathML parsing &pm; 
+PASS XHTML1.1+MathML parsing &Poincareplane; 
+PASS XHTML1.1+MathML parsing &pointint; 
+PASS XHTML1.1+MathML parsing &popf; 
+PASS XHTML1.1+MathML parsing &Popf; 
+PASS XHTML1.1+MathML parsing &pound; 
+PASS XHTML1.1+MathML parsing &prap; 
+PASS XHTML1.1+MathML parsing &Pr; 
+PASS XHTML1.1+MathML parsing &pr; 
+PASS XHTML1.1+MathML parsing &prcue; 
+PASS XHTML1.1+MathML parsing &precapprox; 
+PASS XHTML1.1+MathML parsing &prec; 
+PASS XHTML1.1+MathML parsing &preccurlyeq; 
+PASS XHTML1.1+MathML parsing &Precedes; 
+PASS XHTML1.1+MathML parsing &PrecedesEqual; 
+PASS XHTML1.1+MathML parsing &PrecedesSlantEqual; 
+PASS XHTML1.1+MathML parsing &PrecedesTilde; 
+PASS XHTML1.1+MathML parsing &preceq; 
+PASS XHTML1.1+MathML parsing &precnapprox; 
+PASS XHTML1.1+MathML parsing &precneqq; 
+PASS XHTML1.1+MathML parsing &precnsim; 
+PASS XHTML1.1+MathML parsing &pre; 
+PASS XHTML1.1+MathML parsing &prE; 
+PASS XHTML1.1+MathML parsing &precsim; 
+PASS XHTML1.1+MathML parsing &prime; 
+PASS XHTML1.1+MathML parsing &Prime; 
+PASS XHTML1.1+MathML parsing &primes; 
+PASS XHTML1.1+MathML parsing &prnap; 
+PASS XHTML1.1+MathML parsing &prnE; 
+PASS XHTML1.1+MathML parsing &prnsim; 
+PASS XHTML1.1+MathML parsing &prod; 
+PASS XHTML1.1+MathML parsing &Product; 
+PASS XHTML1.1+MathML parsing &profalar; 
+PASS XHTML1.1+MathML parsing &profline; 
+PASS XHTML1.1+MathML parsing &profsurf; 
+PASS XHTML1.1+MathML parsing &prop; 
+PASS XHTML1.1+MathML parsing &Proportional; 
+PASS XHTML1.1+MathML parsing &Proportion; 
+PASS XHTML1.1+MathML parsing &propto; 
+PASS XHTML1.1+MathML parsing &prsim; 
+PASS XHTML1.1+MathML parsing &prurel; 
+PASS XHTML1.1+MathML parsing &Pscr; 
+PASS XHTML1.1+MathML parsing &pscr; 
+PASS XHTML1.1+MathML parsing &Psi; 
+PASS XHTML1.1+MathML parsing &psi; 
+PASS XHTML1.1+MathML parsing &puncsp; 
+PASS XHTML1.1+MathML parsing &Qfr; 
+PASS XHTML1.1+MathML parsing &qfr; 
+PASS XHTML1.1+MathML parsing &qint; 
+PASS XHTML1.1+MathML parsing &qopf; 
+PASS XHTML1.1+MathML parsing &Qopf; 
+PASS XHTML1.1+MathML parsing &qprime; 
+PASS XHTML1.1+MathML parsing &Qscr; 
+PASS XHTML1.1+MathML parsing &qscr; 
+PASS XHTML1.1+MathML parsing &quaternions; 
+PASS XHTML1.1+MathML parsing &quatint; 
+PASS XHTML1.1+MathML parsing &quest; 
+PASS XHTML1.1+MathML parsing &questeq; 
+PASS XHTML1.1+MathML parsing &quot; 
+PASS XHTML1.1+MathML parsing &QUOT; 
+PASS XHTML1.1+MathML parsing &rAarr; 
+PASS XHTML1.1+MathML parsing &race; 
+PASS XHTML1.1+MathML parsing &Racute; 
+PASS XHTML1.1+MathML parsing &racute; 
+PASS XHTML1.1+MathML parsing &radic; 
+PASS XHTML1.1+MathML parsing &raemptyv; 
+PASS XHTML1.1+MathML parsing &rang; 
+PASS XHTML1.1+MathML parsing &Rang; 
+PASS XHTML1.1+MathML parsing &rangd; 
+PASS XHTML1.1+MathML parsing &range; 
+PASS XHTML1.1+MathML parsing &rangle; 
+PASS XHTML1.1+MathML parsing &raquo; 
+PASS XHTML1.1+MathML parsing &rarrap; 
+PASS XHTML1.1+MathML parsing &rarrb; 
+PASS XHTML1.1+MathML parsing &rarrbfs; 
+PASS XHTML1.1+MathML parsing &rarrc; 
+PASS XHTML1.1+MathML parsing &rarr; 
+PASS XHTML1.1+MathML parsing &Rarr; 
+PASS XHTML1.1+MathML parsing &rArr; 
+PASS XHTML1.1+MathML parsing &rarrfs; 
+PASS XHTML1.1+MathML parsing &rarrhk; 
+PASS XHTML1.1+MathML parsing &rarrlp; 
+PASS XHTML1.1+MathML parsing &rarrpl; 
+PASS XHTML1.1+MathML parsing &rarrsim; 
+PASS XHTML1.1+MathML parsing &Rarrtl; 
+PASS XHTML1.1+MathML parsing &rarrtl; 
+PASS XHTML1.1+MathML parsing &rarrw; 
+PASS XHTML1.1+MathML parsing &ratail; 
+PASS XHTML1.1+MathML parsing &rAtail; 
+PASS XHTML1.1+MathML parsing &ratio; 
+PASS XHTML1.1+MathML parsing &rationals; 
+PASS XHTML1.1+MathML parsing &rbarr; 
+PASS XHTML1.1+MathML parsing &rBarr; 
+PASS XHTML1.1+MathML parsing &RBarr; 
+PASS XHTML1.1+MathML parsing &rbbrk; 
+PASS XHTML1.1+MathML parsing &rbrace; 
+PASS XHTML1.1+MathML parsing &rbrack; 
+PASS XHTML1.1+MathML parsing &rbrke; 
+PASS XHTML1.1+MathML parsing &rbrksld; 
+PASS XHTML1.1+MathML parsing &rbrkslu; 
+PASS XHTML1.1+MathML parsing &Rcaron; 
+PASS XHTML1.1+MathML parsing &rcaron; 
+PASS XHTML1.1+MathML parsing &Rcedil; 
+PASS XHTML1.1+MathML parsing &rcedil; 
+PASS XHTML1.1+MathML parsing &rceil; 
+PASS XHTML1.1+MathML parsing &rcub; 
+PASS XHTML1.1+MathML parsing &Rcy; 
+PASS XHTML1.1+MathML parsing &rcy; 
+PASS XHTML1.1+MathML parsing &rdca; 
+PASS XHTML1.1+MathML parsing &rdldhar; 
+PASS XHTML1.1+MathML parsing &rdquo; 
+PASS XHTML1.1+MathML parsing &rdquor; 
+PASS XHTML1.1+MathML parsing &rdsh; 
+PASS XHTML1.1+MathML parsing &real; 
+PASS XHTML1.1+MathML parsing &realine; 
+PASS XHTML1.1+MathML parsing &realpart; 
+PASS XHTML1.1+MathML parsing &reals; 
+PASS XHTML1.1+MathML parsing &Re; 
+PASS XHTML1.1+MathML parsing &rect; 
+PASS XHTML1.1+MathML parsing &reg; 
+PASS XHTML1.1+MathML parsing &REG; 
+PASS XHTML1.1+MathML parsing &ReverseElement; 
+PASS XHTML1.1+MathML parsing &ReverseEquilibrium; 
+PASS XHTML1.1+MathML parsing &ReverseUpEquilibrium; 
+PASS XHTML1.1+MathML parsing &rfisht; 
+PASS XHTML1.1+MathML parsing &rfloor; 
+PASS XHTML1.1+MathML parsing &rfr; 
+PASS XHTML1.1+MathML parsing &Rfr; 
+PASS XHTML1.1+MathML parsing &rHar; 
+PASS XHTML1.1+MathML parsing &rhard; 
+PASS XHTML1.1+MathML parsing &rharu; 
+PASS XHTML1.1+MathML parsing &rharul; 
+PASS XHTML1.1+MathML parsing &Rho; 
+PASS XHTML1.1+MathML parsing &rho; 
+PASS XHTML1.1+MathML parsing &rhov; 
+PASS XHTML1.1+MathML parsing &RightAngleBracket; 
+PASS XHTML1.1+MathML parsing &RightArrowBar; 
+PASS XHTML1.1+MathML parsing &rightarrow; 
+PASS XHTML1.1+MathML parsing &RightArrow; 
+PASS XHTML1.1+MathML parsing &Rightarrow; 
+PASS XHTML1.1+MathML parsing &RightArrowLeftArrow; 
+PASS XHTML1.1+MathML parsing &rightarrowtail; 
+PASS XHTML1.1+MathML parsing &RightCeiling; 
+PASS XHTML1.1+MathML parsing &RightDoubleBracket; 
+PASS XHTML1.1+MathML parsing &RightDownTeeVector; 
+PASS XHTML1.1+MathML parsing &RightDownVectorBar; 
+PASS XHTML1.1+MathML parsing &RightDownVector; 
+PASS XHTML1.1+MathML parsing &RightFloor; 
+PASS XHTML1.1+MathML parsing &rightharpoondown; 
+PASS XHTML1.1+MathML parsing &rightharpoonup; 
+PASS XHTML1.1+MathML parsing &rightleftarrows; 
+PASS XHTML1.1+MathML parsing &rightleftharpoons; 
+PASS XHTML1.1+MathML parsing &rightrightarrows; 
+PASS XHTML1.1+MathML parsing &rightsquigarrow; 
+PASS XHTML1.1+MathML parsing &RightTeeArrow; 
+PASS XHTML1.1+MathML parsing &RightTee; 
+PASS XHTML1.1+MathML parsing &RightTeeVector; 
+PASS XHTML1.1+MathML parsing &rightthreetimes; 
+PASS XHTML1.1+MathML parsing &RightTriangleBar; 
+PASS XHTML1.1+MathML parsing &RightTriangle; 
+PASS XHTML1.1+MathML parsing &RightTriangleEqual; 
+PASS XHTML1.1+MathML parsing &RightUpDownVector; 
+PASS XHTML1.1+MathML parsing &RightUpTeeVector; 
+PASS XHTML1.1+MathML parsing &RightUpVectorBar; 
+PASS XHTML1.1+MathML parsing &RightUpVector; 
+PASS XHTML1.1+MathML parsing &RightVectorBar; 
+PASS XHTML1.1+MathML parsing &RightVector; 
+PASS XHTML1.1+MathML parsing &ring; 
+PASS XHTML1.1+MathML parsing &risingdotseq; 
+PASS XHTML1.1+MathML parsing &rlarr; 
+PASS XHTML1.1+MathML parsing &rlhar; 
+PASS XHTML1.1+MathML parsing &rlm; 
+PASS XHTML1.1+MathML parsing &rmoustache; 
+PASS XHTML1.1+MathML parsing &rmoust; 
+PASS XHTML1.1+MathML parsing &rnmid; 
+PASS XHTML1.1+MathML parsing &roang; 
+PASS XHTML1.1+MathML parsing &roarr; 
+PASS XHTML1.1+MathML parsing &robrk; 
+PASS XHTML1.1+MathML parsing &ropar; 
+PASS XHTML1.1+MathML parsing &ropf; 
+PASS XHTML1.1+MathML parsing &Ropf; 
+PASS XHTML1.1+MathML parsing &roplus; 
+PASS XHTML1.1+MathML parsing &rotimes; 
+PASS XHTML1.1+MathML parsing &RoundImplies; 
+PASS XHTML1.1+MathML parsing &rpar; 
+PASS XHTML1.1+MathML parsing &rpargt; 
+PASS XHTML1.1+MathML parsing &rppolint; 
+PASS XHTML1.1+MathML parsing &rrarr; 
+PASS XHTML1.1+MathML parsing &Rrightarrow; 
+PASS XHTML1.1+MathML parsing &rsaquo; 
+PASS XHTML1.1+MathML parsing &rscr; 
+PASS XHTML1.1+MathML parsing &Rscr; 
+PASS XHTML1.1+MathML parsing &rsh; 
+PASS XHTML1.1+MathML parsing &Rsh; 
+PASS XHTML1.1+MathML parsing &rsqb; 
+PASS XHTML1.1+MathML parsing &rsquo; 
+PASS XHTML1.1+MathML parsing &rsquor; 
+PASS XHTML1.1+MathML parsing &rthree; 
+PASS XHTML1.1+MathML parsing &rtimes; 
+PASS XHTML1.1+MathML parsing &rtri; 
+PASS XHTML1.1+MathML parsing &rtrie; 
+PASS XHTML1.1+MathML parsing &rtrif; 
+PASS XHTML1.1+MathML parsing &rtriltri; 
+PASS XHTML1.1+MathML parsing &RuleDelayed; 
+PASS XHTML1.1+MathML parsing &ruluhar; 
+PASS XHTML1.1+MathML parsing &rx; 
+PASS XHTML1.1+MathML parsing &Sacute; 
+PASS XHTML1.1+MathML parsing &sacute; 
+PASS XHTML1.1+MathML parsing &sbquo; 
+PASS XHTML1.1+MathML parsing &scap; 
+PASS XHTML1.1+MathML parsing &Scaron; 
+PASS XHTML1.1+MathML parsing &scaron; 
+PASS XHTML1.1+MathML parsing &Sc; 
+PASS XHTML1.1+MathML parsing &sc; 
+PASS XHTML1.1+MathML parsing &sccue; 
+PASS XHTML1.1+MathML parsing &sce; 
+PASS XHTML1.1+MathML parsing &scE; 
+PASS XHTML1.1+MathML parsing &Scedil; 
+PASS XHTML1.1+MathML parsing &scedil; 
+PASS XHTML1.1+MathML parsing &Scirc; 
+PASS XHTML1.1+MathML parsing &scirc; 
+PASS XHTML1.1+MathML parsing &scnap; 
+PASS XHTML1.1+MathML parsing &scnE; 
+PASS XHTML1.1+MathML parsing &scnsim; 
+PASS XHTML1.1+MathML parsing &scpolint; 
+PASS XHTML1.1+MathML parsing &scsim; 
+PASS XHTML1.1+MathML parsing &Scy; 
+PASS XHTML1.1+MathML parsing &scy; 
+PASS XHTML1.1+MathML parsing &sdotb; 
+PASS XHTML1.1+MathML parsing &sdot; 
+PASS XHTML1.1+MathML parsing &sdote; 
+PASS XHTML1.1+MathML parsing &searhk; 
+PASS XHTML1.1+MathML parsing &searr; 
+PASS XHTML1.1+MathML parsing &seArr; 
+PASS XHTML1.1+MathML parsing &searrow; 
+PASS XHTML1.1+MathML parsing &sect; 
+PASS XHTML1.1+MathML parsing &semi; 
+PASS XHTML1.1+MathML parsing &seswar; 
+PASS XHTML1.1+MathML parsing &setminus; 
+PASS XHTML1.1+MathML parsing &setmn; 
+PASS XHTML1.1+MathML parsing &sext; 
+PASS XHTML1.1+MathML parsing &Sfr; 
+PASS XHTML1.1+MathML parsing &sfr; 
+PASS XHTML1.1+MathML parsing &sfrown; 
+PASS XHTML1.1+MathML parsing &sharp; 
+PASS XHTML1.1+MathML parsing &SHCHcy; 
+PASS XHTML1.1+MathML parsing &shchcy; 
+PASS XHTML1.1+MathML parsing &SHcy; 
+PASS XHTML1.1+MathML parsing &shcy; 
+PASS XHTML1.1+MathML parsing &ShortDownArrow; 
+PASS XHTML1.1+MathML parsing &ShortLeftArrow; 
+PASS XHTML1.1+MathML parsing &shortmid; 
+PASS XHTML1.1+MathML parsing &shortparallel; 
+PASS XHTML1.1+MathML parsing &ShortRightArrow; 
+PASS XHTML1.1+MathML parsing &ShortUpArrow; 
+PASS XHTML1.1+MathML parsing &shy; 
+PASS XHTML1.1+MathML parsing &Sigma; 
+PASS XHTML1.1+MathML parsing &sigma; 
+PASS XHTML1.1+MathML parsing &sigmaf; 
+PASS XHTML1.1+MathML parsing &sigmav; 
+PASS XHTML1.1+MathML parsing &sim; 
+PASS XHTML1.1+MathML parsing &simdot; 
+PASS XHTML1.1+MathML parsing &sime; 
+PASS XHTML1.1+MathML parsing &simeq; 
+PASS XHTML1.1+MathML parsing &simg; 
+PASS XHTML1.1+MathML parsing &simgE; 
+PASS XHTML1.1+MathML parsing &siml; 
+PASS XHTML1.1+MathML parsing &simlE; 
+PASS XHTML1.1+MathML parsing &simne; 
+PASS XHTML1.1+MathML parsing &simplus; 
+PASS XHTML1.1+MathML parsing &simrarr; 
+PASS XHTML1.1+MathML parsing &slarr; 
+PASS XHTML1.1+MathML parsing &SmallCircle; 
+PASS XHTML1.1+MathML parsing &smallsetminus; 
+PASS XHTML1.1+MathML parsing &smashp; 
+PASS XHTML1.1+MathML parsing &smeparsl; 
+PASS XHTML1.1+MathML parsing &smid; 
+PASS XHTML1.1+MathML parsing &smile; 
+PASS XHTML1.1+MathML parsing &smt; 
+PASS XHTML1.1+MathML parsing &smte; 
+PASS XHTML1.1+MathML parsing &smtes; 
+PASS XHTML1.1+MathML parsing &SOFTcy; 
+PASS XHTML1.1+MathML parsing &softcy; 
+PASS XHTML1.1+MathML parsing &solbar; 
+PASS XHTML1.1+MathML parsing &solb; 
+PASS XHTML1.1+MathML parsing &sol; 
+PASS XHTML1.1+MathML parsing &Sopf; 
+PASS XHTML1.1+MathML parsing &sopf; 
+PASS XHTML1.1+MathML parsing &spades; 
+PASS XHTML1.1+MathML parsing &spadesuit; 
+PASS XHTML1.1+MathML parsing &spar; 
+PASS XHTML1.1+MathML parsing &sqcap; 
+PASS XHTML1.1+MathML parsing &sqcaps; 
+PASS XHTML1.1+MathML parsing &sqcup; 
+PASS XHTML1.1+MathML parsing &sqcups; 
+PASS XHTML1.1+MathML parsing &Sqrt; 
+PASS XHTML1.1+MathML parsing &sqsub; 
+PASS XHTML1.1+MathML parsing &sqsube; 
+PASS XHTML1.1+MathML parsing &sqsubset; 
+PASS XHTML1.1+MathML parsing &sqsubseteq; 
+PASS XHTML1.1+MathML parsing &sqsup; 
+PASS XHTML1.1+MathML parsing &sqsupe; 
+PASS XHTML1.1+MathML parsing &sqsupset; 
+PASS XHTML1.1+MathML parsing &sqsupseteq; 
+PASS XHTML1.1+MathML parsing &square; 
+PASS XHTML1.1+MathML parsing &Square; 
+PASS XHTML1.1+MathML parsing &SquareIntersection; 
+PASS XHTML1.1+MathML parsing &SquareSubset; 
+PASS XHTML1.1+MathML parsing &SquareSubsetEqual; 
+PASS XHTML1.1+MathML parsing &SquareSuperset; 
+PASS XHTML1.1+MathML parsing &SquareSupersetEqual; 
+PASS XHTML1.1+MathML parsing &SquareUnion; 
+PASS XHTML1.1+MathML parsing &squarf; 
+PASS XHTML1.1+MathML parsing &squ; 
+PASS XHTML1.1+MathML parsing &squf; 
+PASS XHTML1.1+MathML parsing &srarr; 
+PASS XHTML1.1+MathML parsing &Sscr; 
+PASS XHTML1.1+MathML parsing &sscr; 
+PASS XHTML1.1+MathML parsing &ssetmn; 
+PASS XHTML1.1+MathML parsing &ssmile; 
+PASS XHTML1.1+MathML parsing &sstarf; 
+PASS XHTML1.1+MathML parsing &Star; 
+PASS XHTML1.1+MathML parsing &star; 
+PASS XHTML1.1+MathML parsing &starf; 
+PASS XHTML1.1+MathML parsing &straightepsilon; 
+PASS XHTML1.1+MathML parsing &straightphi; 
+PASS XHTML1.1+MathML parsing &strns; 
+PASS XHTML1.1+MathML parsing &sub; 
+PASS XHTML1.1+MathML parsing &Sub; 
+PASS XHTML1.1+MathML parsing &subdot; 
+PASS XHTML1.1+MathML parsing &subE; 
+PASS XHTML1.1+MathML parsing &sube; 
+PASS XHTML1.1+MathML parsing &subedot; 
+PASS XHTML1.1+MathML parsing &submult; 
+PASS XHTML1.1+MathML parsing &subnE; 
+PASS XHTML1.1+MathML parsing &subne; 
+PASS XHTML1.1+MathML parsing &subplus; 
+PASS XHTML1.1+MathML parsing &subrarr; 
+PASS XHTML1.1+MathML parsing &subset; 
+PASS XHTML1.1+MathML parsing &Subset; 
+PASS XHTML1.1+MathML parsing &subseteq; 
+PASS XHTML1.1+MathML parsing &subseteqq; 
+PASS XHTML1.1+MathML parsing &SubsetEqual; 
+PASS XHTML1.1+MathML parsing &subsetneq; 
+PASS XHTML1.1+MathML parsing &subsetneqq; 
+PASS XHTML1.1+MathML parsing &subsim; 
+PASS XHTML1.1+MathML parsing &subsub; 
+PASS XHTML1.1+MathML parsing &subsup; 
+PASS XHTML1.1+MathML parsing &succapprox; 
+PASS XHTML1.1+MathML parsing &succ; 
+PASS XHTML1.1+MathML parsing &succcurlyeq; 
+PASS XHTML1.1+MathML parsing &Succeeds; 
+PASS XHTML1.1+MathML parsing &SucceedsEqual; 
+PASS XHTML1.1+MathML parsing &SucceedsSlantEqual; 
+PASS XHTML1.1+MathML parsing &SucceedsTilde; 
+PASS XHTML1.1+MathML parsing &succeq; 
+PASS XHTML1.1+MathML parsing &succnapprox; 
+PASS XHTML1.1+MathML parsing &succneqq; 
+PASS XHTML1.1+MathML parsing &succnsim; 
+PASS XHTML1.1+MathML parsing &succsim; 
+PASS XHTML1.1+MathML parsing &SuchThat; 
+PASS XHTML1.1+MathML parsing &sum; 
+PASS XHTML1.1+MathML parsing &Sum; 
+PASS XHTML1.1+MathML parsing &sung; 
+PASS XHTML1.1+MathML parsing &sup1; 
+PASS XHTML1.1+MathML parsing &sup2; 
+PASS XHTML1.1+MathML parsing &sup3; 
+PASS XHTML1.1+MathML parsing &sup; 
+PASS XHTML1.1+MathML parsing &Sup; 
+PASS XHTML1.1+MathML parsing &supdot; 
+PASS XHTML1.1+MathML parsing &supdsub; 
+PASS XHTML1.1+MathML parsing &supE; 
+PASS XHTML1.1+MathML parsing &supe; 
+PASS XHTML1.1+MathML parsing &supedot; 
+PASS XHTML1.1+MathML parsing &Superset; 
+PASS XHTML1.1+MathML parsing &SupersetEqual; 
+PASS XHTML1.1+MathML parsing &suphsol; 
+PASS XHTML1.1+MathML parsing &suphsub; 
+PASS XHTML1.1+MathML parsing &suplarr; 
+PASS XHTML1.1+MathML parsing &supmult; 
+PASS XHTML1.1+MathML parsing &supnE; 
+PASS XHTML1.1+MathML parsing &supne; 
+PASS XHTML1.1+MathML parsing &supplus; 
+PASS XHTML1.1+MathML parsing &supset; 
+PASS XHTML1.1+MathML parsing &Supset; 
+PASS XHTML1.1+MathML parsing &supseteq; 
+PASS XHTML1.1+MathML parsing &supseteqq; 
+PASS XHTML1.1+MathML parsing &supsetneq; 
+PASS XHTML1.1+MathML parsing &supsetneqq; 
+PASS XHTML1.1+MathML parsing &supsim; 
+PASS XHTML1.1+MathML parsing &supsub; 
+PASS XHTML1.1+MathML parsing &supsup; 
+PASS XHTML1.1+MathML parsing &swarhk; 
+PASS XHTML1.1+MathML parsing &swarr; 
+PASS XHTML1.1+MathML parsing &swArr; 
+PASS XHTML1.1+MathML parsing &swarrow; 
+PASS XHTML1.1+MathML parsing &swnwar; 
+PASS XHTML1.1+MathML parsing &szlig; 
+PASS XHTML1.1+MathML parsing &Tab; 
+PASS XHTML1.1+MathML parsing &target; 
+PASS XHTML1.1+MathML parsing &Tau; 
+PASS XHTML1.1+MathML parsing &tau; 
+PASS XHTML1.1+MathML parsing &tbrk; 
+PASS XHTML1.1+MathML parsing &Tcaron; 
+PASS XHTML1.1+MathML parsing &tcaron; 
+PASS XHTML1.1+MathML parsing &Tcedil; 
+PASS XHTML1.1+MathML parsing &tcedil; 
+PASS XHTML1.1+MathML parsing &Tcy; 
+PASS XHTML1.1+MathML parsing &tcy; 
+PASS XHTML1.1+MathML parsing &tdot; 
+PASS XHTML1.1+MathML parsing &telrec; 
+PASS XHTML1.1+MathML parsing &Tfr; 
+PASS XHTML1.1+MathML parsing &tfr; 
+PASS XHTML1.1+MathML parsing &there4; 
+PASS XHTML1.1+MathML parsing &therefore; 
+PASS XHTML1.1+MathML parsing &Therefore; 
+PASS XHTML1.1+MathML parsing &Theta; 
+PASS XHTML1.1+MathML parsing &theta; 
+PASS XHTML1.1+MathML parsing &thetasym; 
+PASS XHTML1.1+MathML parsing &thetav; 
+PASS XHTML1.1+MathML parsing &thickapprox; 
+PASS XHTML1.1+MathML parsing &thicksim; 
+PASS XHTML1.1+MathML parsing &ThickSpace; 
+PASS XHTML1.1+MathML parsing &ThinSpace; 
+PASS XHTML1.1+MathML parsing &thinsp; 
+PASS XHTML1.1+MathML parsing &thkap; 
+PASS XHTML1.1+MathML parsing &thksim; 
+PASS XHTML1.1+MathML parsing &THORN; 
+PASS XHTML1.1+MathML parsing &thorn; 
+PASS XHTML1.1+MathML parsing &tilde; 
+PASS XHTML1.1+MathML parsing &Tilde; 
+PASS XHTML1.1+MathML parsing &TildeEqual; 
+PASS XHTML1.1+MathML parsing &TildeFullEqual; 
+PASS XHTML1.1+MathML parsing &TildeTilde; 
+PASS XHTML1.1+MathML parsing &timesbar; 
+PASS XHTML1.1+MathML parsing &timesb; 
+PASS XHTML1.1+MathML parsing &times; 
+PASS XHTML1.1+MathML parsing &timesd; 
+PASS XHTML1.1+MathML parsing &tint; 
+PASS XHTML1.1+MathML parsing &toea; 
+PASS XHTML1.1+MathML parsing &topbot; 
+PASS XHTML1.1+MathML parsing &topcir; 
+PASS XHTML1.1+MathML parsing &top; 
+PASS XHTML1.1+MathML parsing &Topf; 
+PASS XHTML1.1+MathML parsing &topf; 
+PASS XHTML1.1+MathML parsing &topfork; 
+PASS XHTML1.1+MathML parsing &tosa; 
+PASS XHTML1.1+MathML parsing &tprime; 
+PASS XHTML1.1+MathML parsing &trade; 
+PASS XHTML1.1+MathML parsing &TRADE; 
+PASS XHTML1.1+MathML parsing &triangle; 
+PASS XHTML1.1+MathML parsing &triangledown; 
+PASS XHTML1.1+MathML parsing &triangleleft; 
+PASS XHTML1.1+MathML parsing &trianglelefteq; 
+PASS XHTML1.1+MathML parsing &triangleq; 
+PASS XHTML1.1+MathML parsing &triangleright; 
+PASS XHTML1.1+MathML parsing &trianglerighteq; 
+PASS XHTML1.1+MathML parsing &tridot; 
+PASS XHTML1.1+MathML parsing &trie; 
+PASS XHTML1.1+MathML parsing &triminus; 
+PASS XHTML1.1+MathML parsing &TripleDot; 
+PASS XHTML1.1+MathML parsing &triplus; 
+PASS XHTML1.1+MathML parsing &trisb; 
+PASS XHTML1.1+MathML parsing &tritime; 
+PASS XHTML1.1+MathML parsing &trpezium; 
+PASS XHTML1.1+MathML parsing &Tscr; 
+PASS XHTML1.1+MathML parsing &tscr; 
+PASS XHTML1.1+MathML parsing &TScy; 
+PASS XHTML1.1+MathML parsing &tscy; 
+PASS XHTML1.1+MathML parsing &TSHcy; 
+PASS XHTML1.1+MathML parsing &tshcy; 
+PASS XHTML1.1+MathML parsing &Tstrok; 
+PASS XHTML1.1+MathML parsing &tstrok; 
+PASS XHTML1.1+MathML parsing &twixt; 
+PASS XHTML1.1+MathML parsing &twoheadleftarrow; 
+PASS XHTML1.1+MathML parsing &twoheadrightarrow; 
+PASS XHTML1.1+MathML parsing &Uacute; 
+PASS XHTML1.1+MathML parsing &uacute; 
+PASS XHTML1.1+MathML parsing &uarr; 
+PASS XHTML1.1+MathML parsing &Uarr; 
+PASS XHTML1.1+MathML parsing &uArr; 
+PASS XHTML1.1+MathML parsing &Uarrocir; 
+PASS XHTML1.1+MathML parsing &Ubrcy; 
+PASS XHTML1.1+MathML parsing &ubrcy; 
+PASS XHTML1.1+MathML parsing &Ubreve; 
+PASS XHTML1.1+MathML parsing &ubreve; 
+PASS XHTML1.1+MathML parsing &Ucirc; 
+PASS XHTML1.1+MathML parsing &ucirc; 
+PASS XHTML1.1+MathML parsing &Ucy; 
+PASS XHTML1.1+MathML parsing &ucy; 
+PASS XHTML1.1+MathML parsing &udarr; 
+PASS XHTML1.1+MathML parsing &Udblac; 
+PASS XHTML1.1+MathML parsing &udblac; 
+PASS XHTML1.1+MathML parsing &udhar; 
+PASS XHTML1.1+MathML parsing &ufisht; 
+PASS XHTML1.1+MathML parsing &Ufr; 
+PASS XHTML1.1+MathML parsing &ufr; 
+PASS XHTML1.1+MathML parsing &Ugrave; 
+PASS XHTML1.1+MathML parsing &ugrave; 
+PASS XHTML1.1+MathML parsing &uHar; 
+PASS XHTML1.1+MathML parsing &uharl; 
+PASS XHTML1.1+MathML parsing &uharr; 
+PASS XHTML1.1+MathML parsing &uhblk; 
+PASS XHTML1.1+MathML parsing &ulcorn; 
+PASS XHTML1.1+MathML parsing &ulcorner; 
+PASS XHTML1.1+MathML parsing &ulcrop; 
+PASS XHTML1.1+MathML parsing &ultri; 
+PASS XHTML1.1+MathML parsing &Umacr; 
+PASS XHTML1.1+MathML parsing &umacr; 
+PASS XHTML1.1+MathML parsing &uml; 
+PASS XHTML1.1+MathML parsing &UnderBar; 
+PASS XHTML1.1+MathML parsing &UnderBrace; 
+PASS XHTML1.1+MathML parsing &UnderBracket; 
+PASS XHTML1.1+MathML parsing &UnderParenthesis; 
+PASS XHTML1.1+MathML parsing &Union; 
+PASS XHTML1.1+MathML parsing &UnionPlus; 
+PASS XHTML1.1+MathML parsing &Uogon; 
+PASS XHTML1.1+MathML parsing &uogon; 
+PASS XHTML1.1+MathML parsing &Uopf; 
+PASS XHTML1.1+MathML parsing &uopf; 
+PASS XHTML1.1+MathML parsing &UpArrowBar; 
+PASS XHTML1.1+MathML parsing &uparrow; 
+PASS XHTML1.1+MathML parsing &UpArrow; 
+PASS XHTML1.1+MathML parsing &Uparrow; 
+PASS XHTML1.1+MathML parsing &UpArrowDownArrow; 
+PASS XHTML1.1+MathML parsing &updownarrow; 
+PASS XHTML1.1+MathML parsing &UpDownArrow; 
+PASS XHTML1.1+MathML parsing &Updownarrow; 
+PASS XHTML1.1+MathML parsing &UpEquilibrium; 
+PASS XHTML1.1+MathML parsing &upharpoonleft; 
+PASS XHTML1.1+MathML parsing &upharpoonright; 
+PASS XHTML1.1+MathML parsing &uplus; 
+PASS XHTML1.1+MathML parsing &UpperLeftArrow; 
+PASS XHTML1.1+MathML parsing &UpperRightArrow; 
+PASS XHTML1.1+MathML parsing &upsi; 
+PASS XHTML1.1+MathML parsing &Upsi; 
+PASS XHTML1.1+MathML parsing &upsih; 
+PASS XHTML1.1+MathML parsing &Upsilon; 
+PASS XHTML1.1+MathML parsing &upsilon; 
+PASS XHTML1.1+MathML parsing &UpTeeArrow; 
+PASS XHTML1.1+MathML parsing &UpTee; 
+PASS XHTML1.1+MathML parsing &upuparrows; 
+PASS XHTML1.1+MathML parsing &urcorn; 
+PASS XHTML1.1+MathML parsing &urcorner; 
+PASS XHTML1.1+MathML parsing &urcrop; 
+PASS XHTML1.1+MathML parsing &Uring; 
+PASS XHTML1.1+MathML parsing &uring; 
+PASS XHTML1.1+MathML parsing &urtri; 
+PASS XHTML1.1+MathML parsing &Uscr; 
+PASS XHTML1.1+MathML parsing &uscr; 
+PASS XHTML1.1+MathML parsing &utdot; 
+PASS XHTML1.1+MathML parsing &Utilde; 
+PASS XHTML1.1+MathML parsing &utilde; 
+PASS XHTML1.1+MathML parsing &utri; 
+PASS XHTML1.1+MathML parsing &utrif; 
+PASS XHTML1.1+MathML parsing &uuarr; 
+PASS XHTML1.1+MathML parsing &Uuml; 
+PASS XHTML1.1+MathML parsing &uuml; 
+PASS XHTML1.1+MathML parsing &uwangle; 
+PASS XHTML1.1+MathML parsing &vangrt; 
+PASS XHTML1.1+MathML parsing &varepsilon; 
+PASS XHTML1.1+MathML parsing &varkappa; 
+PASS XHTML1.1+MathML parsing &varnothing; 
+PASS XHTML1.1+MathML parsing &varphi; 
+PASS XHTML1.1+MathML parsing &varpi; 
+PASS XHTML1.1+MathML parsing &varpropto; 
+PASS XHTML1.1+MathML parsing &varr; 
+PASS XHTML1.1+MathML parsing &vArr; 
+PASS XHTML1.1+MathML parsing &varrho; 
+PASS XHTML1.1+MathML parsing &varsigma; 
+PASS XHTML1.1+MathML parsing &varsubsetneq; 
+PASS XHTML1.1+MathML parsing &varsubsetneqq; 
+PASS XHTML1.1+MathML parsing &varsupsetneq; 
+PASS XHTML1.1+MathML parsing &varsupsetneqq; 
+PASS XHTML1.1+MathML parsing &vartheta; 
+PASS XHTML1.1+MathML parsing &vartriangleleft; 
+PASS XHTML1.1+MathML parsing &vartriangleright; 
+PASS XHTML1.1+MathML parsing &vBar; 
+PASS XHTML1.1+MathML parsing &Vbar; 
+PASS XHTML1.1+MathML parsing &vBarv; 
+PASS XHTML1.1+MathML parsing &Vcy; 
+PASS XHTML1.1+MathML parsing &vcy; 
+PASS XHTML1.1+MathML parsing &vdash; 
+PASS XHTML1.1+MathML parsing &vDash; 
+PASS XHTML1.1+MathML parsing &Vdash; 
+PASS XHTML1.1+MathML parsing &VDash; 
+PASS XHTML1.1+MathML parsing &Vdashl; 
+PASS XHTML1.1+MathML parsing &veebar; 
+PASS XHTML1.1+MathML parsing &vee; 
+PASS XHTML1.1+MathML parsing &Vee; 
+PASS XHTML1.1+MathML parsing &veeeq; 
+PASS XHTML1.1+MathML parsing &vellip; 
+PASS XHTML1.1+MathML parsing &verbar; 
+PASS XHTML1.1+MathML parsing &Verbar; 
+PASS XHTML1.1+MathML parsing &vert; 
+PASS XHTML1.1+MathML parsing &Vert; 
+PASS XHTML1.1+MathML parsing &VerticalBar; 
+PASS XHTML1.1+MathML parsing &VerticalLine; 
+PASS XHTML1.1+MathML parsing &VerticalSeparator; 
+PASS XHTML1.1+MathML parsing &VerticalTilde; 
+PASS XHTML1.1+MathML parsing &VeryThinSpace; 
+PASS XHTML1.1+MathML parsing &Vfr; 
+PASS XHTML1.1+MathML parsing &vfr; 
+PASS XHTML1.1+MathML parsing &vltri; 
+PASS XHTML1.1+MathML parsing &vnsub; 
+PASS XHTML1.1+MathML parsing &vnsup; 
+PASS XHTML1.1+MathML parsing &Vopf; 
+PASS XHTML1.1+MathML parsing &vopf; 
+PASS XHTML1.1+MathML parsing &vprop; 
+PASS XHTML1.1+MathML parsing &vrtri; 
+PASS XHTML1.1+MathML parsing &Vscr; 
+PASS XHTML1.1+MathML parsing &vscr; 
+PASS XHTML1.1+MathML parsing &vsubnE; 
+PASS XHTML1.1+MathML parsing &vsubne; 
+PASS XHTML1.1+MathML parsing &vsupnE; 
+PASS XHTML1.1+MathML parsing &vsupne; 
+PASS XHTML1.1+MathML parsing &Vvdash; 
+PASS XHTML1.1+MathML parsing &vzigzag; 
+PASS XHTML1.1+MathML parsing &Wcirc; 
+PASS XHTML1.1+MathML parsing &wcirc; 
+PASS XHTML1.1+MathML parsing &wedbar; 
+PASS XHTML1.1+MathML parsing &wedge; 
+PASS XHTML1.1+MathML parsing &Wedge; 
+PASS XHTML1.1+MathML parsing &wedgeq; 
+PASS XHTML1.1+MathML parsing &weierp; 
+PASS XHTML1.1+MathML parsing &Wfr; 
+PASS XHTML1.1+MathML parsing &wfr; 
+PASS XHTML1.1+MathML parsing &Wopf; 
+PASS XHTML1.1+MathML parsing &wopf; 
+PASS XHTML1.1+MathML parsing &wp; 
+PASS XHTML1.1+MathML parsing &wr; 
+PASS XHTML1.1+MathML parsing &wreath; 
+PASS XHTML1.1+MathML parsing &Wscr; 
+PASS XHTML1.1+MathML parsing &wscr; 
+PASS XHTML1.1+MathML parsing &xcap; 
+PASS XHTML1.1+MathML parsing &xcirc; 
+PASS XHTML1.1+MathML parsing &xcup; 
+PASS XHTML1.1+MathML parsing &xdtri; 
+PASS XHTML1.1+MathML parsing &Xfr; 
+PASS XHTML1.1+MathML parsing &xfr; 
+PASS XHTML1.1+MathML parsing &xharr; 
+PASS XHTML1.1+MathML parsing &xhArr; 
+PASS XHTML1.1+MathML parsing &Xi; 
+PASS XHTML1.1+MathML parsing &xi; 
+PASS XHTML1.1+MathML parsing &xlarr; 
+PASS XHTML1.1+MathML parsing &xlArr; 
+PASS XHTML1.1+MathML parsing &xmap; 
+PASS XHTML1.1+MathML parsing &xnis; 
+PASS XHTML1.1+MathML parsing &xodot; 
+PASS XHTML1.1+MathML parsing &Xopf; 
+PASS XHTML1.1+MathML parsing &xopf; 
+PASS XHTML1.1+MathML parsing &xoplus; 
+PASS XHTML1.1+MathML parsing &xotime; 
+PASS XHTML1.1+MathML parsing &xrarr; 
+PASS XHTML1.1+MathML parsing &xrArr; 
+PASS XHTML1.1+MathML parsing &Xscr; 
+PASS XHTML1.1+MathML parsing &xscr; 
+PASS XHTML1.1+MathML parsing &xsqcup; 
+PASS XHTML1.1+MathML parsing &xuplus; 
+PASS XHTML1.1+MathML parsing &xutri; 
+PASS XHTML1.1+MathML parsing &xvee; 
+PASS XHTML1.1+MathML parsing &xwedge; 
+PASS XHTML1.1+MathML parsing &Yacute; 
+PASS XHTML1.1+MathML parsing &yacute; 
+PASS XHTML1.1+MathML parsing &YAcy; 
+PASS XHTML1.1+MathML parsing &yacy; 
+PASS XHTML1.1+MathML parsing &Ycirc; 
+PASS XHTML1.1+MathML parsing &ycirc; 
+PASS XHTML1.1+MathML parsing &Ycy; 
+PASS XHTML1.1+MathML parsing &ycy; 
+PASS XHTML1.1+MathML parsing &yen; 
+PASS XHTML1.1+MathML parsing &Yfr; 
+PASS XHTML1.1+MathML parsing &yfr; 
+PASS XHTML1.1+MathML parsing &YIcy; 
+PASS XHTML1.1+MathML parsing &yicy; 
+PASS XHTML1.1+MathML parsing &Yopf; 
+PASS XHTML1.1+MathML parsing &yopf; 
+PASS XHTML1.1+MathML parsing &Yscr; 
+PASS XHTML1.1+MathML parsing &yscr; 
+PASS XHTML1.1+MathML parsing &YUcy; 
+PASS XHTML1.1+MathML parsing &yucy; 
+PASS XHTML1.1+MathML parsing &yuml; 
+PASS XHTML1.1+MathML parsing &Yuml; 
+PASS XHTML1.1+MathML parsing &Zacute; 
+PASS XHTML1.1+MathML parsing &zacute; 
+PASS XHTML1.1+MathML parsing &Zcaron; 
+PASS XHTML1.1+MathML parsing &zcaron; 
+PASS XHTML1.1+MathML parsing &Zcy; 
+PASS XHTML1.1+MathML parsing &zcy; 
+PASS XHTML1.1+MathML parsing &Zdot; 
+PASS XHTML1.1+MathML parsing &zdot; 
+PASS XHTML1.1+MathML parsing &zeetrf; 
+PASS XHTML1.1+MathML parsing &ZeroWidthSpace; 
+PASS XHTML1.1+MathML parsing &Zeta; 
+PASS XHTML1.1+MathML parsing &zeta; 
+PASS XHTML1.1+MathML parsing &zfr; 
+PASS XHTML1.1+MathML parsing &Zfr; 
+PASS XHTML1.1+MathML parsing &ZHcy; 
+PASS XHTML1.1+MathML parsing &zhcy; 
+PASS XHTML1.1+MathML parsing &zigrarr; 
+PASS XHTML1.1+MathML parsing &zopf; 
+PASS XHTML1.1+MathML parsing &Zopf; 
+PASS XHTML1.1+MathML parsing &Zscr; 
+PASS XHTML1.1+MathML parsing &zscr; 
+PASS XHTML1.1+MathML parsing &zwj; 
+PASS XHTML1.1+MathML parsing &zwnj; 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-6.htm b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-6.htm
new file mode 100644
index 0000000..b1589bba
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-6.htm
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta name=timeout content=long>
+<title>HTML entities for various XHTML Doctype</title>
+<link rel=help href="http://w3c.github.io/html/xhtml.html#parsing-xhtml-documents">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe id="test" src="xhtml-mathml-dtd-entity-support.htm"></iframe>
+
+<script>
+onload = () => document.getElementById("test").contentWindow.run(
+["application/xhtml+xml", "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN", "foo", "XHTML1.1+MathML"]);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-7-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-7-expected.txt
new file mode 100644
index 0000000..0799addc
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-7-expected.txt
@@ -0,0 +1,2129 @@
+This is a testharness.js-based test.
+Found 2125 tests; 2122 PASS, 3 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS XHTML1.1+MathML+SVG parsing &Aacute; 
+PASS XHTML1.1+MathML+SVG parsing &aacute; 
+PASS XHTML1.1+MathML+SVG parsing &Abreve; 
+PASS XHTML1.1+MathML+SVG parsing &abreve; 
+PASS XHTML1.1+MathML+SVG parsing &ac; 
+PASS XHTML1.1+MathML+SVG parsing &acd; 
+PASS XHTML1.1+MathML+SVG parsing &acE; 
+PASS XHTML1.1+MathML+SVG parsing &Acirc; 
+PASS XHTML1.1+MathML+SVG parsing &acirc; 
+PASS XHTML1.1+MathML+SVG parsing &acute; 
+PASS XHTML1.1+MathML+SVG parsing &Acy; 
+PASS XHTML1.1+MathML+SVG parsing &acy; 
+PASS XHTML1.1+MathML+SVG parsing &AElig; 
+PASS XHTML1.1+MathML+SVG parsing &aelig; 
+PASS XHTML1.1+MathML+SVG parsing &af; 
+PASS XHTML1.1+MathML+SVG parsing &Afr; 
+PASS XHTML1.1+MathML+SVG parsing &afr; 
+PASS XHTML1.1+MathML+SVG parsing &Agrave; 
+PASS XHTML1.1+MathML+SVG parsing &agrave; 
+PASS XHTML1.1+MathML+SVG parsing &alefsym; 
+PASS XHTML1.1+MathML+SVG parsing &aleph; 
+PASS XHTML1.1+MathML+SVG parsing &Alpha; 
+PASS XHTML1.1+MathML+SVG parsing &alpha; 
+PASS XHTML1.1+MathML+SVG parsing &Amacr; 
+PASS XHTML1.1+MathML+SVG parsing &amacr; 
+PASS XHTML1.1+MathML+SVG parsing &amalg; 
+PASS XHTML1.1+MathML+SVG parsing &amp; 
+FAIL XHTML1.1+MathML+SVG parsing &AMP; assert_true: expected true got false
+PASS XHTML1.1+MathML+SVG parsing &andand; 
+PASS XHTML1.1+MathML+SVG parsing &And; 
+PASS XHTML1.1+MathML+SVG parsing &and; 
+PASS XHTML1.1+MathML+SVG parsing &andd; 
+PASS XHTML1.1+MathML+SVG parsing &andslope; 
+PASS XHTML1.1+MathML+SVG parsing &andv; 
+PASS XHTML1.1+MathML+SVG parsing &ang; 
+PASS XHTML1.1+MathML+SVG parsing &ange; 
+PASS XHTML1.1+MathML+SVG parsing &angle; 
+PASS XHTML1.1+MathML+SVG parsing &angmsdaa; 
+PASS XHTML1.1+MathML+SVG parsing &angmsdab; 
+PASS XHTML1.1+MathML+SVG parsing &angmsdac; 
+PASS XHTML1.1+MathML+SVG parsing &angmsdad; 
+PASS XHTML1.1+MathML+SVG parsing &angmsdae; 
+PASS XHTML1.1+MathML+SVG parsing &angmsdaf; 
+PASS XHTML1.1+MathML+SVG parsing &angmsdag; 
+PASS XHTML1.1+MathML+SVG parsing &angmsdah; 
+PASS XHTML1.1+MathML+SVG parsing &angmsd; 
+PASS XHTML1.1+MathML+SVG parsing &angrt; 
+PASS XHTML1.1+MathML+SVG parsing &angrtvb; 
+PASS XHTML1.1+MathML+SVG parsing &angrtvbd; 
+PASS XHTML1.1+MathML+SVG parsing &angsph; 
+PASS XHTML1.1+MathML+SVG parsing &angst; 
+PASS XHTML1.1+MathML+SVG parsing &angzarr; 
+PASS XHTML1.1+MathML+SVG parsing &Aogon; 
+PASS XHTML1.1+MathML+SVG parsing &aogon; 
+PASS XHTML1.1+MathML+SVG parsing &Aopf; 
+PASS XHTML1.1+MathML+SVG parsing &aopf; 
+PASS XHTML1.1+MathML+SVG parsing &apacir; 
+PASS XHTML1.1+MathML+SVG parsing &ap; 
+PASS XHTML1.1+MathML+SVG parsing &apE; 
+PASS XHTML1.1+MathML+SVG parsing &ape; 
+PASS XHTML1.1+MathML+SVG parsing &apid; 
+PASS XHTML1.1+MathML+SVG parsing &apos; 
+PASS XHTML1.1+MathML+SVG parsing &ApplyFunction; 
+PASS XHTML1.1+MathML+SVG parsing &approx; 
+PASS XHTML1.1+MathML+SVG parsing &approxeq; 
+PASS XHTML1.1+MathML+SVG parsing &Aring; 
+PASS XHTML1.1+MathML+SVG parsing &aring; 
+PASS XHTML1.1+MathML+SVG parsing &Ascr; 
+PASS XHTML1.1+MathML+SVG parsing &ascr; 
+PASS XHTML1.1+MathML+SVG parsing &Assign; 
+PASS XHTML1.1+MathML+SVG parsing &ast; 
+PASS XHTML1.1+MathML+SVG parsing &asymp; 
+PASS XHTML1.1+MathML+SVG parsing &asympeq; 
+PASS XHTML1.1+MathML+SVG parsing &Atilde; 
+PASS XHTML1.1+MathML+SVG parsing &atilde; 
+PASS XHTML1.1+MathML+SVG parsing &Auml; 
+PASS XHTML1.1+MathML+SVG parsing &auml; 
+PASS XHTML1.1+MathML+SVG parsing &awconint; 
+PASS XHTML1.1+MathML+SVG parsing &awint; 
+PASS XHTML1.1+MathML+SVG parsing &backcong; 
+PASS XHTML1.1+MathML+SVG parsing &backepsilon; 
+PASS XHTML1.1+MathML+SVG parsing &backprime; 
+PASS XHTML1.1+MathML+SVG parsing &backsim; 
+PASS XHTML1.1+MathML+SVG parsing &backsimeq; 
+PASS XHTML1.1+MathML+SVG parsing &Backslash; 
+PASS XHTML1.1+MathML+SVG parsing &Barv; 
+PASS XHTML1.1+MathML+SVG parsing &barvee; 
+PASS XHTML1.1+MathML+SVG parsing &barwed; 
+PASS XHTML1.1+MathML+SVG parsing &Barwed; 
+PASS XHTML1.1+MathML+SVG parsing &barwedge; 
+PASS XHTML1.1+MathML+SVG parsing &bbrk; 
+PASS XHTML1.1+MathML+SVG parsing &bbrktbrk; 
+PASS XHTML1.1+MathML+SVG parsing &bcong; 
+PASS XHTML1.1+MathML+SVG parsing &Bcy; 
+PASS XHTML1.1+MathML+SVG parsing &bcy; 
+PASS XHTML1.1+MathML+SVG parsing &bdquo; 
+PASS XHTML1.1+MathML+SVG parsing &becaus; 
+PASS XHTML1.1+MathML+SVG parsing &because; 
+PASS XHTML1.1+MathML+SVG parsing &Because; 
+PASS XHTML1.1+MathML+SVG parsing &bemptyv; 
+PASS XHTML1.1+MathML+SVG parsing &bepsi; 
+PASS XHTML1.1+MathML+SVG parsing &bernou; 
+PASS XHTML1.1+MathML+SVG parsing &Bernoullis; 
+PASS XHTML1.1+MathML+SVG parsing &Beta; 
+PASS XHTML1.1+MathML+SVG parsing &beta; 
+PASS XHTML1.1+MathML+SVG parsing &beth; 
+PASS XHTML1.1+MathML+SVG parsing &between; 
+PASS XHTML1.1+MathML+SVG parsing &Bfr; 
+PASS XHTML1.1+MathML+SVG parsing &bfr; 
+PASS XHTML1.1+MathML+SVG parsing &bigcap; 
+PASS XHTML1.1+MathML+SVG parsing &bigcirc; 
+PASS XHTML1.1+MathML+SVG parsing &bigcup; 
+PASS XHTML1.1+MathML+SVG parsing &bigodot; 
+PASS XHTML1.1+MathML+SVG parsing &bigoplus; 
+PASS XHTML1.1+MathML+SVG parsing &bigotimes; 
+PASS XHTML1.1+MathML+SVG parsing &bigsqcup; 
+PASS XHTML1.1+MathML+SVG parsing &bigstar; 
+PASS XHTML1.1+MathML+SVG parsing &bigtriangledown; 
+PASS XHTML1.1+MathML+SVG parsing &bigtriangleup; 
+PASS XHTML1.1+MathML+SVG parsing &biguplus; 
+PASS XHTML1.1+MathML+SVG parsing &bigvee; 
+PASS XHTML1.1+MathML+SVG parsing &bigwedge; 
+PASS XHTML1.1+MathML+SVG parsing &bkarow; 
+PASS XHTML1.1+MathML+SVG parsing &blacklozenge; 
+PASS XHTML1.1+MathML+SVG parsing &blacksquare; 
+PASS XHTML1.1+MathML+SVG parsing &blacktriangle; 
+PASS XHTML1.1+MathML+SVG parsing &blacktriangledown; 
+PASS XHTML1.1+MathML+SVG parsing &blacktriangleleft; 
+PASS XHTML1.1+MathML+SVG parsing &blacktriangleright; 
+PASS XHTML1.1+MathML+SVG parsing &blank; 
+PASS XHTML1.1+MathML+SVG parsing &blk12; 
+PASS XHTML1.1+MathML+SVG parsing &blk14; 
+PASS XHTML1.1+MathML+SVG parsing &blk34; 
+PASS XHTML1.1+MathML+SVG parsing &block; 
+PASS XHTML1.1+MathML+SVG parsing &bne; 
+PASS XHTML1.1+MathML+SVG parsing &bnequiv; 
+PASS XHTML1.1+MathML+SVG parsing &bNot; 
+PASS XHTML1.1+MathML+SVG parsing &bnot; 
+PASS XHTML1.1+MathML+SVG parsing &Bopf; 
+PASS XHTML1.1+MathML+SVG parsing &bopf; 
+PASS XHTML1.1+MathML+SVG parsing &bot; 
+PASS XHTML1.1+MathML+SVG parsing &bottom; 
+PASS XHTML1.1+MathML+SVG parsing &bowtie; 
+PASS XHTML1.1+MathML+SVG parsing &boxbox; 
+PASS XHTML1.1+MathML+SVG parsing &boxdl; 
+PASS XHTML1.1+MathML+SVG parsing &boxdL; 
+PASS XHTML1.1+MathML+SVG parsing &boxDl; 
+PASS XHTML1.1+MathML+SVG parsing &boxDL; 
+PASS XHTML1.1+MathML+SVG parsing &boxdr; 
+PASS XHTML1.1+MathML+SVG parsing &boxdR; 
+PASS XHTML1.1+MathML+SVG parsing &boxDr; 
+PASS XHTML1.1+MathML+SVG parsing &boxDR; 
+PASS XHTML1.1+MathML+SVG parsing &boxh; 
+PASS XHTML1.1+MathML+SVG parsing &boxH; 
+PASS XHTML1.1+MathML+SVG parsing &boxhd; 
+PASS XHTML1.1+MathML+SVG parsing &boxHd; 
+PASS XHTML1.1+MathML+SVG parsing &boxhD; 
+PASS XHTML1.1+MathML+SVG parsing &boxHD; 
+PASS XHTML1.1+MathML+SVG parsing &boxhu; 
+PASS XHTML1.1+MathML+SVG parsing &boxHu; 
+PASS XHTML1.1+MathML+SVG parsing &boxhU; 
+PASS XHTML1.1+MathML+SVG parsing &boxHU; 
+PASS XHTML1.1+MathML+SVG parsing &boxminus; 
+PASS XHTML1.1+MathML+SVG parsing &boxplus; 
+PASS XHTML1.1+MathML+SVG parsing &boxtimes; 
+PASS XHTML1.1+MathML+SVG parsing &boxul; 
+PASS XHTML1.1+MathML+SVG parsing &boxuL; 
+PASS XHTML1.1+MathML+SVG parsing &boxUl; 
+PASS XHTML1.1+MathML+SVG parsing &boxUL; 
+PASS XHTML1.1+MathML+SVG parsing &boxur; 
+PASS XHTML1.1+MathML+SVG parsing &boxuR; 
+PASS XHTML1.1+MathML+SVG parsing &boxUr; 
+PASS XHTML1.1+MathML+SVG parsing &boxUR; 
+PASS XHTML1.1+MathML+SVG parsing &boxv; 
+PASS XHTML1.1+MathML+SVG parsing &boxV; 
+PASS XHTML1.1+MathML+SVG parsing &boxvh; 
+PASS XHTML1.1+MathML+SVG parsing &boxvH; 
+PASS XHTML1.1+MathML+SVG parsing &boxVh; 
+PASS XHTML1.1+MathML+SVG parsing &boxVH; 
+PASS XHTML1.1+MathML+SVG parsing &boxvl; 
+PASS XHTML1.1+MathML+SVG parsing &boxvL; 
+PASS XHTML1.1+MathML+SVG parsing &boxVl; 
+PASS XHTML1.1+MathML+SVG parsing &boxVL; 
+PASS XHTML1.1+MathML+SVG parsing &boxvr; 
+PASS XHTML1.1+MathML+SVG parsing &boxvR; 
+PASS XHTML1.1+MathML+SVG parsing &boxVr; 
+PASS XHTML1.1+MathML+SVG parsing &boxVR; 
+PASS XHTML1.1+MathML+SVG parsing &bprime; 
+PASS XHTML1.1+MathML+SVG parsing &breve; 
+PASS XHTML1.1+MathML+SVG parsing &Breve; 
+PASS XHTML1.1+MathML+SVG parsing &brvbar; 
+PASS XHTML1.1+MathML+SVG parsing &bscr; 
+PASS XHTML1.1+MathML+SVG parsing &Bscr; 
+PASS XHTML1.1+MathML+SVG parsing &bsemi; 
+PASS XHTML1.1+MathML+SVG parsing &bsim; 
+PASS XHTML1.1+MathML+SVG parsing &bsime; 
+PASS XHTML1.1+MathML+SVG parsing &bsolb; 
+PASS XHTML1.1+MathML+SVG parsing &bsol; 
+PASS XHTML1.1+MathML+SVG parsing &bsolhsub; 
+PASS XHTML1.1+MathML+SVG parsing &bull; 
+PASS XHTML1.1+MathML+SVG parsing &bullet; 
+PASS XHTML1.1+MathML+SVG parsing &bump; 
+PASS XHTML1.1+MathML+SVG parsing &bumpE; 
+PASS XHTML1.1+MathML+SVG parsing &bumpe; 
+PASS XHTML1.1+MathML+SVG parsing &Bumpeq; 
+PASS XHTML1.1+MathML+SVG parsing &bumpeq; 
+PASS XHTML1.1+MathML+SVG parsing &Cacute; 
+PASS XHTML1.1+MathML+SVG parsing &cacute; 
+PASS XHTML1.1+MathML+SVG parsing &capand; 
+PASS XHTML1.1+MathML+SVG parsing &capbrcup; 
+PASS XHTML1.1+MathML+SVG parsing &capcap; 
+PASS XHTML1.1+MathML+SVG parsing &cap; 
+PASS XHTML1.1+MathML+SVG parsing &Cap; 
+PASS XHTML1.1+MathML+SVG parsing &capcup; 
+PASS XHTML1.1+MathML+SVG parsing &capdot; 
+PASS XHTML1.1+MathML+SVG parsing &CapitalDifferentialD; 
+PASS XHTML1.1+MathML+SVG parsing &caps; 
+PASS XHTML1.1+MathML+SVG parsing &caret; 
+PASS XHTML1.1+MathML+SVG parsing &caron; 
+PASS XHTML1.1+MathML+SVG parsing &Cayleys; 
+PASS XHTML1.1+MathML+SVG parsing &ccaps; 
+PASS XHTML1.1+MathML+SVG parsing &Ccaron; 
+PASS XHTML1.1+MathML+SVG parsing &ccaron; 
+PASS XHTML1.1+MathML+SVG parsing &Ccedil; 
+PASS XHTML1.1+MathML+SVG parsing &ccedil; 
+PASS XHTML1.1+MathML+SVG parsing &Ccirc; 
+PASS XHTML1.1+MathML+SVG parsing &ccirc; 
+PASS XHTML1.1+MathML+SVG parsing &Cconint; 
+PASS XHTML1.1+MathML+SVG parsing &ccups; 
+PASS XHTML1.1+MathML+SVG parsing &ccupssm; 
+PASS XHTML1.1+MathML+SVG parsing &Cdot; 
+PASS XHTML1.1+MathML+SVG parsing &cdot; 
+PASS XHTML1.1+MathML+SVG parsing &cedil; 
+PASS XHTML1.1+MathML+SVG parsing &Cedilla; 
+PASS XHTML1.1+MathML+SVG parsing &cemptyv; 
+PASS XHTML1.1+MathML+SVG parsing &cent; 
+PASS XHTML1.1+MathML+SVG parsing &centerdot; 
+PASS XHTML1.1+MathML+SVG parsing &CenterDot; 
+PASS XHTML1.1+MathML+SVG parsing &cfr; 
+PASS XHTML1.1+MathML+SVG parsing &Cfr; 
+PASS XHTML1.1+MathML+SVG parsing &CHcy; 
+PASS XHTML1.1+MathML+SVG parsing &chcy; 
+PASS XHTML1.1+MathML+SVG parsing &check; 
+PASS XHTML1.1+MathML+SVG parsing &checkmark; 
+PASS XHTML1.1+MathML+SVG parsing &Chi; 
+PASS XHTML1.1+MathML+SVG parsing &chi; 
+PASS XHTML1.1+MathML+SVG parsing &circ; 
+PASS XHTML1.1+MathML+SVG parsing &circeq; 
+PASS XHTML1.1+MathML+SVG parsing &circlearrowleft; 
+PASS XHTML1.1+MathML+SVG parsing &circlearrowright; 
+PASS XHTML1.1+MathML+SVG parsing &circledast; 
+PASS XHTML1.1+MathML+SVG parsing &circledcirc; 
+PASS XHTML1.1+MathML+SVG parsing &circleddash; 
+PASS XHTML1.1+MathML+SVG parsing &CircleDot; 
+PASS XHTML1.1+MathML+SVG parsing &circledR; 
+PASS XHTML1.1+MathML+SVG parsing &circledS; 
+PASS XHTML1.1+MathML+SVG parsing &CircleMinus; 
+PASS XHTML1.1+MathML+SVG parsing &CirclePlus; 
+PASS XHTML1.1+MathML+SVG parsing &CircleTimes; 
+PASS XHTML1.1+MathML+SVG parsing &cir; 
+PASS XHTML1.1+MathML+SVG parsing &cirE; 
+PASS XHTML1.1+MathML+SVG parsing &cire; 
+PASS XHTML1.1+MathML+SVG parsing &cirfnint; 
+PASS XHTML1.1+MathML+SVG parsing &cirmid; 
+PASS XHTML1.1+MathML+SVG parsing &cirscir; 
+PASS XHTML1.1+MathML+SVG parsing &ClockwiseContourIntegral; 
+PASS XHTML1.1+MathML+SVG parsing &CloseCurlyDoubleQuote; 
+PASS XHTML1.1+MathML+SVG parsing &CloseCurlyQuote; 
+PASS XHTML1.1+MathML+SVG parsing &clubs; 
+PASS XHTML1.1+MathML+SVG parsing &clubsuit; 
+PASS XHTML1.1+MathML+SVG parsing &colon; 
+PASS XHTML1.1+MathML+SVG parsing &Colon; 
+PASS XHTML1.1+MathML+SVG parsing &Colone; 
+PASS XHTML1.1+MathML+SVG parsing &colone; 
+PASS XHTML1.1+MathML+SVG parsing &coloneq; 
+PASS XHTML1.1+MathML+SVG parsing &comma; 
+PASS XHTML1.1+MathML+SVG parsing &commat; 
+PASS XHTML1.1+MathML+SVG parsing &comp; 
+PASS XHTML1.1+MathML+SVG parsing &compfn; 
+PASS XHTML1.1+MathML+SVG parsing &complement; 
+PASS XHTML1.1+MathML+SVG parsing &complexes; 
+PASS XHTML1.1+MathML+SVG parsing &cong; 
+PASS XHTML1.1+MathML+SVG parsing &congdot; 
+PASS XHTML1.1+MathML+SVG parsing &Congruent; 
+PASS XHTML1.1+MathML+SVG parsing &conint; 
+PASS XHTML1.1+MathML+SVG parsing &Conint; 
+PASS XHTML1.1+MathML+SVG parsing &ContourIntegral; 
+PASS XHTML1.1+MathML+SVG parsing &copf; 
+PASS XHTML1.1+MathML+SVG parsing &Copf; 
+PASS XHTML1.1+MathML+SVG parsing &coprod; 
+PASS XHTML1.1+MathML+SVG parsing &Coproduct; 
+PASS XHTML1.1+MathML+SVG parsing &copy; 
+PASS XHTML1.1+MathML+SVG parsing &COPY; 
+PASS XHTML1.1+MathML+SVG parsing &copysr; 
+PASS XHTML1.1+MathML+SVG parsing &CounterClockwiseContourIntegral; 
+PASS XHTML1.1+MathML+SVG parsing &crarr; 
+PASS XHTML1.1+MathML+SVG parsing &cross; 
+PASS XHTML1.1+MathML+SVG parsing &Cross; 
+PASS XHTML1.1+MathML+SVG parsing &Cscr; 
+PASS XHTML1.1+MathML+SVG parsing &cscr; 
+PASS XHTML1.1+MathML+SVG parsing &csub; 
+PASS XHTML1.1+MathML+SVG parsing &csube; 
+PASS XHTML1.1+MathML+SVG parsing &csup; 
+PASS XHTML1.1+MathML+SVG parsing &csupe; 
+PASS XHTML1.1+MathML+SVG parsing &ctdot; 
+PASS XHTML1.1+MathML+SVG parsing &cudarrl; 
+PASS XHTML1.1+MathML+SVG parsing &cudarrr; 
+PASS XHTML1.1+MathML+SVG parsing &cuepr; 
+PASS XHTML1.1+MathML+SVG parsing &cuesc; 
+PASS XHTML1.1+MathML+SVG parsing &cularr; 
+PASS XHTML1.1+MathML+SVG parsing &cularrp; 
+PASS XHTML1.1+MathML+SVG parsing &cupbrcap; 
+PASS XHTML1.1+MathML+SVG parsing &cupcap; 
+PASS XHTML1.1+MathML+SVG parsing &CupCap; 
+PASS XHTML1.1+MathML+SVG parsing &cup; 
+PASS XHTML1.1+MathML+SVG parsing &Cup; 
+PASS XHTML1.1+MathML+SVG parsing &cupcup; 
+PASS XHTML1.1+MathML+SVG parsing &cupdot; 
+PASS XHTML1.1+MathML+SVG parsing &cupor; 
+PASS XHTML1.1+MathML+SVG parsing &cups; 
+PASS XHTML1.1+MathML+SVG parsing &curarr; 
+PASS XHTML1.1+MathML+SVG parsing &curarrm; 
+PASS XHTML1.1+MathML+SVG parsing &curlyeqprec; 
+PASS XHTML1.1+MathML+SVG parsing &curlyeqsucc; 
+PASS XHTML1.1+MathML+SVG parsing &curlyvee; 
+PASS XHTML1.1+MathML+SVG parsing &curlywedge; 
+PASS XHTML1.1+MathML+SVG parsing &curren; 
+PASS XHTML1.1+MathML+SVG parsing &curvearrowleft; 
+PASS XHTML1.1+MathML+SVG parsing &curvearrowright; 
+PASS XHTML1.1+MathML+SVG parsing &cuvee; 
+PASS XHTML1.1+MathML+SVG parsing &cuwed; 
+PASS XHTML1.1+MathML+SVG parsing &cwconint; 
+PASS XHTML1.1+MathML+SVG parsing &cwint; 
+PASS XHTML1.1+MathML+SVG parsing &cylcty; 
+PASS XHTML1.1+MathML+SVG parsing &dagger; 
+PASS XHTML1.1+MathML+SVG parsing &Dagger; 
+PASS XHTML1.1+MathML+SVG parsing &daleth; 
+PASS XHTML1.1+MathML+SVG parsing &darr; 
+PASS XHTML1.1+MathML+SVG parsing &Darr; 
+PASS XHTML1.1+MathML+SVG parsing &dArr; 
+PASS XHTML1.1+MathML+SVG parsing &dash; 
+PASS XHTML1.1+MathML+SVG parsing &Dashv; 
+PASS XHTML1.1+MathML+SVG parsing &dashv; 
+PASS XHTML1.1+MathML+SVG parsing &dbkarow; 
+PASS XHTML1.1+MathML+SVG parsing &dblac; 
+PASS XHTML1.1+MathML+SVG parsing &Dcaron; 
+PASS XHTML1.1+MathML+SVG parsing &dcaron; 
+PASS XHTML1.1+MathML+SVG parsing &Dcy; 
+PASS XHTML1.1+MathML+SVG parsing &dcy; 
+PASS XHTML1.1+MathML+SVG parsing &ddagger; 
+PASS XHTML1.1+MathML+SVG parsing &ddarr; 
+PASS XHTML1.1+MathML+SVG parsing &DD; 
+PASS XHTML1.1+MathML+SVG parsing &dd; 
+PASS XHTML1.1+MathML+SVG parsing &DDotrahd; 
+PASS XHTML1.1+MathML+SVG parsing &ddotseq; 
+PASS XHTML1.1+MathML+SVG parsing &deg; 
+PASS XHTML1.1+MathML+SVG parsing &Del; 
+PASS XHTML1.1+MathML+SVG parsing &Delta; 
+PASS XHTML1.1+MathML+SVG parsing &delta; 
+PASS XHTML1.1+MathML+SVG parsing &demptyv; 
+PASS XHTML1.1+MathML+SVG parsing &dfisht; 
+PASS XHTML1.1+MathML+SVG parsing &Dfr; 
+PASS XHTML1.1+MathML+SVG parsing &dfr; 
+PASS XHTML1.1+MathML+SVG parsing &dHar; 
+PASS XHTML1.1+MathML+SVG parsing &dharl; 
+PASS XHTML1.1+MathML+SVG parsing &dharr; 
+PASS XHTML1.1+MathML+SVG parsing &DiacriticalAcute; 
+PASS XHTML1.1+MathML+SVG parsing &DiacriticalDot; 
+PASS XHTML1.1+MathML+SVG parsing &DiacriticalDoubleAcute; 
+PASS XHTML1.1+MathML+SVG parsing &DiacriticalGrave; 
+PASS XHTML1.1+MathML+SVG parsing &DiacriticalTilde; 
+PASS XHTML1.1+MathML+SVG parsing &diam; 
+PASS XHTML1.1+MathML+SVG parsing &diamond; 
+PASS XHTML1.1+MathML+SVG parsing &Diamond; 
+PASS XHTML1.1+MathML+SVG parsing &diamondsuit; 
+PASS XHTML1.1+MathML+SVG parsing &diams; 
+PASS XHTML1.1+MathML+SVG parsing &die; 
+PASS XHTML1.1+MathML+SVG parsing &DifferentialD; 
+PASS XHTML1.1+MathML+SVG parsing &digamma; 
+PASS XHTML1.1+MathML+SVG parsing &disin; 
+PASS XHTML1.1+MathML+SVG parsing &div; 
+PASS XHTML1.1+MathML+SVG parsing &divide; 
+PASS XHTML1.1+MathML+SVG parsing &divideontimes; 
+PASS XHTML1.1+MathML+SVG parsing &divonx; 
+PASS XHTML1.1+MathML+SVG parsing &DJcy; 
+PASS XHTML1.1+MathML+SVG parsing &djcy; 
+PASS XHTML1.1+MathML+SVG parsing &dlcorn; 
+PASS XHTML1.1+MathML+SVG parsing &dlcrop; 
+PASS XHTML1.1+MathML+SVG parsing &dollar; 
+PASS XHTML1.1+MathML+SVG parsing &Dopf; 
+PASS XHTML1.1+MathML+SVG parsing &dopf; 
+PASS XHTML1.1+MathML+SVG parsing &Dot; 
+PASS XHTML1.1+MathML+SVG parsing &dot; 
+PASS XHTML1.1+MathML+SVG parsing &DotDot; 
+PASS XHTML1.1+MathML+SVG parsing &doteq; 
+PASS XHTML1.1+MathML+SVG parsing &doteqdot; 
+PASS XHTML1.1+MathML+SVG parsing &DotEqual; 
+PASS XHTML1.1+MathML+SVG parsing &dotminus; 
+PASS XHTML1.1+MathML+SVG parsing &dotplus; 
+PASS XHTML1.1+MathML+SVG parsing &dotsquare; 
+PASS XHTML1.1+MathML+SVG parsing &doublebarwedge; 
+PASS XHTML1.1+MathML+SVG parsing &DoubleContourIntegral; 
+PASS XHTML1.1+MathML+SVG parsing &DoubleDot; 
+PASS XHTML1.1+MathML+SVG parsing &DoubleDownArrow; 
+PASS XHTML1.1+MathML+SVG parsing &DoubleLeftArrow; 
+PASS XHTML1.1+MathML+SVG parsing &DoubleLeftRightArrow; 
+PASS XHTML1.1+MathML+SVG parsing &DoubleLeftTee; 
+PASS XHTML1.1+MathML+SVG parsing &DoubleLongLeftArrow; 
+PASS XHTML1.1+MathML+SVG parsing &DoubleLongLeftRightArrow; 
+PASS XHTML1.1+MathML+SVG parsing &DoubleLongRightArrow; 
+PASS XHTML1.1+MathML+SVG parsing &DoubleRightArrow; 
+PASS XHTML1.1+MathML+SVG parsing &DoubleRightTee; 
+PASS XHTML1.1+MathML+SVG parsing &DoubleUpArrow; 
+PASS XHTML1.1+MathML+SVG parsing &DoubleUpDownArrow; 
+PASS XHTML1.1+MathML+SVG parsing &DoubleVerticalBar; 
+PASS XHTML1.1+MathML+SVG parsing &DownArrowBar; 
+PASS XHTML1.1+MathML+SVG parsing &downarrow; 
+PASS XHTML1.1+MathML+SVG parsing &DownArrow; 
+PASS XHTML1.1+MathML+SVG parsing &Downarrow; 
+PASS XHTML1.1+MathML+SVG parsing &DownArrowUpArrow; 
+PASS XHTML1.1+MathML+SVG parsing &DownBreve; 
+PASS XHTML1.1+MathML+SVG parsing &downdownarrows; 
+PASS XHTML1.1+MathML+SVG parsing &downharpoonleft; 
+PASS XHTML1.1+MathML+SVG parsing &downharpoonright; 
+PASS XHTML1.1+MathML+SVG parsing &DownLeftRightVector; 
+PASS XHTML1.1+MathML+SVG parsing &DownLeftTeeVector; 
+PASS XHTML1.1+MathML+SVG parsing &DownLeftVectorBar; 
+PASS XHTML1.1+MathML+SVG parsing &DownLeftVector; 
+PASS XHTML1.1+MathML+SVG parsing &DownRightTeeVector; 
+PASS XHTML1.1+MathML+SVG parsing &DownRightVectorBar; 
+PASS XHTML1.1+MathML+SVG parsing &DownRightVector; 
+PASS XHTML1.1+MathML+SVG parsing &DownTeeArrow; 
+PASS XHTML1.1+MathML+SVG parsing &DownTee; 
+PASS XHTML1.1+MathML+SVG parsing &drbkarow; 
+PASS XHTML1.1+MathML+SVG parsing &drcorn; 
+PASS XHTML1.1+MathML+SVG parsing &drcrop; 
+PASS XHTML1.1+MathML+SVG parsing &Dscr; 
+PASS XHTML1.1+MathML+SVG parsing &dscr; 
+PASS XHTML1.1+MathML+SVG parsing &DScy; 
+PASS XHTML1.1+MathML+SVG parsing &dscy; 
+PASS XHTML1.1+MathML+SVG parsing &dsol; 
+PASS XHTML1.1+MathML+SVG parsing &Dstrok; 
+PASS XHTML1.1+MathML+SVG parsing &dstrok; 
+PASS XHTML1.1+MathML+SVG parsing &dtdot; 
+PASS XHTML1.1+MathML+SVG parsing &dtri; 
+PASS XHTML1.1+MathML+SVG parsing &dtrif; 
+PASS XHTML1.1+MathML+SVG parsing &duarr; 
+PASS XHTML1.1+MathML+SVG parsing &duhar; 
+PASS XHTML1.1+MathML+SVG parsing &dwangle; 
+PASS XHTML1.1+MathML+SVG parsing &DZcy; 
+PASS XHTML1.1+MathML+SVG parsing &dzcy; 
+PASS XHTML1.1+MathML+SVG parsing &dzigrarr; 
+PASS XHTML1.1+MathML+SVG parsing &Eacute; 
+PASS XHTML1.1+MathML+SVG parsing &eacute; 
+PASS XHTML1.1+MathML+SVG parsing &easter; 
+PASS XHTML1.1+MathML+SVG parsing &Ecaron; 
+PASS XHTML1.1+MathML+SVG parsing &ecaron; 
+PASS XHTML1.1+MathML+SVG parsing &Ecirc; 
+PASS XHTML1.1+MathML+SVG parsing &ecirc; 
+PASS XHTML1.1+MathML+SVG parsing &ecir; 
+PASS XHTML1.1+MathML+SVG parsing &ecolon; 
+PASS XHTML1.1+MathML+SVG parsing &Ecy; 
+PASS XHTML1.1+MathML+SVG parsing &ecy; 
+PASS XHTML1.1+MathML+SVG parsing &eDDot; 
+PASS XHTML1.1+MathML+SVG parsing &Edot; 
+PASS XHTML1.1+MathML+SVG parsing &edot; 
+PASS XHTML1.1+MathML+SVG parsing &eDot; 
+PASS XHTML1.1+MathML+SVG parsing &ee; 
+PASS XHTML1.1+MathML+SVG parsing &efDot; 
+PASS XHTML1.1+MathML+SVG parsing &Efr; 
+PASS XHTML1.1+MathML+SVG parsing &efr; 
+PASS XHTML1.1+MathML+SVG parsing &eg; 
+PASS XHTML1.1+MathML+SVG parsing &Egrave; 
+PASS XHTML1.1+MathML+SVG parsing &egrave; 
+PASS XHTML1.1+MathML+SVG parsing &egs; 
+PASS XHTML1.1+MathML+SVG parsing &egsdot; 
+PASS XHTML1.1+MathML+SVG parsing &el; 
+PASS XHTML1.1+MathML+SVG parsing &Element; 
+PASS XHTML1.1+MathML+SVG parsing &elinters; 
+PASS XHTML1.1+MathML+SVG parsing &ell; 
+PASS XHTML1.1+MathML+SVG parsing &els; 
+PASS XHTML1.1+MathML+SVG parsing &elsdot; 
+PASS XHTML1.1+MathML+SVG parsing &Emacr; 
+PASS XHTML1.1+MathML+SVG parsing &emacr; 
+PASS XHTML1.1+MathML+SVG parsing &empty; 
+PASS XHTML1.1+MathML+SVG parsing &emptyset; 
+PASS XHTML1.1+MathML+SVG parsing &EmptySmallSquare; 
+PASS XHTML1.1+MathML+SVG parsing &emptyv; 
+PASS XHTML1.1+MathML+SVG parsing &EmptyVerySmallSquare; 
+PASS XHTML1.1+MathML+SVG parsing &emsp13; 
+PASS XHTML1.1+MathML+SVG parsing &emsp14; 
+PASS XHTML1.1+MathML+SVG parsing &emsp; 
+PASS XHTML1.1+MathML+SVG parsing &ENG; 
+PASS XHTML1.1+MathML+SVG parsing &eng; 
+PASS XHTML1.1+MathML+SVG parsing &ensp; 
+PASS XHTML1.1+MathML+SVG parsing &Eogon; 
+PASS XHTML1.1+MathML+SVG parsing &eogon; 
+PASS XHTML1.1+MathML+SVG parsing &Eopf; 
+PASS XHTML1.1+MathML+SVG parsing &eopf; 
+PASS XHTML1.1+MathML+SVG parsing &epar; 
+PASS XHTML1.1+MathML+SVG parsing &eparsl; 
+PASS XHTML1.1+MathML+SVG parsing &eplus; 
+PASS XHTML1.1+MathML+SVG parsing &epsi; 
+PASS XHTML1.1+MathML+SVG parsing &Epsilon; 
+PASS XHTML1.1+MathML+SVG parsing &epsilon; 
+PASS XHTML1.1+MathML+SVG parsing &epsiv; 
+PASS XHTML1.1+MathML+SVG parsing &eqcirc; 
+PASS XHTML1.1+MathML+SVG parsing &eqcolon; 
+PASS XHTML1.1+MathML+SVG parsing &eqsim; 
+PASS XHTML1.1+MathML+SVG parsing &eqslantgtr; 
+PASS XHTML1.1+MathML+SVG parsing &eqslantless; 
+PASS XHTML1.1+MathML+SVG parsing &Equal; 
+PASS XHTML1.1+MathML+SVG parsing &equals; 
+PASS XHTML1.1+MathML+SVG parsing &EqualTilde; 
+PASS XHTML1.1+MathML+SVG parsing &equest; 
+PASS XHTML1.1+MathML+SVG parsing &Equilibrium; 
+PASS XHTML1.1+MathML+SVG parsing &equiv; 
+PASS XHTML1.1+MathML+SVG parsing &equivDD; 
+PASS XHTML1.1+MathML+SVG parsing &eqvparsl; 
+PASS XHTML1.1+MathML+SVG parsing &erarr; 
+PASS XHTML1.1+MathML+SVG parsing &erDot; 
+PASS XHTML1.1+MathML+SVG parsing &escr; 
+PASS XHTML1.1+MathML+SVG parsing &Escr; 
+PASS XHTML1.1+MathML+SVG parsing &esdot; 
+PASS XHTML1.1+MathML+SVG parsing &Esim; 
+PASS XHTML1.1+MathML+SVG parsing &esim; 
+PASS XHTML1.1+MathML+SVG parsing &Eta; 
+PASS XHTML1.1+MathML+SVG parsing &eta; 
+PASS XHTML1.1+MathML+SVG parsing &ETH; 
+PASS XHTML1.1+MathML+SVG parsing &eth; 
+PASS XHTML1.1+MathML+SVG parsing &Euml; 
+PASS XHTML1.1+MathML+SVG parsing &euml; 
+PASS XHTML1.1+MathML+SVG parsing &euro; 
+PASS XHTML1.1+MathML+SVG parsing &excl; 
+PASS XHTML1.1+MathML+SVG parsing &exist; 
+PASS XHTML1.1+MathML+SVG parsing &Exists; 
+PASS XHTML1.1+MathML+SVG parsing &expectation; 
+PASS XHTML1.1+MathML+SVG parsing &exponentiale; 
+PASS XHTML1.1+MathML+SVG parsing &ExponentialE; 
+PASS XHTML1.1+MathML+SVG parsing &fallingdotseq; 
+PASS XHTML1.1+MathML+SVG parsing &Fcy; 
+PASS XHTML1.1+MathML+SVG parsing &fcy; 
+PASS XHTML1.1+MathML+SVG parsing &female; 
+PASS XHTML1.1+MathML+SVG parsing &ffilig; 
+PASS XHTML1.1+MathML+SVG parsing &fflig; 
+PASS XHTML1.1+MathML+SVG parsing &ffllig; 
+PASS XHTML1.1+MathML+SVG parsing &Ffr; 
+PASS XHTML1.1+MathML+SVG parsing &ffr; 
+PASS XHTML1.1+MathML+SVG parsing &filig; 
+PASS XHTML1.1+MathML+SVG parsing &FilledSmallSquare; 
+PASS XHTML1.1+MathML+SVG parsing &FilledVerySmallSquare; 
+PASS XHTML1.1+MathML+SVG parsing &fjlig; 
+PASS XHTML1.1+MathML+SVG parsing &flat; 
+PASS XHTML1.1+MathML+SVG parsing &fllig; 
+PASS XHTML1.1+MathML+SVG parsing &fltns; 
+PASS XHTML1.1+MathML+SVG parsing &fnof; 
+PASS XHTML1.1+MathML+SVG parsing &Fopf; 
+PASS XHTML1.1+MathML+SVG parsing &fopf; 
+PASS XHTML1.1+MathML+SVG parsing &forall; 
+PASS XHTML1.1+MathML+SVG parsing &ForAll; 
+PASS XHTML1.1+MathML+SVG parsing &fork; 
+PASS XHTML1.1+MathML+SVG parsing &forkv; 
+PASS XHTML1.1+MathML+SVG parsing &Fouriertrf; 
+PASS XHTML1.1+MathML+SVG parsing &fpartint; 
+PASS XHTML1.1+MathML+SVG parsing &frac12; 
+PASS XHTML1.1+MathML+SVG parsing &frac13; 
+PASS XHTML1.1+MathML+SVG parsing &frac14; 
+PASS XHTML1.1+MathML+SVG parsing &frac15; 
+PASS XHTML1.1+MathML+SVG parsing &frac16; 
+PASS XHTML1.1+MathML+SVG parsing &frac18; 
+PASS XHTML1.1+MathML+SVG parsing &frac23; 
+PASS XHTML1.1+MathML+SVG parsing &frac25; 
+PASS XHTML1.1+MathML+SVG parsing &frac34; 
+PASS XHTML1.1+MathML+SVG parsing &frac35; 
+PASS XHTML1.1+MathML+SVG parsing &frac38; 
+PASS XHTML1.1+MathML+SVG parsing &frac45; 
+PASS XHTML1.1+MathML+SVG parsing &frac56; 
+PASS XHTML1.1+MathML+SVG parsing &frac58; 
+PASS XHTML1.1+MathML+SVG parsing &frac78; 
+PASS XHTML1.1+MathML+SVG parsing &frasl; 
+PASS XHTML1.1+MathML+SVG parsing &frown; 
+PASS XHTML1.1+MathML+SVG parsing &fscr; 
+PASS XHTML1.1+MathML+SVG parsing &Fscr; 
+PASS XHTML1.1+MathML+SVG parsing &gacute; 
+PASS XHTML1.1+MathML+SVG parsing &Gamma; 
+PASS XHTML1.1+MathML+SVG parsing &gamma; 
+PASS XHTML1.1+MathML+SVG parsing &Gammad; 
+PASS XHTML1.1+MathML+SVG parsing &gammad; 
+PASS XHTML1.1+MathML+SVG parsing &gap; 
+PASS XHTML1.1+MathML+SVG parsing &Gbreve; 
+PASS XHTML1.1+MathML+SVG parsing &gbreve; 
+PASS XHTML1.1+MathML+SVG parsing &Gcedil; 
+PASS XHTML1.1+MathML+SVG parsing &Gcirc; 
+PASS XHTML1.1+MathML+SVG parsing &gcirc; 
+PASS XHTML1.1+MathML+SVG parsing &Gcy; 
+PASS XHTML1.1+MathML+SVG parsing &gcy; 
+PASS XHTML1.1+MathML+SVG parsing &Gdot; 
+PASS XHTML1.1+MathML+SVG parsing &gdot; 
+PASS XHTML1.1+MathML+SVG parsing &ge; 
+PASS XHTML1.1+MathML+SVG parsing &gE; 
+PASS XHTML1.1+MathML+SVG parsing &gEl; 
+PASS XHTML1.1+MathML+SVG parsing &gel; 
+PASS XHTML1.1+MathML+SVG parsing &geq; 
+PASS XHTML1.1+MathML+SVG parsing &geqq; 
+PASS XHTML1.1+MathML+SVG parsing &geqslant; 
+PASS XHTML1.1+MathML+SVG parsing &gescc; 
+PASS XHTML1.1+MathML+SVG parsing &ges; 
+PASS XHTML1.1+MathML+SVG parsing &gesdot; 
+PASS XHTML1.1+MathML+SVG parsing &gesdoto; 
+PASS XHTML1.1+MathML+SVG parsing &gesdotol; 
+PASS XHTML1.1+MathML+SVG parsing &gesl; 
+PASS XHTML1.1+MathML+SVG parsing &gesles; 
+PASS XHTML1.1+MathML+SVG parsing &Gfr; 
+PASS XHTML1.1+MathML+SVG parsing &gfr; 
+PASS XHTML1.1+MathML+SVG parsing &gg; 
+PASS XHTML1.1+MathML+SVG parsing &Gg; 
+PASS XHTML1.1+MathML+SVG parsing &ggg; 
+PASS XHTML1.1+MathML+SVG parsing &gimel; 
+PASS XHTML1.1+MathML+SVG parsing &GJcy; 
+PASS XHTML1.1+MathML+SVG parsing &gjcy; 
+PASS XHTML1.1+MathML+SVG parsing &gla; 
+PASS XHTML1.1+MathML+SVG parsing &gl; 
+PASS XHTML1.1+MathML+SVG parsing &glE; 
+PASS XHTML1.1+MathML+SVG parsing &glj; 
+PASS XHTML1.1+MathML+SVG parsing &gnap; 
+PASS XHTML1.1+MathML+SVG parsing &gnapprox; 
+PASS XHTML1.1+MathML+SVG parsing &gne; 
+PASS XHTML1.1+MathML+SVG parsing &gnE; 
+PASS XHTML1.1+MathML+SVG parsing &gneq; 
+PASS XHTML1.1+MathML+SVG parsing &gneqq; 
+PASS XHTML1.1+MathML+SVG parsing &gnsim; 
+PASS XHTML1.1+MathML+SVG parsing &Gopf; 
+PASS XHTML1.1+MathML+SVG parsing &gopf; 
+PASS XHTML1.1+MathML+SVG parsing &grave; 
+PASS XHTML1.1+MathML+SVG parsing &GreaterEqual; 
+PASS XHTML1.1+MathML+SVG parsing &GreaterEqualLess; 
+PASS XHTML1.1+MathML+SVG parsing &GreaterFullEqual; 
+PASS XHTML1.1+MathML+SVG parsing &GreaterGreater; 
+PASS XHTML1.1+MathML+SVG parsing &GreaterLess; 
+PASS XHTML1.1+MathML+SVG parsing &GreaterSlantEqual; 
+PASS XHTML1.1+MathML+SVG parsing &GreaterTilde; 
+PASS XHTML1.1+MathML+SVG parsing &Gscr; 
+PASS XHTML1.1+MathML+SVG parsing &gscr; 
+PASS XHTML1.1+MathML+SVG parsing &gsim; 
+PASS XHTML1.1+MathML+SVG parsing &gsime; 
+PASS XHTML1.1+MathML+SVG parsing &gsiml; 
+PASS XHTML1.1+MathML+SVG parsing &gtcc; 
+PASS XHTML1.1+MathML+SVG parsing &gtcir; 
+PASS XHTML1.1+MathML+SVG parsing &gt; 
+PASS XHTML1.1+MathML+SVG parsing &GT; 
+PASS XHTML1.1+MathML+SVG parsing &Gt; 
+PASS XHTML1.1+MathML+SVG parsing &gtdot; 
+PASS XHTML1.1+MathML+SVG parsing &gtlPar; 
+PASS XHTML1.1+MathML+SVG parsing &gtquest; 
+PASS XHTML1.1+MathML+SVG parsing &gtrapprox; 
+PASS XHTML1.1+MathML+SVG parsing &gtrarr; 
+PASS XHTML1.1+MathML+SVG parsing &gtrdot; 
+PASS XHTML1.1+MathML+SVG parsing &gtreqless; 
+PASS XHTML1.1+MathML+SVG parsing &gtreqqless; 
+PASS XHTML1.1+MathML+SVG parsing &gtrless; 
+PASS XHTML1.1+MathML+SVG parsing &gtrsim; 
+PASS XHTML1.1+MathML+SVG parsing &gvertneqq; 
+PASS XHTML1.1+MathML+SVG parsing &gvnE; 
+PASS XHTML1.1+MathML+SVG parsing &Hacek; 
+PASS XHTML1.1+MathML+SVG parsing &hairsp; 
+PASS XHTML1.1+MathML+SVG parsing &half; 
+PASS XHTML1.1+MathML+SVG parsing &hamilt; 
+PASS XHTML1.1+MathML+SVG parsing &HARDcy; 
+PASS XHTML1.1+MathML+SVG parsing &hardcy; 
+PASS XHTML1.1+MathML+SVG parsing &harrcir; 
+PASS XHTML1.1+MathML+SVG parsing &harr; 
+PASS XHTML1.1+MathML+SVG parsing &hArr; 
+PASS XHTML1.1+MathML+SVG parsing &harrw; 
+PASS XHTML1.1+MathML+SVG parsing &Hat; 
+PASS XHTML1.1+MathML+SVG parsing &hbar; 
+PASS XHTML1.1+MathML+SVG parsing &Hcirc; 
+PASS XHTML1.1+MathML+SVG parsing &hcirc; 
+PASS XHTML1.1+MathML+SVG parsing &hearts; 
+PASS XHTML1.1+MathML+SVG parsing &heartsuit; 
+PASS XHTML1.1+MathML+SVG parsing &hellip; 
+PASS XHTML1.1+MathML+SVG parsing &hercon; 
+PASS XHTML1.1+MathML+SVG parsing &hfr; 
+PASS XHTML1.1+MathML+SVG parsing &Hfr; 
+PASS XHTML1.1+MathML+SVG parsing &HilbertSpace; 
+PASS XHTML1.1+MathML+SVG parsing &hksearow; 
+PASS XHTML1.1+MathML+SVG parsing &hkswarow; 
+PASS XHTML1.1+MathML+SVG parsing &hoarr; 
+PASS XHTML1.1+MathML+SVG parsing &homtht; 
+PASS XHTML1.1+MathML+SVG parsing &hookleftarrow; 
+PASS XHTML1.1+MathML+SVG parsing &hookrightarrow; 
+PASS XHTML1.1+MathML+SVG parsing &hopf; 
+PASS XHTML1.1+MathML+SVG parsing &Hopf; 
+PASS XHTML1.1+MathML+SVG parsing &horbar; 
+PASS XHTML1.1+MathML+SVG parsing &HorizontalLine; 
+PASS XHTML1.1+MathML+SVG parsing &hscr; 
+PASS XHTML1.1+MathML+SVG parsing &Hscr; 
+PASS XHTML1.1+MathML+SVG parsing &hslash; 
+PASS XHTML1.1+MathML+SVG parsing &Hstrok; 
+PASS XHTML1.1+MathML+SVG parsing &hstrok; 
+PASS XHTML1.1+MathML+SVG parsing &HumpDownHump; 
+PASS XHTML1.1+MathML+SVG parsing &HumpEqual; 
+PASS XHTML1.1+MathML+SVG parsing &hybull; 
+PASS XHTML1.1+MathML+SVG parsing &hyphen; 
+PASS XHTML1.1+MathML+SVG parsing &Iacute; 
+PASS XHTML1.1+MathML+SVG parsing &iacute; 
+PASS XHTML1.1+MathML+SVG parsing &ic; 
+PASS XHTML1.1+MathML+SVG parsing &Icirc; 
+PASS XHTML1.1+MathML+SVG parsing &icirc; 
+PASS XHTML1.1+MathML+SVG parsing &Icy; 
+PASS XHTML1.1+MathML+SVG parsing &icy; 
+PASS XHTML1.1+MathML+SVG parsing &Idot; 
+PASS XHTML1.1+MathML+SVG parsing &IEcy; 
+PASS XHTML1.1+MathML+SVG parsing &iecy; 
+PASS XHTML1.1+MathML+SVG parsing &iexcl; 
+PASS XHTML1.1+MathML+SVG parsing &iff; 
+PASS XHTML1.1+MathML+SVG parsing &ifr; 
+PASS XHTML1.1+MathML+SVG parsing &Ifr; 
+PASS XHTML1.1+MathML+SVG parsing &Igrave; 
+PASS XHTML1.1+MathML+SVG parsing &igrave; 
+PASS XHTML1.1+MathML+SVG parsing &ii; 
+PASS XHTML1.1+MathML+SVG parsing &iiiint; 
+PASS XHTML1.1+MathML+SVG parsing &iiint; 
+PASS XHTML1.1+MathML+SVG parsing &iinfin; 
+PASS XHTML1.1+MathML+SVG parsing &iiota; 
+PASS XHTML1.1+MathML+SVG parsing &IJlig; 
+PASS XHTML1.1+MathML+SVG parsing &ijlig; 
+PASS XHTML1.1+MathML+SVG parsing &Imacr; 
+PASS XHTML1.1+MathML+SVG parsing &imacr; 
+PASS XHTML1.1+MathML+SVG parsing &image; 
+PASS XHTML1.1+MathML+SVG parsing &ImaginaryI; 
+PASS XHTML1.1+MathML+SVG parsing &imagline; 
+PASS XHTML1.1+MathML+SVG parsing &imagpart; 
+PASS XHTML1.1+MathML+SVG parsing &imath; 
+PASS XHTML1.1+MathML+SVG parsing &Im; 
+PASS XHTML1.1+MathML+SVG parsing &imof; 
+PASS XHTML1.1+MathML+SVG parsing &imped; 
+PASS XHTML1.1+MathML+SVG parsing &Implies; 
+PASS XHTML1.1+MathML+SVG parsing &incare; 
+PASS XHTML1.1+MathML+SVG parsing &in; 
+PASS XHTML1.1+MathML+SVG parsing &infin; 
+PASS XHTML1.1+MathML+SVG parsing &infintie; 
+PASS XHTML1.1+MathML+SVG parsing &inodot; 
+PASS XHTML1.1+MathML+SVG parsing &intcal; 
+PASS XHTML1.1+MathML+SVG parsing &int; 
+PASS XHTML1.1+MathML+SVG parsing &Int; 
+PASS XHTML1.1+MathML+SVG parsing &integers; 
+PASS XHTML1.1+MathML+SVG parsing &Integral; 
+PASS XHTML1.1+MathML+SVG parsing &intercal; 
+PASS XHTML1.1+MathML+SVG parsing &Intersection; 
+PASS XHTML1.1+MathML+SVG parsing &intlarhk; 
+PASS XHTML1.1+MathML+SVG parsing &intprod; 
+PASS XHTML1.1+MathML+SVG parsing &InvisibleComma; 
+PASS XHTML1.1+MathML+SVG parsing &InvisibleTimes; 
+PASS XHTML1.1+MathML+SVG parsing &IOcy; 
+PASS XHTML1.1+MathML+SVG parsing &iocy; 
+PASS XHTML1.1+MathML+SVG parsing &Iogon; 
+PASS XHTML1.1+MathML+SVG parsing &iogon; 
+PASS XHTML1.1+MathML+SVG parsing &Iopf; 
+PASS XHTML1.1+MathML+SVG parsing &iopf; 
+PASS XHTML1.1+MathML+SVG parsing &Iota; 
+PASS XHTML1.1+MathML+SVG parsing &iota; 
+PASS XHTML1.1+MathML+SVG parsing &iprod; 
+PASS XHTML1.1+MathML+SVG parsing &iquest; 
+PASS XHTML1.1+MathML+SVG parsing &iscr; 
+PASS XHTML1.1+MathML+SVG parsing &Iscr; 
+PASS XHTML1.1+MathML+SVG parsing &isin; 
+PASS XHTML1.1+MathML+SVG parsing &isindot; 
+PASS XHTML1.1+MathML+SVG parsing &isinE; 
+PASS XHTML1.1+MathML+SVG parsing &isins; 
+PASS XHTML1.1+MathML+SVG parsing &isinsv; 
+PASS XHTML1.1+MathML+SVG parsing &isinv; 
+PASS XHTML1.1+MathML+SVG parsing &it; 
+PASS XHTML1.1+MathML+SVG parsing &Itilde; 
+PASS XHTML1.1+MathML+SVG parsing &itilde; 
+PASS XHTML1.1+MathML+SVG parsing &Iukcy; 
+PASS XHTML1.1+MathML+SVG parsing &iukcy; 
+PASS XHTML1.1+MathML+SVG parsing &Iuml; 
+PASS XHTML1.1+MathML+SVG parsing &iuml; 
+PASS XHTML1.1+MathML+SVG parsing &Jcirc; 
+PASS XHTML1.1+MathML+SVG parsing &jcirc; 
+PASS XHTML1.1+MathML+SVG parsing &Jcy; 
+PASS XHTML1.1+MathML+SVG parsing &jcy; 
+PASS XHTML1.1+MathML+SVG parsing &Jfr; 
+PASS XHTML1.1+MathML+SVG parsing &jfr; 
+PASS XHTML1.1+MathML+SVG parsing &jmath; 
+PASS XHTML1.1+MathML+SVG parsing &Jopf; 
+PASS XHTML1.1+MathML+SVG parsing &jopf; 
+PASS XHTML1.1+MathML+SVG parsing &Jscr; 
+PASS XHTML1.1+MathML+SVG parsing &jscr; 
+PASS XHTML1.1+MathML+SVG parsing &Jsercy; 
+PASS XHTML1.1+MathML+SVG parsing &jsercy; 
+PASS XHTML1.1+MathML+SVG parsing &Jukcy; 
+PASS XHTML1.1+MathML+SVG parsing &jukcy; 
+PASS XHTML1.1+MathML+SVG parsing &Kappa; 
+PASS XHTML1.1+MathML+SVG parsing &kappa; 
+PASS XHTML1.1+MathML+SVG parsing &kappav; 
+PASS XHTML1.1+MathML+SVG parsing &Kcedil; 
+PASS XHTML1.1+MathML+SVG parsing &kcedil; 
+PASS XHTML1.1+MathML+SVG parsing &Kcy; 
+PASS XHTML1.1+MathML+SVG parsing &kcy; 
+PASS XHTML1.1+MathML+SVG parsing &Kfr; 
+PASS XHTML1.1+MathML+SVG parsing &kfr; 
+PASS XHTML1.1+MathML+SVG parsing &kgreen; 
+PASS XHTML1.1+MathML+SVG parsing &KHcy; 
+PASS XHTML1.1+MathML+SVG parsing &khcy; 
+PASS XHTML1.1+MathML+SVG parsing &KJcy; 
+PASS XHTML1.1+MathML+SVG parsing &kjcy; 
+PASS XHTML1.1+MathML+SVG parsing &Kopf; 
+PASS XHTML1.1+MathML+SVG parsing &kopf; 
+PASS XHTML1.1+MathML+SVG parsing &Kscr; 
+PASS XHTML1.1+MathML+SVG parsing &kscr; 
+PASS XHTML1.1+MathML+SVG parsing &lAarr; 
+PASS XHTML1.1+MathML+SVG parsing &Lacute; 
+PASS XHTML1.1+MathML+SVG parsing &lacute; 
+PASS XHTML1.1+MathML+SVG parsing &laemptyv; 
+PASS XHTML1.1+MathML+SVG parsing &lagran; 
+PASS XHTML1.1+MathML+SVG parsing &Lambda; 
+PASS XHTML1.1+MathML+SVG parsing &lambda; 
+PASS XHTML1.1+MathML+SVG parsing &lang; 
+PASS XHTML1.1+MathML+SVG parsing &Lang; 
+PASS XHTML1.1+MathML+SVG parsing &langd; 
+PASS XHTML1.1+MathML+SVG parsing &langle; 
+PASS XHTML1.1+MathML+SVG parsing &lap; 
+PASS XHTML1.1+MathML+SVG parsing &Laplacetrf; 
+PASS XHTML1.1+MathML+SVG parsing &laquo; 
+PASS XHTML1.1+MathML+SVG parsing &larrb; 
+PASS XHTML1.1+MathML+SVG parsing &larrbfs; 
+PASS XHTML1.1+MathML+SVG parsing &larr; 
+PASS XHTML1.1+MathML+SVG parsing &Larr; 
+PASS XHTML1.1+MathML+SVG parsing &lArr; 
+PASS XHTML1.1+MathML+SVG parsing &larrfs; 
+PASS XHTML1.1+MathML+SVG parsing &larrhk; 
+PASS XHTML1.1+MathML+SVG parsing &larrlp; 
+PASS XHTML1.1+MathML+SVG parsing &larrpl; 
+PASS XHTML1.1+MathML+SVG parsing &larrsim; 
+PASS XHTML1.1+MathML+SVG parsing &larrtl; 
+PASS XHTML1.1+MathML+SVG parsing &latail; 
+PASS XHTML1.1+MathML+SVG parsing &lAtail; 
+PASS XHTML1.1+MathML+SVG parsing &lat; 
+PASS XHTML1.1+MathML+SVG parsing &late; 
+PASS XHTML1.1+MathML+SVG parsing &lates; 
+PASS XHTML1.1+MathML+SVG parsing &lbarr; 
+PASS XHTML1.1+MathML+SVG parsing &lBarr; 
+PASS XHTML1.1+MathML+SVG parsing &lbbrk; 
+PASS XHTML1.1+MathML+SVG parsing &lbrace; 
+PASS XHTML1.1+MathML+SVG parsing &lbrack; 
+PASS XHTML1.1+MathML+SVG parsing &lbrke; 
+PASS XHTML1.1+MathML+SVG parsing &lbrksld; 
+PASS XHTML1.1+MathML+SVG parsing &lbrkslu; 
+PASS XHTML1.1+MathML+SVG parsing &Lcaron; 
+PASS XHTML1.1+MathML+SVG parsing &lcaron; 
+PASS XHTML1.1+MathML+SVG parsing &Lcedil; 
+PASS XHTML1.1+MathML+SVG parsing &lcedil; 
+PASS XHTML1.1+MathML+SVG parsing &lceil; 
+PASS XHTML1.1+MathML+SVG parsing &lcub; 
+PASS XHTML1.1+MathML+SVG parsing &Lcy; 
+PASS XHTML1.1+MathML+SVG parsing &lcy; 
+PASS XHTML1.1+MathML+SVG parsing &ldca; 
+PASS XHTML1.1+MathML+SVG parsing &ldquo; 
+PASS XHTML1.1+MathML+SVG parsing &ldquor; 
+PASS XHTML1.1+MathML+SVG parsing &ldrdhar; 
+PASS XHTML1.1+MathML+SVG parsing &ldrushar; 
+PASS XHTML1.1+MathML+SVG parsing &ldsh; 
+PASS XHTML1.1+MathML+SVG parsing &le; 
+PASS XHTML1.1+MathML+SVG parsing &lE; 
+PASS XHTML1.1+MathML+SVG parsing &LeftAngleBracket; 
+PASS XHTML1.1+MathML+SVG parsing &LeftArrowBar; 
+PASS XHTML1.1+MathML+SVG parsing &leftarrow; 
+PASS XHTML1.1+MathML+SVG parsing &LeftArrow; 
+PASS XHTML1.1+MathML+SVG parsing &Leftarrow; 
+PASS XHTML1.1+MathML+SVG parsing &LeftArrowRightArrow; 
+PASS XHTML1.1+MathML+SVG parsing &leftarrowtail; 
+PASS XHTML1.1+MathML+SVG parsing &LeftCeiling; 
+PASS XHTML1.1+MathML+SVG parsing &LeftDoubleBracket; 
+PASS XHTML1.1+MathML+SVG parsing &LeftDownTeeVector; 
+PASS XHTML1.1+MathML+SVG parsing &LeftDownVectorBar; 
+PASS XHTML1.1+MathML+SVG parsing &LeftDownVector; 
+PASS XHTML1.1+MathML+SVG parsing &LeftFloor; 
+PASS XHTML1.1+MathML+SVG parsing &leftharpoondown; 
+PASS XHTML1.1+MathML+SVG parsing &leftharpoonup; 
+PASS XHTML1.1+MathML+SVG parsing &leftleftarrows; 
+PASS XHTML1.1+MathML+SVG parsing &leftrightarrow; 
+PASS XHTML1.1+MathML+SVG parsing &LeftRightArrow; 
+PASS XHTML1.1+MathML+SVG parsing &Leftrightarrow; 
+PASS XHTML1.1+MathML+SVG parsing &leftrightarrows; 
+PASS XHTML1.1+MathML+SVG parsing &leftrightharpoons; 
+PASS XHTML1.1+MathML+SVG parsing &leftrightsquigarrow; 
+PASS XHTML1.1+MathML+SVG parsing &LeftRightVector; 
+PASS XHTML1.1+MathML+SVG parsing &LeftTeeArrow; 
+PASS XHTML1.1+MathML+SVG parsing &LeftTee; 
+PASS XHTML1.1+MathML+SVG parsing &LeftTeeVector; 
+PASS XHTML1.1+MathML+SVG parsing &leftthreetimes; 
+PASS XHTML1.1+MathML+SVG parsing &LeftTriangleBar; 
+PASS XHTML1.1+MathML+SVG parsing &LeftTriangle; 
+PASS XHTML1.1+MathML+SVG parsing &LeftTriangleEqual; 
+PASS XHTML1.1+MathML+SVG parsing &LeftUpDownVector; 
+PASS XHTML1.1+MathML+SVG parsing &LeftUpTeeVector; 
+PASS XHTML1.1+MathML+SVG parsing &LeftUpVectorBar; 
+PASS XHTML1.1+MathML+SVG parsing &LeftUpVector; 
+PASS XHTML1.1+MathML+SVG parsing &LeftVectorBar; 
+PASS XHTML1.1+MathML+SVG parsing &LeftVector; 
+PASS XHTML1.1+MathML+SVG parsing &lEg; 
+PASS XHTML1.1+MathML+SVG parsing &leg; 
+PASS XHTML1.1+MathML+SVG parsing &leq; 
+PASS XHTML1.1+MathML+SVG parsing &leqq; 
+PASS XHTML1.1+MathML+SVG parsing &leqslant; 
+PASS XHTML1.1+MathML+SVG parsing &lescc; 
+PASS XHTML1.1+MathML+SVG parsing &les; 
+PASS XHTML1.1+MathML+SVG parsing &lesdot; 
+PASS XHTML1.1+MathML+SVG parsing &lesdoto; 
+PASS XHTML1.1+MathML+SVG parsing &lesdotor; 
+PASS XHTML1.1+MathML+SVG parsing &lesg; 
+PASS XHTML1.1+MathML+SVG parsing &lesges; 
+PASS XHTML1.1+MathML+SVG parsing &lessapprox; 
+PASS XHTML1.1+MathML+SVG parsing &lessdot; 
+PASS XHTML1.1+MathML+SVG parsing &lesseqgtr; 
+PASS XHTML1.1+MathML+SVG parsing &lesseqqgtr; 
+PASS XHTML1.1+MathML+SVG parsing &LessEqualGreater; 
+PASS XHTML1.1+MathML+SVG parsing &LessFullEqual; 
+PASS XHTML1.1+MathML+SVG parsing &LessGreater; 
+PASS XHTML1.1+MathML+SVG parsing &lessgtr; 
+PASS XHTML1.1+MathML+SVG parsing &LessLess; 
+PASS XHTML1.1+MathML+SVG parsing &lesssim; 
+PASS XHTML1.1+MathML+SVG parsing &LessSlantEqual; 
+PASS XHTML1.1+MathML+SVG parsing &LessTilde; 
+PASS XHTML1.1+MathML+SVG parsing &lfisht; 
+PASS XHTML1.1+MathML+SVG parsing &lfloor; 
+PASS XHTML1.1+MathML+SVG parsing &Lfr; 
+PASS XHTML1.1+MathML+SVG parsing &lfr; 
+PASS XHTML1.1+MathML+SVG parsing &lg; 
+PASS XHTML1.1+MathML+SVG parsing &lgE; 
+PASS XHTML1.1+MathML+SVG parsing &lHar; 
+PASS XHTML1.1+MathML+SVG parsing &lhard; 
+PASS XHTML1.1+MathML+SVG parsing &lharu; 
+PASS XHTML1.1+MathML+SVG parsing &lharul; 
+PASS XHTML1.1+MathML+SVG parsing &lhblk; 
+PASS XHTML1.1+MathML+SVG parsing &LJcy; 
+PASS XHTML1.1+MathML+SVG parsing &ljcy; 
+PASS XHTML1.1+MathML+SVG parsing &llarr; 
+PASS XHTML1.1+MathML+SVG parsing &ll; 
+PASS XHTML1.1+MathML+SVG parsing &Ll; 
+PASS XHTML1.1+MathML+SVG parsing &llcorner; 
+PASS XHTML1.1+MathML+SVG parsing &Lleftarrow; 
+PASS XHTML1.1+MathML+SVG parsing &llhard; 
+PASS XHTML1.1+MathML+SVG parsing &lltri; 
+PASS XHTML1.1+MathML+SVG parsing &Lmidot; 
+PASS XHTML1.1+MathML+SVG parsing &lmidot; 
+PASS XHTML1.1+MathML+SVG parsing &lmoustache; 
+PASS XHTML1.1+MathML+SVG parsing &lmoust; 
+PASS XHTML1.1+MathML+SVG parsing &lnap; 
+PASS XHTML1.1+MathML+SVG parsing &lnapprox; 
+PASS XHTML1.1+MathML+SVG parsing &lne; 
+PASS XHTML1.1+MathML+SVG parsing &lnE; 
+PASS XHTML1.1+MathML+SVG parsing &lneq; 
+PASS XHTML1.1+MathML+SVG parsing &lneqq; 
+PASS XHTML1.1+MathML+SVG parsing &lnsim; 
+PASS XHTML1.1+MathML+SVG parsing &loang; 
+PASS XHTML1.1+MathML+SVG parsing &loarr; 
+PASS XHTML1.1+MathML+SVG parsing &lobrk; 
+PASS XHTML1.1+MathML+SVG parsing &longleftarrow; 
+PASS XHTML1.1+MathML+SVG parsing &LongLeftArrow; 
+PASS XHTML1.1+MathML+SVG parsing &Longleftarrow; 
+PASS XHTML1.1+MathML+SVG parsing &longleftrightarrow; 
+PASS XHTML1.1+MathML+SVG parsing &LongLeftRightArrow; 
+PASS XHTML1.1+MathML+SVG parsing &Longleftrightarrow; 
+PASS XHTML1.1+MathML+SVG parsing &longmapsto; 
+PASS XHTML1.1+MathML+SVG parsing &longrightarrow; 
+PASS XHTML1.1+MathML+SVG parsing &LongRightArrow; 
+PASS XHTML1.1+MathML+SVG parsing &Longrightarrow; 
+PASS XHTML1.1+MathML+SVG parsing &looparrowleft; 
+PASS XHTML1.1+MathML+SVG parsing &looparrowright; 
+PASS XHTML1.1+MathML+SVG parsing &lopar; 
+PASS XHTML1.1+MathML+SVG parsing &Lopf; 
+PASS XHTML1.1+MathML+SVG parsing &lopf; 
+PASS XHTML1.1+MathML+SVG parsing &loplus; 
+PASS XHTML1.1+MathML+SVG parsing &lotimes; 
+PASS XHTML1.1+MathML+SVG parsing &lowast; 
+PASS XHTML1.1+MathML+SVG parsing &lowbar; 
+PASS XHTML1.1+MathML+SVG parsing &LowerLeftArrow; 
+PASS XHTML1.1+MathML+SVG parsing &LowerRightArrow; 
+PASS XHTML1.1+MathML+SVG parsing &loz; 
+PASS XHTML1.1+MathML+SVG parsing &lozenge; 
+PASS XHTML1.1+MathML+SVG parsing &lozf; 
+PASS XHTML1.1+MathML+SVG parsing &lpar; 
+PASS XHTML1.1+MathML+SVG parsing &lparlt; 
+PASS XHTML1.1+MathML+SVG parsing &lrarr; 
+PASS XHTML1.1+MathML+SVG parsing &lrcorner; 
+PASS XHTML1.1+MathML+SVG parsing &lrhar; 
+PASS XHTML1.1+MathML+SVG parsing &lrhard; 
+PASS XHTML1.1+MathML+SVG parsing &lrm; 
+PASS XHTML1.1+MathML+SVG parsing &lrtri; 
+PASS XHTML1.1+MathML+SVG parsing &lsaquo; 
+PASS XHTML1.1+MathML+SVG parsing &lscr; 
+PASS XHTML1.1+MathML+SVG parsing &Lscr; 
+PASS XHTML1.1+MathML+SVG parsing &lsh; 
+PASS XHTML1.1+MathML+SVG parsing &Lsh; 
+PASS XHTML1.1+MathML+SVG parsing &lsim; 
+PASS XHTML1.1+MathML+SVG parsing &lsime; 
+PASS XHTML1.1+MathML+SVG parsing &lsimg; 
+PASS XHTML1.1+MathML+SVG parsing &lsqb; 
+PASS XHTML1.1+MathML+SVG parsing &lsquo; 
+PASS XHTML1.1+MathML+SVG parsing &lsquor; 
+PASS XHTML1.1+MathML+SVG parsing &Lstrok; 
+PASS XHTML1.1+MathML+SVG parsing &lstrok; 
+PASS XHTML1.1+MathML+SVG parsing &ltcc; 
+PASS XHTML1.1+MathML+SVG parsing &ltcir; 
+PASS XHTML1.1+MathML+SVG parsing &lt; 
+FAIL XHTML1.1+MathML+SVG parsing &LT; assert_true: expected true got false
+PASS XHTML1.1+MathML+SVG parsing &Lt; 
+PASS XHTML1.1+MathML+SVG parsing &ltdot; 
+PASS XHTML1.1+MathML+SVG parsing &lthree; 
+PASS XHTML1.1+MathML+SVG parsing &ltimes; 
+PASS XHTML1.1+MathML+SVG parsing &ltlarr; 
+PASS XHTML1.1+MathML+SVG parsing &ltquest; 
+PASS XHTML1.1+MathML+SVG parsing &ltri; 
+PASS XHTML1.1+MathML+SVG parsing &ltrie; 
+PASS XHTML1.1+MathML+SVG parsing &ltrif; 
+PASS XHTML1.1+MathML+SVG parsing &ltrPar; 
+PASS XHTML1.1+MathML+SVG parsing &lurdshar; 
+PASS XHTML1.1+MathML+SVG parsing &luruhar; 
+PASS XHTML1.1+MathML+SVG parsing &lvertneqq; 
+PASS XHTML1.1+MathML+SVG parsing &lvnE; 
+PASS XHTML1.1+MathML+SVG parsing &macr; 
+PASS XHTML1.1+MathML+SVG parsing &male; 
+PASS XHTML1.1+MathML+SVG parsing &malt; 
+PASS XHTML1.1+MathML+SVG parsing &maltese; 
+PASS XHTML1.1+MathML+SVG parsing &Map; 
+PASS XHTML1.1+MathML+SVG parsing &map; 
+PASS XHTML1.1+MathML+SVG parsing &mapsto; 
+PASS XHTML1.1+MathML+SVG parsing &mapstodown; 
+PASS XHTML1.1+MathML+SVG parsing &mapstoleft; 
+PASS XHTML1.1+MathML+SVG parsing &mapstoup; 
+PASS XHTML1.1+MathML+SVG parsing &marker; 
+PASS XHTML1.1+MathML+SVG parsing &mcomma; 
+PASS XHTML1.1+MathML+SVG parsing &Mcy; 
+PASS XHTML1.1+MathML+SVG parsing &mcy; 
+PASS XHTML1.1+MathML+SVG parsing &mdash; 
+PASS XHTML1.1+MathML+SVG parsing &mDDot; 
+PASS XHTML1.1+MathML+SVG parsing &measuredangle; 
+PASS XHTML1.1+MathML+SVG parsing &MediumSpace; 
+PASS XHTML1.1+MathML+SVG parsing &Mellintrf; 
+PASS XHTML1.1+MathML+SVG parsing &Mfr; 
+PASS XHTML1.1+MathML+SVG parsing &mfr; 
+PASS XHTML1.1+MathML+SVG parsing &mho; 
+PASS XHTML1.1+MathML+SVG parsing &micro; 
+PASS XHTML1.1+MathML+SVG parsing &midast; 
+PASS XHTML1.1+MathML+SVG parsing &midcir; 
+PASS XHTML1.1+MathML+SVG parsing &mid; 
+PASS XHTML1.1+MathML+SVG parsing &middot; 
+PASS XHTML1.1+MathML+SVG parsing &minusb; 
+PASS XHTML1.1+MathML+SVG parsing &minus; 
+PASS XHTML1.1+MathML+SVG parsing &minusd; 
+PASS XHTML1.1+MathML+SVG parsing &minusdu; 
+PASS XHTML1.1+MathML+SVG parsing &MinusPlus; 
+PASS XHTML1.1+MathML+SVG parsing &mlcp; 
+PASS XHTML1.1+MathML+SVG parsing &mldr; 
+PASS XHTML1.1+MathML+SVG parsing &mnplus; 
+PASS XHTML1.1+MathML+SVG parsing &models; 
+PASS XHTML1.1+MathML+SVG parsing &Mopf; 
+PASS XHTML1.1+MathML+SVG parsing &mopf; 
+PASS XHTML1.1+MathML+SVG parsing &mp; 
+PASS XHTML1.1+MathML+SVG parsing &mscr; 
+PASS XHTML1.1+MathML+SVG parsing &Mscr; 
+PASS XHTML1.1+MathML+SVG parsing &mstpos; 
+PASS XHTML1.1+MathML+SVG parsing &Mu; 
+PASS XHTML1.1+MathML+SVG parsing &mu; 
+PASS XHTML1.1+MathML+SVG parsing &multimap; 
+PASS XHTML1.1+MathML+SVG parsing &mumap; 
+PASS XHTML1.1+MathML+SVG parsing &nabla; 
+PASS XHTML1.1+MathML+SVG parsing &Nacute; 
+PASS XHTML1.1+MathML+SVG parsing &nacute; 
+PASS XHTML1.1+MathML+SVG parsing &nang; 
+PASS XHTML1.1+MathML+SVG parsing &nap; 
+PASS XHTML1.1+MathML+SVG parsing &napE; 
+PASS XHTML1.1+MathML+SVG parsing &napid; 
+PASS XHTML1.1+MathML+SVG parsing &napos; 
+PASS XHTML1.1+MathML+SVG parsing &napprox; 
+PASS XHTML1.1+MathML+SVG parsing &natural; 
+PASS XHTML1.1+MathML+SVG parsing &naturals; 
+PASS XHTML1.1+MathML+SVG parsing &natur; 
+PASS XHTML1.1+MathML+SVG parsing &nbsp; 
+PASS XHTML1.1+MathML+SVG parsing &nbump; 
+PASS XHTML1.1+MathML+SVG parsing &nbumpe; 
+PASS XHTML1.1+MathML+SVG parsing &ncap; 
+PASS XHTML1.1+MathML+SVG parsing &Ncaron; 
+PASS XHTML1.1+MathML+SVG parsing &ncaron; 
+PASS XHTML1.1+MathML+SVG parsing &Ncedil; 
+PASS XHTML1.1+MathML+SVG parsing &ncedil; 
+PASS XHTML1.1+MathML+SVG parsing &ncong; 
+PASS XHTML1.1+MathML+SVG parsing &ncongdot; 
+PASS XHTML1.1+MathML+SVG parsing &ncup; 
+PASS XHTML1.1+MathML+SVG parsing &Ncy; 
+PASS XHTML1.1+MathML+SVG parsing &ncy; 
+PASS XHTML1.1+MathML+SVG parsing &ndash; 
+PASS XHTML1.1+MathML+SVG parsing &nearhk; 
+PASS XHTML1.1+MathML+SVG parsing &nearr; 
+PASS XHTML1.1+MathML+SVG parsing &neArr; 
+PASS XHTML1.1+MathML+SVG parsing &nearrow; 
+PASS XHTML1.1+MathML+SVG parsing &ne; 
+PASS XHTML1.1+MathML+SVG parsing &nedot; 
+PASS XHTML1.1+MathML+SVG parsing &NegativeMediumSpace; 
+PASS XHTML1.1+MathML+SVG parsing &NegativeThickSpace; 
+PASS XHTML1.1+MathML+SVG parsing &NegativeThinSpace; 
+PASS XHTML1.1+MathML+SVG parsing &NegativeVeryThinSpace; 
+PASS XHTML1.1+MathML+SVG parsing &nequiv; 
+PASS XHTML1.1+MathML+SVG parsing &nesear; 
+PASS XHTML1.1+MathML+SVG parsing &nesim; 
+PASS XHTML1.1+MathML+SVG parsing &NestedGreaterGreater; 
+PASS XHTML1.1+MathML+SVG parsing &NestedLessLess; 
+PASS XHTML1.1+MathML+SVG parsing &NewLine; 
+PASS XHTML1.1+MathML+SVG parsing &nexist; 
+PASS XHTML1.1+MathML+SVG parsing &nexists; 
+PASS XHTML1.1+MathML+SVG parsing &Nfr; 
+PASS XHTML1.1+MathML+SVG parsing &nfr; 
+PASS XHTML1.1+MathML+SVG parsing &ngE; 
+PASS XHTML1.1+MathML+SVG parsing &nge; 
+PASS XHTML1.1+MathML+SVG parsing &ngeq; 
+PASS XHTML1.1+MathML+SVG parsing &ngeqq; 
+PASS XHTML1.1+MathML+SVG parsing &ngeqslant; 
+PASS XHTML1.1+MathML+SVG parsing &nges; 
+PASS XHTML1.1+MathML+SVG parsing &nGg; 
+PASS XHTML1.1+MathML+SVG parsing &ngsim; 
+PASS XHTML1.1+MathML+SVG parsing &nGt; 
+PASS XHTML1.1+MathML+SVG parsing &ngt; 
+PASS XHTML1.1+MathML+SVG parsing &ngtr; 
+PASS XHTML1.1+MathML+SVG parsing &nGtv; 
+PASS XHTML1.1+MathML+SVG parsing &nharr; 
+PASS XHTML1.1+MathML+SVG parsing &nhArr; 
+PASS XHTML1.1+MathML+SVG parsing &nhpar; 
+PASS XHTML1.1+MathML+SVG parsing &ni; 
+PASS XHTML1.1+MathML+SVG parsing &nis; 
+PASS XHTML1.1+MathML+SVG parsing &nisd; 
+PASS XHTML1.1+MathML+SVG parsing &niv; 
+PASS XHTML1.1+MathML+SVG parsing &NJcy; 
+PASS XHTML1.1+MathML+SVG parsing &njcy; 
+PASS XHTML1.1+MathML+SVG parsing &nlarr; 
+PASS XHTML1.1+MathML+SVG parsing &nlArr; 
+PASS XHTML1.1+MathML+SVG parsing &nldr; 
+PASS XHTML1.1+MathML+SVG parsing &nlE; 
+PASS XHTML1.1+MathML+SVG parsing &nle; 
+PASS XHTML1.1+MathML+SVG parsing &nleftarrow; 
+PASS XHTML1.1+MathML+SVG parsing &nLeftarrow; 
+PASS XHTML1.1+MathML+SVG parsing &nleftrightarrow; 
+PASS XHTML1.1+MathML+SVG parsing &nLeftrightarrow; 
+PASS XHTML1.1+MathML+SVG parsing &nleq; 
+PASS XHTML1.1+MathML+SVG parsing &nleqq; 
+PASS XHTML1.1+MathML+SVG parsing &nleqslant; 
+PASS XHTML1.1+MathML+SVG parsing &nles; 
+PASS XHTML1.1+MathML+SVG parsing &nless; 
+PASS XHTML1.1+MathML+SVG parsing &nLl; 
+PASS XHTML1.1+MathML+SVG parsing &nlsim; 
+PASS XHTML1.1+MathML+SVG parsing &nLt; 
+PASS XHTML1.1+MathML+SVG parsing &nlt; 
+PASS XHTML1.1+MathML+SVG parsing &nltri; 
+PASS XHTML1.1+MathML+SVG parsing &nltrie; 
+PASS XHTML1.1+MathML+SVG parsing &nLtv; 
+PASS XHTML1.1+MathML+SVG parsing &nmid; 
+PASS XHTML1.1+MathML+SVG parsing &NoBreak; 
+PASS XHTML1.1+MathML+SVG parsing &NonBreakingSpace; 
+PASS XHTML1.1+MathML+SVG parsing &nopf; 
+PASS XHTML1.1+MathML+SVG parsing &Nopf; 
+PASS XHTML1.1+MathML+SVG parsing &Not; 
+PASS XHTML1.1+MathML+SVG parsing &not; 
+PASS XHTML1.1+MathML+SVG parsing &NotCongruent; 
+PASS XHTML1.1+MathML+SVG parsing &NotCupCap; 
+PASS XHTML1.1+MathML+SVG parsing &NotDoubleVerticalBar; 
+PASS XHTML1.1+MathML+SVG parsing &NotElement; 
+PASS XHTML1.1+MathML+SVG parsing &NotEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotEqualTilde; 
+PASS XHTML1.1+MathML+SVG parsing &NotExists; 
+PASS XHTML1.1+MathML+SVG parsing &NotGreater; 
+PASS XHTML1.1+MathML+SVG parsing &NotGreaterEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotGreaterFullEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotGreaterGreater; 
+PASS XHTML1.1+MathML+SVG parsing &NotGreaterLess; 
+PASS XHTML1.1+MathML+SVG parsing &NotGreaterSlantEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotGreaterTilde; 
+PASS XHTML1.1+MathML+SVG parsing &NotHumpDownHump; 
+PASS XHTML1.1+MathML+SVG parsing &NotHumpEqual; 
+PASS XHTML1.1+MathML+SVG parsing &notin; 
+PASS XHTML1.1+MathML+SVG parsing &notindot; 
+PASS XHTML1.1+MathML+SVG parsing &notinE; 
+PASS XHTML1.1+MathML+SVG parsing &notinva; 
+PASS XHTML1.1+MathML+SVG parsing &notinvb; 
+PASS XHTML1.1+MathML+SVG parsing &notinvc; 
+PASS XHTML1.1+MathML+SVG parsing &NotLeftTriangleBar; 
+PASS XHTML1.1+MathML+SVG parsing &NotLeftTriangle; 
+PASS XHTML1.1+MathML+SVG parsing &NotLeftTriangleEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotLess; 
+PASS XHTML1.1+MathML+SVG parsing &NotLessEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotLessGreater; 
+PASS XHTML1.1+MathML+SVG parsing &NotLessLess; 
+PASS XHTML1.1+MathML+SVG parsing &NotLessSlantEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotLessTilde; 
+PASS XHTML1.1+MathML+SVG parsing &NotNestedGreaterGreater; 
+PASS XHTML1.1+MathML+SVG parsing &NotNestedLessLess; 
+PASS XHTML1.1+MathML+SVG parsing &notni; 
+PASS XHTML1.1+MathML+SVG parsing &notniva; 
+PASS XHTML1.1+MathML+SVG parsing &notnivb; 
+PASS XHTML1.1+MathML+SVG parsing &notnivc; 
+PASS XHTML1.1+MathML+SVG parsing &NotPrecedes; 
+PASS XHTML1.1+MathML+SVG parsing &NotPrecedesEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotPrecedesSlantEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotReverseElement; 
+PASS XHTML1.1+MathML+SVG parsing &NotRightTriangleBar; 
+PASS XHTML1.1+MathML+SVG parsing &NotRightTriangle; 
+PASS XHTML1.1+MathML+SVG parsing &NotRightTriangleEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotSquareSubset; 
+PASS XHTML1.1+MathML+SVG parsing &NotSquareSubsetEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotSquareSuperset; 
+PASS XHTML1.1+MathML+SVG parsing &NotSquareSupersetEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotSubset; 
+PASS XHTML1.1+MathML+SVG parsing &NotSubsetEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotSucceeds; 
+PASS XHTML1.1+MathML+SVG parsing &NotSucceedsEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotSucceedsSlantEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotSucceedsTilde; 
+PASS XHTML1.1+MathML+SVG parsing &NotSuperset; 
+PASS XHTML1.1+MathML+SVG parsing &NotSupersetEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotTilde; 
+PASS XHTML1.1+MathML+SVG parsing &NotTildeEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotTildeFullEqual; 
+PASS XHTML1.1+MathML+SVG parsing &NotTildeTilde; 
+PASS XHTML1.1+MathML+SVG parsing &NotVerticalBar; 
+PASS XHTML1.1+MathML+SVG parsing &nparallel; 
+PASS XHTML1.1+MathML+SVG parsing &npar; 
+PASS XHTML1.1+MathML+SVG parsing &nparsl; 
+PASS XHTML1.1+MathML+SVG parsing &npart; 
+PASS XHTML1.1+MathML+SVG parsing &npolint; 
+PASS XHTML1.1+MathML+SVG parsing &npr; 
+PASS XHTML1.1+MathML+SVG parsing &nprcue; 
+PASS XHTML1.1+MathML+SVG parsing &nprec; 
+PASS XHTML1.1+MathML+SVG parsing &npreceq; 
+PASS XHTML1.1+MathML+SVG parsing &npre; 
+PASS XHTML1.1+MathML+SVG parsing &nrarrc; 
+PASS XHTML1.1+MathML+SVG parsing &nrarr; 
+PASS XHTML1.1+MathML+SVG parsing &nrArr; 
+PASS XHTML1.1+MathML+SVG parsing &nrarrw; 
+PASS XHTML1.1+MathML+SVG parsing &nrightarrow; 
+PASS XHTML1.1+MathML+SVG parsing &nRightarrow; 
+PASS XHTML1.1+MathML+SVG parsing &nrtri; 
+PASS XHTML1.1+MathML+SVG parsing &nrtrie; 
+PASS XHTML1.1+MathML+SVG parsing &nsc; 
+PASS XHTML1.1+MathML+SVG parsing &nsccue; 
+PASS XHTML1.1+MathML+SVG parsing &nsce; 
+PASS XHTML1.1+MathML+SVG parsing &Nscr; 
+PASS XHTML1.1+MathML+SVG parsing &nscr; 
+PASS XHTML1.1+MathML+SVG parsing &nshortmid; 
+PASS XHTML1.1+MathML+SVG parsing &nshortparallel; 
+PASS XHTML1.1+MathML+SVG parsing &nsim; 
+PASS XHTML1.1+MathML+SVG parsing &nsime; 
+PASS XHTML1.1+MathML+SVG parsing &nsimeq; 
+PASS XHTML1.1+MathML+SVG parsing &nsmid; 
+PASS XHTML1.1+MathML+SVG parsing &nspar; 
+PASS XHTML1.1+MathML+SVG parsing &nsqsube; 
+PASS XHTML1.1+MathML+SVG parsing &nsqsupe; 
+PASS XHTML1.1+MathML+SVG parsing &nsub; 
+PASS XHTML1.1+MathML+SVG parsing &nsubE; 
+PASS XHTML1.1+MathML+SVG parsing &nsube; 
+PASS XHTML1.1+MathML+SVG parsing &nsubset; 
+PASS XHTML1.1+MathML+SVG parsing &nsubseteq; 
+PASS XHTML1.1+MathML+SVG parsing &nsubseteqq; 
+PASS XHTML1.1+MathML+SVG parsing &nsucc; 
+PASS XHTML1.1+MathML+SVG parsing &nsucceq; 
+PASS XHTML1.1+MathML+SVG parsing &nsup; 
+PASS XHTML1.1+MathML+SVG parsing &nsupE; 
+PASS XHTML1.1+MathML+SVG parsing &nsupe; 
+PASS XHTML1.1+MathML+SVG parsing &nsupset; 
+PASS XHTML1.1+MathML+SVG parsing &nsupseteq; 
+PASS XHTML1.1+MathML+SVG parsing &nsupseteqq; 
+PASS XHTML1.1+MathML+SVG parsing &ntgl; 
+PASS XHTML1.1+MathML+SVG parsing &Ntilde; 
+PASS XHTML1.1+MathML+SVG parsing &ntilde; 
+PASS XHTML1.1+MathML+SVG parsing &ntlg; 
+PASS XHTML1.1+MathML+SVG parsing &ntriangleleft; 
+PASS XHTML1.1+MathML+SVG parsing &ntrianglelefteq; 
+PASS XHTML1.1+MathML+SVG parsing &ntriangleright; 
+PASS XHTML1.1+MathML+SVG parsing &ntrianglerighteq; 
+PASS XHTML1.1+MathML+SVG parsing &Nu; 
+PASS XHTML1.1+MathML+SVG parsing &nu; 
+PASS XHTML1.1+MathML+SVG parsing &num; 
+PASS XHTML1.1+MathML+SVG parsing &numero; 
+PASS XHTML1.1+MathML+SVG parsing &numsp; 
+PASS XHTML1.1+MathML+SVG parsing &nvap; 
+PASS XHTML1.1+MathML+SVG parsing &nvdash; 
+PASS XHTML1.1+MathML+SVG parsing &nvDash; 
+PASS XHTML1.1+MathML+SVG parsing &nVdash; 
+PASS XHTML1.1+MathML+SVG parsing &nVDash; 
+PASS XHTML1.1+MathML+SVG parsing &nvge; 
+PASS XHTML1.1+MathML+SVG parsing &nvgt; 
+PASS XHTML1.1+MathML+SVG parsing &nvHarr; 
+PASS XHTML1.1+MathML+SVG parsing &nvinfin; 
+PASS XHTML1.1+MathML+SVG parsing &nvlArr; 
+PASS XHTML1.1+MathML+SVG parsing &nvle; 
+FAIL XHTML1.1+MathML+SVG parsing &nvlt; assert_equals: XHTML1.1+MathML+SVG parsing the entity reference caused a parse error; expected 3 but got 1
+PASS XHTML1.1+MathML+SVG parsing &nvltrie; 
+PASS XHTML1.1+MathML+SVG parsing &nvrArr; 
+PASS XHTML1.1+MathML+SVG parsing &nvrtrie; 
+PASS XHTML1.1+MathML+SVG parsing &nvsim; 
+PASS XHTML1.1+MathML+SVG parsing &nwarhk; 
+PASS XHTML1.1+MathML+SVG parsing &nwarr; 
+PASS XHTML1.1+MathML+SVG parsing &nwArr; 
+PASS XHTML1.1+MathML+SVG parsing &nwarrow; 
+PASS XHTML1.1+MathML+SVG parsing &nwnear; 
+PASS XHTML1.1+MathML+SVG parsing &Oacute; 
+PASS XHTML1.1+MathML+SVG parsing &oacute; 
+PASS XHTML1.1+MathML+SVG parsing &oast; 
+PASS XHTML1.1+MathML+SVG parsing &Ocirc; 
+PASS XHTML1.1+MathML+SVG parsing &ocirc; 
+PASS XHTML1.1+MathML+SVG parsing &ocir; 
+PASS XHTML1.1+MathML+SVG parsing &Ocy; 
+PASS XHTML1.1+MathML+SVG parsing &ocy; 
+PASS XHTML1.1+MathML+SVG parsing &odash; 
+PASS XHTML1.1+MathML+SVG parsing &Odblac; 
+PASS XHTML1.1+MathML+SVG parsing &odblac; 
+PASS XHTML1.1+MathML+SVG parsing &odiv; 
+PASS XHTML1.1+MathML+SVG parsing &odot; 
+PASS XHTML1.1+MathML+SVG parsing &odsold; 
+PASS XHTML1.1+MathML+SVG parsing &OElig; 
+PASS XHTML1.1+MathML+SVG parsing &oelig; 
+PASS XHTML1.1+MathML+SVG parsing &ofcir; 
+PASS XHTML1.1+MathML+SVG parsing &Ofr; 
+PASS XHTML1.1+MathML+SVG parsing &ofr; 
+PASS XHTML1.1+MathML+SVG parsing &ogon; 
+PASS XHTML1.1+MathML+SVG parsing &Ograve; 
+PASS XHTML1.1+MathML+SVG parsing &ograve; 
+PASS XHTML1.1+MathML+SVG parsing &ogt; 
+PASS XHTML1.1+MathML+SVG parsing &ohbar; 
+PASS XHTML1.1+MathML+SVG parsing &ohm; 
+PASS XHTML1.1+MathML+SVG parsing &oint; 
+PASS XHTML1.1+MathML+SVG parsing &olarr; 
+PASS XHTML1.1+MathML+SVG parsing &olcir; 
+PASS XHTML1.1+MathML+SVG parsing &olcross; 
+PASS XHTML1.1+MathML+SVG parsing &oline; 
+PASS XHTML1.1+MathML+SVG parsing &olt; 
+PASS XHTML1.1+MathML+SVG parsing &Omacr; 
+PASS XHTML1.1+MathML+SVG parsing &omacr; 
+PASS XHTML1.1+MathML+SVG parsing &Omega; 
+PASS XHTML1.1+MathML+SVG parsing &omega; 
+PASS XHTML1.1+MathML+SVG parsing &Omicron; 
+PASS XHTML1.1+MathML+SVG parsing &omicron; 
+PASS XHTML1.1+MathML+SVG parsing &omid; 
+PASS XHTML1.1+MathML+SVG parsing &ominus; 
+PASS XHTML1.1+MathML+SVG parsing &Oopf; 
+PASS XHTML1.1+MathML+SVG parsing &oopf; 
+PASS XHTML1.1+MathML+SVG parsing &opar; 
+PASS XHTML1.1+MathML+SVG parsing &OpenCurlyDoubleQuote; 
+PASS XHTML1.1+MathML+SVG parsing &OpenCurlyQuote; 
+PASS XHTML1.1+MathML+SVG parsing &operp; 
+PASS XHTML1.1+MathML+SVG parsing &oplus; 
+PASS XHTML1.1+MathML+SVG parsing &orarr; 
+PASS XHTML1.1+MathML+SVG parsing &Or; 
+PASS XHTML1.1+MathML+SVG parsing &or; 
+PASS XHTML1.1+MathML+SVG parsing &ord; 
+PASS XHTML1.1+MathML+SVG parsing &order; 
+PASS XHTML1.1+MathML+SVG parsing &orderof; 
+PASS XHTML1.1+MathML+SVG parsing &ordf; 
+PASS XHTML1.1+MathML+SVG parsing &ordm; 
+PASS XHTML1.1+MathML+SVG parsing &origof; 
+PASS XHTML1.1+MathML+SVG parsing &oror; 
+PASS XHTML1.1+MathML+SVG parsing &orslope; 
+PASS XHTML1.1+MathML+SVG parsing &orv; 
+PASS XHTML1.1+MathML+SVG parsing &oS; 
+PASS XHTML1.1+MathML+SVG parsing &Oscr; 
+PASS XHTML1.1+MathML+SVG parsing &oscr; 
+PASS XHTML1.1+MathML+SVG parsing &Oslash; 
+PASS XHTML1.1+MathML+SVG parsing &oslash; 
+PASS XHTML1.1+MathML+SVG parsing &osol; 
+PASS XHTML1.1+MathML+SVG parsing &Otilde; 
+PASS XHTML1.1+MathML+SVG parsing &otilde; 
+PASS XHTML1.1+MathML+SVG parsing &otimesas; 
+PASS XHTML1.1+MathML+SVG parsing &Otimes; 
+PASS XHTML1.1+MathML+SVG parsing &otimes; 
+PASS XHTML1.1+MathML+SVG parsing &Ouml; 
+PASS XHTML1.1+MathML+SVG parsing &ouml; 
+PASS XHTML1.1+MathML+SVG parsing &ovbar; 
+PASS XHTML1.1+MathML+SVG parsing &OverBar; 
+PASS XHTML1.1+MathML+SVG parsing &OverBrace; 
+PASS XHTML1.1+MathML+SVG parsing &OverBracket; 
+PASS XHTML1.1+MathML+SVG parsing &OverParenthesis; 
+PASS XHTML1.1+MathML+SVG parsing &para; 
+PASS XHTML1.1+MathML+SVG parsing &parallel; 
+PASS XHTML1.1+MathML+SVG parsing &par; 
+PASS XHTML1.1+MathML+SVG parsing &parsim; 
+PASS XHTML1.1+MathML+SVG parsing &parsl; 
+PASS XHTML1.1+MathML+SVG parsing &part; 
+PASS XHTML1.1+MathML+SVG parsing &PartialD; 
+PASS XHTML1.1+MathML+SVG parsing &Pcy; 
+PASS XHTML1.1+MathML+SVG parsing &pcy; 
+PASS XHTML1.1+MathML+SVG parsing &percnt; 
+PASS XHTML1.1+MathML+SVG parsing &period; 
+PASS XHTML1.1+MathML+SVG parsing &permil; 
+PASS XHTML1.1+MathML+SVG parsing &perp; 
+PASS XHTML1.1+MathML+SVG parsing &pertenk; 
+PASS XHTML1.1+MathML+SVG parsing &Pfr; 
+PASS XHTML1.1+MathML+SVG parsing &pfr; 
+PASS XHTML1.1+MathML+SVG parsing &Phi; 
+PASS XHTML1.1+MathML+SVG parsing &phi; 
+PASS XHTML1.1+MathML+SVG parsing &phiv; 
+PASS XHTML1.1+MathML+SVG parsing &phmmat; 
+PASS XHTML1.1+MathML+SVG parsing &phone; 
+PASS XHTML1.1+MathML+SVG parsing &Pi; 
+PASS XHTML1.1+MathML+SVG parsing &pi; 
+PASS XHTML1.1+MathML+SVG parsing &pitchfork; 
+PASS XHTML1.1+MathML+SVG parsing &piv; 
+PASS XHTML1.1+MathML+SVG parsing &planck; 
+PASS XHTML1.1+MathML+SVG parsing &planckh; 
+PASS XHTML1.1+MathML+SVG parsing &plankv; 
+PASS XHTML1.1+MathML+SVG parsing &plusacir; 
+PASS XHTML1.1+MathML+SVG parsing &plusb; 
+PASS XHTML1.1+MathML+SVG parsing &pluscir; 
+PASS XHTML1.1+MathML+SVG parsing &plus; 
+PASS XHTML1.1+MathML+SVG parsing &plusdo; 
+PASS XHTML1.1+MathML+SVG parsing &plusdu; 
+PASS XHTML1.1+MathML+SVG parsing &pluse; 
+PASS XHTML1.1+MathML+SVG parsing &PlusMinus; 
+PASS XHTML1.1+MathML+SVG parsing &plusmn; 
+PASS XHTML1.1+MathML+SVG parsing &plussim; 
+PASS XHTML1.1+MathML+SVG parsing &plustwo; 
+PASS XHTML1.1+MathML+SVG parsing &pm; 
+PASS XHTML1.1+MathML+SVG parsing &Poincareplane; 
+PASS XHTML1.1+MathML+SVG parsing &pointint; 
+PASS XHTML1.1+MathML+SVG parsing &popf; 
+PASS XHTML1.1+MathML+SVG parsing &Popf; 
+PASS XHTML1.1+MathML+SVG parsing &pound; 
+PASS XHTML1.1+MathML+SVG parsing &prap; 
+PASS XHTML1.1+MathML+SVG parsing &Pr; 
+PASS XHTML1.1+MathML+SVG parsing &pr; 
+PASS XHTML1.1+MathML+SVG parsing &prcue; 
+PASS XHTML1.1+MathML+SVG parsing &precapprox; 
+PASS XHTML1.1+MathML+SVG parsing &prec; 
+PASS XHTML1.1+MathML+SVG parsing &preccurlyeq; 
+PASS XHTML1.1+MathML+SVG parsing &Precedes; 
+PASS XHTML1.1+MathML+SVG parsing &PrecedesEqual; 
+PASS XHTML1.1+MathML+SVG parsing &PrecedesSlantEqual; 
+PASS XHTML1.1+MathML+SVG parsing &PrecedesTilde; 
+PASS XHTML1.1+MathML+SVG parsing &preceq; 
+PASS XHTML1.1+MathML+SVG parsing &precnapprox; 
+PASS XHTML1.1+MathML+SVG parsing &precneqq; 
+PASS XHTML1.1+MathML+SVG parsing &precnsim; 
+PASS XHTML1.1+MathML+SVG parsing &pre; 
+PASS XHTML1.1+MathML+SVG parsing &prE; 
+PASS XHTML1.1+MathML+SVG parsing &precsim; 
+PASS XHTML1.1+MathML+SVG parsing &prime; 
+PASS XHTML1.1+MathML+SVG parsing &Prime; 
+PASS XHTML1.1+MathML+SVG parsing &primes; 
+PASS XHTML1.1+MathML+SVG parsing &prnap; 
+PASS XHTML1.1+MathML+SVG parsing &prnE; 
+PASS XHTML1.1+MathML+SVG parsing &prnsim; 
+PASS XHTML1.1+MathML+SVG parsing &prod; 
+PASS XHTML1.1+MathML+SVG parsing &Product; 
+PASS XHTML1.1+MathML+SVG parsing &profalar; 
+PASS XHTML1.1+MathML+SVG parsing &profline; 
+PASS XHTML1.1+MathML+SVG parsing &profsurf; 
+PASS XHTML1.1+MathML+SVG parsing &prop; 
+PASS XHTML1.1+MathML+SVG parsing &Proportional; 
+PASS XHTML1.1+MathML+SVG parsing &Proportion; 
+PASS XHTML1.1+MathML+SVG parsing &propto; 
+PASS XHTML1.1+MathML+SVG parsing &prsim; 
+PASS XHTML1.1+MathML+SVG parsing &prurel; 
+PASS XHTML1.1+MathML+SVG parsing &Pscr; 
+PASS XHTML1.1+MathML+SVG parsing &pscr; 
+PASS XHTML1.1+MathML+SVG parsing &Psi; 
+PASS XHTML1.1+MathML+SVG parsing &psi; 
+PASS XHTML1.1+MathML+SVG parsing &puncsp; 
+PASS XHTML1.1+MathML+SVG parsing &Qfr; 
+PASS XHTML1.1+MathML+SVG parsing &qfr; 
+PASS XHTML1.1+MathML+SVG parsing &qint; 
+PASS XHTML1.1+MathML+SVG parsing &qopf; 
+PASS XHTML1.1+MathML+SVG parsing &Qopf; 
+PASS XHTML1.1+MathML+SVG parsing &qprime; 
+PASS XHTML1.1+MathML+SVG parsing &Qscr; 
+PASS XHTML1.1+MathML+SVG parsing &qscr; 
+PASS XHTML1.1+MathML+SVG parsing &quaternions; 
+PASS XHTML1.1+MathML+SVG parsing &quatint; 
+PASS XHTML1.1+MathML+SVG parsing &quest; 
+PASS XHTML1.1+MathML+SVG parsing &questeq; 
+PASS XHTML1.1+MathML+SVG parsing &quot; 
+PASS XHTML1.1+MathML+SVG parsing &QUOT; 
+PASS XHTML1.1+MathML+SVG parsing &rAarr; 
+PASS XHTML1.1+MathML+SVG parsing &race; 
+PASS XHTML1.1+MathML+SVG parsing &Racute; 
+PASS XHTML1.1+MathML+SVG parsing &racute; 
+PASS XHTML1.1+MathML+SVG parsing &radic; 
+PASS XHTML1.1+MathML+SVG parsing &raemptyv; 
+PASS XHTML1.1+MathML+SVG parsing &rang; 
+PASS XHTML1.1+MathML+SVG parsing &Rang; 
+PASS XHTML1.1+MathML+SVG parsing &rangd; 
+PASS XHTML1.1+MathML+SVG parsing &range; 
+PASS XHTML1.1+MathML+SVG parsing &rangle; 
+PASS XHTML1.1+MathML+SVG parsing &raquo; 
+PASS XHTML1.1+MathML+SVG parsing &rarrap; 
+PASS XHTML1.1+MathML+SVG parsing &rarrb; 
+PASS XHTML1.1+MathML+SVG parsing &rarrbfs; 
+PASS XHTML1.1+MathML+SVG parsing &rarrc; 
+PASS XHTML1.1+MathML+SVG parsing &rarr; 
+PASS XHTML1.1+MathML+SVG parsing &Rarr; 
+PASS XHTML1.1+MathML+SVG parsing &rArr; 
+PASS XHTML1.1+MathML+SVG parsing &rarrfs; 
+PASS XHTML1.1+MathML+SVG parsing &rarrhk; 
+PASS XHTML1.1+MathML+SVG parsing &rarrlp; 
+PASS XHTML1.1+MathML+SVG parsing &rarrpl; 
+PASS XHTML1.1+MathML+SVG parsing &rarrsim; 
+PASS XHTML1.1+MathML+SVG parsing &Rarrtl; 
+PASS XHTML1.1+MathML+SVG parsing &rarrtl; 
+PASS XHTML1.1+MathML+SVG parsing &rarrw; 
+PASS XHTML1.1+MathML+SVG parsing &ratail; 
+PASS XHTML1.1+MathML+SVG parsing &rAtail; 
+PASS XHTML1.1+MathML+SVG parsing &ratio; 
+PASS XHTML1.1+MathML+SVG parsing &rationals; 
+PASS XHTML1.1+MathML+SVG parsing &rbarr; 
+PASS XHTML1.1+MathML+SVG parsing &rBarr; 
+PASS XHTML1.1+MathML+SVG parsing &RBarr; 
+PASS XHTML1.1+MathML+SVG parsing &rbbrk; 
+PASS XHTML1.1+MathML+SVG parsing &rbrace; 
+PASS XHTML1.1+MathML+SVG parsing &rbrack; 
+PASS XHTML1.1+MathML+SVG parsing &rbrke; 
+PASS XHTML1.1+MathML+SVG parsing &rbrksld; 
+PASS XHTML1.1+MathML+SVG parsing &rbrkslu; 
+PASS XHTML1.1+MathML+SVG parsing &Rcaron; 
+PASS XHTML1.1+MathML+SVG parsing &rcaron; 
+PASS XHTML1.1+MathML+SVG parsing &Rcedil; 
+PASS XHTML1.1+MathML+SVG parsing &rcedil; 
+PASS XHTML1.1+MathML+SVG parsing &rceil; 
+PASS XHTML1.1+MathML+SVG parsing &rcub; 
+PASS XHTML1.1+MathML+SVG parsing &Rcy; 
+PASS XHTML1.1+MathML+SVG parsing &rcy; 
+PASS XHTML1.1+MathML+SVG parsing &rdca; 
+PASS XHTML1.1+MathML+SVG parsing &rdldhar; 
+PASS XHTML1.1+MathML+SVG parsing &rdquo; 
+PASS XHTML1.1+MathML+SVG parsing &rdquor; 
+PASS XHTML1.1+MathML+SVG parsing &rdsh; 
+PASS XHTML1.1+MathML+SVG parsing &real; 
+PASS XHTML1.1+MathML+SVG parsing &realine; 
+PASS XHTML1.1+MathML+SVG parsing &realpart; 
+PASS XHTML1.1+MathML+SVG parsing &reals; 
+PASS XHTML1.1+MathML+SVG parsing &Re; 
+PASS XHTML1.1+MathML+SVG parsing &rect; 
+PASS XHTML1.1+MathML+SVG parsing &reg; 
+PASS XHTML1.1+MathML+SVG parsing &REG; 
+PASS XHTML1.1+MathML+SVG parsing &ReverseElement; 
+PASS XHTML1.1+MathML+SVG parsing &ReverseEquilibrium; 
+PASS XHTML1.1+MathML+SVG parsing &ReverseUpEquilibrium; 
+PASS XHTML1.1+MathML+SVG parsing &rfisht; 
+PASS XHTML1.1+MathML+SVG parsing &rfloor; 
+PASS XHTML1.1+MathML+SVG parsing &rfr; 
+PASS XHTML1.1+MathML+SVG parsing &Rfr; 
+PASS XHTML1.1+MathML+SVG parsing &rHar; 
+PASS XHTML1.1+MathML+SVG parsing &rhard; 
+PASS XHTML1.1+MathML+SVG parsing &rharu; 
+PASS XHTML1.1+MathML+SVG parsing &rharul; 
+PASS XHTML1.1+MathML+SVG parsing &Rho; 
+PASS XHTML1.1+MathML+SVG parsing &rho; 
+PASS XHTML1.1+MathML+SVG parsing &rhov; 
+PASS XHTML1.1+MathML+SVG parsing &RightAngleBracket; 
+PASS XHTML1.1+MathML+SVG parsing &RightArrowBar; 
+PASS XHTML1.1+MathML+SVG parsing &rightarrow; 
+PASS XHTML1.1+MathML+SVG parsing &RightArrow; 
+PASS XHTML1.1+MathML+SVG parsing &Rightarrow; 
+PASS XHTML1.1+MathML+SVG parsing &RightArrowLeftArrow; 
+PASS XHTML1.1+MathML+SVG parsing &rightarrowtail; 
+PASS XHTML1.1+MathML+SVG parsing &RightCeiling; 
+PASS XHTML1.1+MathML+SVG parsing &RightDoubleBracket; 
+PASS XHTML1.1+MathML+SVG parsing &RightDownTeeVector; 
+PASS XHTML1.1+MathML+SVG parsing &RightDownVectorBar; 
+PASS XHTML1.1+MathML+SVG parsing &RightDownVector; 
+PASS XHTML1.1+MathML+SVG parsing &RightFloor; 
+PASS XHTML1.1+MathML+SVG parsing &rightharpoondown; 
+PASS XHTML1.1+MathML+SVG parsing &rightharpoonup; 
+PASS XHTML1.1+MathML+SVG parsing &rightleftarrows; 
+PASS XHTML1.1+MathML+SVG parsing &rightleftharpoons; 
+PASS XHTML1.1+MathML+SVG parsing &rightrightarrows; 
+PASS XHTML1.1+MathML+SVG parsing &rightsquigarrow; 
+PASS XHTML1.1+MathML+SVG parsing &RightTeeArrow; 
+PASS XHTML1.1+MathML+SVG parsing &RightTee; 
+PASS XHTML1.1+MathML+SVG parsing &RightTeeVector; 
+PASS XHTML1.1+MathML+SVG parsing &rightthreetimes; 
+PASS XHTML1.1+MathML+SVG parsing &RightTriangleBar; 
+PASS XHTML1.1+MathML+SVG parsing &RightTriangle; 
+PASS XHTML1.1+MathML+SVG parsing &RightTriangleEqual; 
+PASS XHTML1.1+MathML+SVG parsing &RightUpDownVector; 
+PASS XHTML1.1+MathML+SVG parsing &RightUpTeeVector; 
+PASS XHTML1.1+MathML+SVG parsing &RightUpVectorBar; 
+PASS XHTML1.1+MathML+SVG parsing &RightUpVector; 
+PASS XHTML1.1+MathML+SVG parsing &RightVectorBar; 
+PASS XHTML1.1+MathML+SVG parsing &RightVector; 
+PASS XHTML1.1+MathML+SVG parsing &ring; 
+PASS XHTML1.1+MathML+SVG parsing &risingdotseq; 
+PASS XHTML1.1+MathML+SVG parsing &rlarr; 
+PASS XHTML1.1+MathML+SVG parsing &rlhar; 
+PASS XHTML1.1+MathML+SVG parsing &rlm; 
+PASS XHTML1.1+MathML+SVG parsing &rmoustache; 
+PASS XHTML1.1+MathML+SVG parsing &rmoust; 
+PASS XHTML1.1+MathML+SVG parsing &rnmid; 
+PASS XHTML1.1+MathML+SVG parsing &roang; 
+PASS XHTML1.1+MathML+SVG parsing &roarr; 
+PASS XHTML1.1+MathML+SVG parsing &robrk; 
+PASS XHTML1.1+MathML+SVG parsing &ropar; 
+PASS XHTML1.1+MathML+SVG parsing &ropf; 
+PASS XHTML1.1+MathML+SVG parsing &Ropf; 
+PASS XHTML1.1+MathML+SVG parsing &roplus; 
+PASS XHTML1.1+MathML+SVG parsing &rotimes; 
+PASS XHTML1.1+MathML+SVG parsing &RoundImplies; 
+PASS XHTML1.1+MathML+SVG parsing &rpar; 
+PASS XHTML1.1+MathML+SVG parsing &rpargt; 
+PASS XHTML1.1+MathML+SVG parsing &rppolint; 
+PASS XHTML1.1+MathML+SVG parsing &rrarr; 
+PASS XHTML1.1+MathML+SVG parsing &Rrightarrow; 
+PASS XHTML1.1+MathML+SVG parsing &rsaquo; 
+PASS XHTML1.1+MathML+SVG parsing &rscr; 
+PASS XHTML1.1+MathML+SVG parsing &Rscr; 
+PASS XHTML1.1+MathML+SVG parsing &rsh; 
+PASS XHTML1.1+MathML+SVG parsing &Rsh; 
+PASS XHTML1.1+MathML+SVG parsing &rsqb; 
+PASS XHTML1.1+MathML+SVG parsing &rsquo; 
+PASS XHTML1.1+MathML+SVG parsing &rsquor; 
+PASS XHTML1.1+MathML+SVG parsing &rthree; 
+PASS XHTML1.1+MathML+SVG parsing &rtimes; 
+PASS XHTML1.1+MathML+SVG parsing &rtri; 
+PASS XHTML1.1+MathML+SVG parsing &rtrie; 
+PASS XHTML1.1+MathML+SVG parsing &rtrif; 
+PASS XHTML1.1+MathML+SVG parsing &rtriltri; 
+PASS XHTML1.1+MathML+SVG parsing &RuleDelayed; 
+PASS XHTML1.1+MathML+SVG parsing &ruluhar; 
+PASS XHTML1.1+MathML+SVG parsing &rx; 
+PASS XHTML1.1+MathML+SVG parsing &Sacute; 
+PASS XHTML1.1+MathML+SVG parsing &sacute; 
+PASS XHTML1.1+MathML+SVG parsing &sbquo; 
+PASS XHTML1.1+MathML+SVG parsing &scap; 
+PASS XHTML1.1+MathML+SVG parsing &Scaron; 
+PASS XHTML1.1+MathML+SVG parsing &scaron; 
+PASS XHTML1.1+MathML+SVG parsing &Sc; 
+PASS XHTML1.1+MathML+SVG parsing &sc; 
+PASS XHTML1.1+MathML+SVG parsing &sccue; 
+PASS XHTML1.1+MathML+SVG parsing &sce; 
+PASS XHTML1.1+MathML+SVG parsing &scE; 
+PASS XHTML1.1+MathML+SVG parsing &Scedil; 
+PASS XHTML1.1+MathML+SVG parsing &scedil; 
+PASS XHTML1.1+MathML+SVG parsing &Scirc; 
+PASS XHTML1.1+MathML+SVG parsing &scirc; 
+PASS XHTML1.1+MathML+SVG parsing &scnap; 
+PASS XHTML1.1+MathML+SVG parsing &scnE; 
+PASS XHTML1.1+MathML+SVG parsing &scnsim; 
+PASS XHTML1.1+MathML+SVG parsing &scpolint; 
+PASS XHTML1.1+MathML+SVG parsing &scsim; 
+PASS XHTML1.1+MathML+SVG parsing &Scy; 
+PASS XHTML1.1+MathML+SVG parsing &scy; 
+PASS XHTML1.1+MathML+SVG parsing &sdotb; 
+PASS XHTML1.1+MathML+SVG parsing &sdot; 
+PASS XHTML1.1+MathML+SVG parsing &sdote; 
+PASS XHTML1.1+MathML+SVG parsing &searhk; 
+PASS XHTML1.1+MathML+SVG parsing &searr; 
+PASS XHTML1.1+MathML+SVG parsing &seArr; 
+PASS XHTML1.1+MathML+SVG parsing &searrow; 
+PASS XHTML1.1+MathML+SVG parsing &sect; 
+PASS XHTML1.1+MathML+SVG parsing &semi; 
+PASS XHTML1.1+MathML+SVG parsing &seswar; 
+PASS XHTML1.1+MathML+SVG parsing &setminus; 
+PASS XHTML1.1+MathML+SVG parsing &setmn; 
+PASS XHTML1.1+MathML+SVG parsing &sext; 
+PASS XHTML1.1+MathML+SVG parsing &Sfr; 
+PASS XHTML1.1+MathML+SVG parsing &sfr; 
+PASS XHTML1.1+MathML+SVG parsing &sfrown; 
+PASS XHTML1.1+MathML+SVG parsing &sharp; 
+PASS XHTML1.1+MathML+SVG parsing &SHCHcy; 
+PASS XHTML1.1+MathML+SVG parsing &shchcy; 
+PASS XHTML1.1+MathML+SVG parsing &SHcy; 
+PASS XHTML1.1+MathML+SVG parsing &shcy; 
+PASS XHTML1.1+MathML+SVG parsing &ShortDownArrow; 
+PASS XHTML1.1+MathML+SVG parsing &ShortLeftArrow; 
+PASS XHTML1.1+MathML+SVG parsing &shortmid; 
+PASS XHTML1.1+MathML+SVG parsing &shortparallel; 
+PASS XHTML1.1+MathML+SVG parsing &ShortRightArrow; 
+PASS XHTML1.1+MathML+SVG parsing &ShortUpArrow; 
+PASS XHTML1.1+MathML+SVG parsing &shy; 
+PASS XHTML1.1+MathML+SVG parsing &Sigma; 
+PASS XHTML1.1+MathML+SVG parsing &sigma; 
+PASS XHTML1.1+MathML+SVG parsing &sigmaf; 
+PASS XHTML1.1+MathML+SVG parsing &sigmav; 
+PASS XHTML1.1+MathML+SVG parsing &sim; 
+PASS XHTML1.1+MathML+SVG parsing &simdot; 
+PASS XHTML1.1+MathML+SVG parsing &sime; 
+PASS XHTML1.1+MathML+SVG parsing &simeq; 
+PASS XHTML1.1+MathML+SVG parsing &simg; 
+PASS XHTML1.1+MathML+SVG parsing &simgE; 
+PASS XHTML1.1+MathML+SVG parsing &siml; 
+PASS XHTML1.1+MathML+SVG parsing &simlE; 
+PASS XHTML1.1+MathML+SVG parsing &simne; 
+PASS XHTML1.1+MathML+SVG parsing &simplus; 
+PASS XHTML1.1+MathML+SVG parsing &simrarr; 
+PASS XHTML1.1+MathML+SVG parsing &slarr; 
+PASS XHTML1.1+MathML+SVG parsing &SmallCircle; 
+PASS XHTML1.1+MathML+SVG parsing &smallsetminus; 
+PASS XHTML1.1+MathML+SVG parsing &smashp; 
+PASS XHTML1.1+MathML+SVG parsing &smeparsl; 
+PASS XHTML1.1+MathML+SVG parsing &smid; 
+PASS XHTML1.1+MathML+SVG parsing &smile; 
+PASS XHTML1.1+MathML+SVG parsing &smt; 
+PASS XHTML1.1+MathML+SVG parsing &smte; 
+PASS XHTML1.1+MathML+SVG parsing &smtes; 
+PASS XHTML1.1+MathML+SVG parsing &SOFTcy; 
+PASS XHTML1.1+MathML+SVG parsing &softcy; 
+PASS XHTML1.1+MathML+SVG parsing &solbar; 
+PASS XHTML1.1+MathML+SVG parsing &solb; 
+PASS XHTML1.1+MathML+SVG parsing &sol; 
+PASS XHTML1.1+MathML+SVG parsing &Sopf; 
+PASS XHTML1.1+MathML+SVG parsing &sopf; 
+PASS XHTML1.1+MathML+SVG parsing &spades; 
+PASS XHTML1.1+MathML+SVG parsing &spadesuit; 
+PASS XHTML1.1+MathML+SVG parsing &spar; 
+PASS XHTML1.1+MathML+SVG parsing &sqcap; 
+PASS XHTML1.1+MathML+SVG parsing &sqcaps; 
+PASS XHTML1.1+MathML+SVG parsing &sqcup; 
+PASS XHTML1.1+MathML+SVG parsing &sqcups; 
+PASS XHTML1.1+MathML+SVG parsing &Sqrt; 
+PASS XHTML1.1+MathML+SVG parsing &sqsub; 
+PASS XHTML1.1+MathML+SVG parsing &sqsube; 
+PASS XHTML1.1+MathML+SVG parsing &sqsubset; 
+PASS XHTML1.1+MathML+SVG parsing &sqsubseteq; 
+PASS XHTML1.1+MathML+SVG parsing &sqsup; 
+PASS XHTML1.1+MathML+SVG parsing &sqsupe; 
+PASS XHTML1.1+MathML+SVG parsing &sqsupset; 
+PASS XHTML1.1+MathML+SVG parsing &sqsupseteq; 
+PASS XHTML1.1+MathML+SVG parsing &square; 
+PASS XHTML1.1+MathML+SVG parsing &Square; 
+PASS XHTML1.1+MathML+SVG parsing &SquareIntersection; 
+PASS XHTML1.1+MathML+SVG parsing &SquareSubset; 
+PASS XHTML1.1+MathML+SVG parsing &SquareSubsetEqual; 
+PASS XHTML1.1+MathML+SVG parsing &SquareSuperset; 
+PASS XHTML1.1+MathML+SVG parsing &SquareSupersetEqual; 
+PASS XHTML1.1+MathML+SVG parsing &SquareUnion; 
+PASS XHTML1.1+MathML+SVG parsing &squarf; 
+PASS XHTML1.1+MathML+SVG parsing &squ; 
+PASS XHTML1.1+MathML+SVG parsing &squf; 
+PASS XHTML1.1+MathML+SVG parsing &srarr; 
+PASS XHTML1.1+MathML+SVG parsing &Sscr; 
+PASS XHTML1.1+MathML+SVG parsing &sscr; 
+PASS XHTML1.1+MathML+SVG parsing &ssetmn; 
+PASS XHTML1.1+MathML+SVG parsing &ssmile; 
+PASS XHTML1.1+MathML+SVG parsing &sstarf; 
+PASS XHTML1.1+MathML+SVG parsing &Star; 
+PASS XHTML1.1+MathML+SVG parsing &star; 
+PASS XHTML1.1+MathML+SVG parsing &starf; 
+PASS XHTML1.1+MathML+SVG parsing &straightepsilon; 
+PASS XHTML1.1+MathML+SVG parsing &straightphi; 
+PASS XHTML1.1+MathML+SVG parsing &strns; 
+PASS XHTML1.1+MathML+SVG parsing &sub; 
+PASS XHTML1.1+MathML+SVG parsing &Sub; 
+PASS XHTML1.1+MathML+SVG parsing &subdot; 
+PASS XHTML1.1+MathML+SVG parsing &subE; 
+PASS XHTML1.1+MathML+SVG parsing &sube; 
+PASS XHTML1.1+MathML+SVG parsing &subedot; 
+PASS XHTML1.1+MathML+SVG parsing &submult; 
+PASS XHTML1.1+MathML+SVG parsing &subnE; 
+PASS XHTML1.1+MathML+SVG parsing &subne; 
+PASS XHTML1.1+MathML+SVG parsing &subplus; 
+PASS XHTML1.1+MathML+SVG parsing &subrarr; 
+PASS XHTML1.1+MathML+SVG parsing &subset; 
+PASS XHTML1.1+MathML+SVG parsing &Subset; 
+PASS XHTML1.1+MathML+SVG parsing &subseteq; 
+PASS XHTML1.1+MathML+SVG parsing &subseteqq; 
+PASS XHTML1.1+MathML+SVG parsing &SubsetEqual; 
+PASS XHTML1.1+MathML+SVG parsing &subsetneq; 
+PASS XHTML1.1+MathML+SVG parsing &subsetneqq; 
+PASS XHTML1.1+MathML+SVG parsing &subsim; 
+PASS XHTML1.1+MathML+SVG parsing &subsub; 
+PASS XHTML1.1+MathML+SVG parsing &subsup; 
+PASS XHTML1.1+MathML+SVG parsing &succapprox; 
+PASS XHTML1.1+MathML+SVG parsing &succ; 
+PASS XHTML1.1+MathML+SVG parsing &succcurlyeq; 
+PASS XHTML1.1+MathML+SVG parsing &Succeeds; 
+PASS XHTML1.1+MathML+SVG parsing &SucceedsEqual; 
+PASS XHTML1.1+MathML+SVG parsing &SucceedsSlantEqual; 
+PASS XHTML1.1+MathML+SVG parsing &SucceedsTilde; 
+PASS XHTML1.1+MathML+SVG parsing &succeq; 
+PASS XHTML1.1+MathML+SVG parsing &succnapprox; 
+PASS XHTML1.1+MathML+SVG parsing &succneqq; 
+PASS XHTML1.1+MathML+SVG parsing &succnsim; 
+PASS XHTML1.1+MathML+SVG parsing &succsim; 
+PASS XHTML1.1+MathML+SVG parsing &SuchThat; 
+PASS XHTML1.1+MathML+SVG parsing &sum; 
+PASS XHTML1.1+MathML+SVG parsing &Sum; 
+PASS XHTML1.1+MathML+SVG parsing &sung; 
+PASS XHTML1.1+MathML+SVG parsing &sup1; 
+PASS XHTML1.1+MathML+SVG parsing &sup2; 
+PASS XHTML1.1+MathML+SVG parsing &sup3; 
+PASS XHTML1.1+MathML+SVG parsing &sup; 
+PASS XHTML1.1+MathML+SVG parsing &Sup; 
+PASS XHTML1.1+MathML+SVG parsing &supdot; 
+PASS XHTML1.1+MathML+SVG parsing &supdsub; 
+PASS XHTML1.1+MathML+SVG parsing &supE; 
+PASS XHTML1.1+MathML+SVG parsing &supe; 
+PASS XHTML1.1+MathML+SVG parsing &supedot; 
+PASS XHTML1.1+MathML+SVG parsing &Superset; 
+PASS XHTML1.1+MathML+SVG parsing &SupersetEqual; 
+PASS XHTML1.1+MathML+SVG parsing &suphsol; 
+PASS XHTML1.1+MathML+SVG parsing &suphsub; 
+PASS XHTML1.1+MathML+SVG parsing &suplarr; 
+PASS XHTML1.1+MathML+SVG parsing &supmult; 
+PASS XHTML1.1+MathML+SVG parsing &supnE; 
+PASS XHTML1.1+MathML+SVG parsing &supne; 
+PASS XHTML1.1+MathML+SVG parsing &supplus; 
+PASS XHTML1.1+MathML+SVG parsing &supset; 
+PASS XHTML1.1+MathML+SVG parsing &Supset; 
+PASS XHTML1.1+MathML+SVG parsing &supseteq; 
+PASS XHTML1.1+MathML+SVG parsing &supseteqq; 
+PASS XHTML1.1+MathML+SVG parsing &supsetneq; 
+PASS XHTML1.1+MathML+SVG parsing &supsetneqq; 
+PASS XHTML1.1+MathML+SVG parsing &supsim; 
+PASS XHTML1.1+MathML+SVG parsing &supsub; 
+PASS XHTML1.1+MathML+SVG parsing &supsup; 
+PASS XHTML1.1+MathML+SVG parsing &swarhk; 
+PASS XHTML1.1+MathML+SVG parsing &swarr; 
+PASS XHTML1.1+MathML+SVG parsing &swArr; 
+PASS XHTML1.1+MathML+SVG parsing &swarrow; 
+PASS XHTML1.1+MathML+SVG parsing &swnwar; 
+PASS XHTML1.1+MathML+SVG parsing &szlig; 
+PASS XHTML1.1+MathML+SVG parsing &Tab; 
+PASS XHTML1.1+MathML+SVG parsing &target; 
+PASS XHTML1.1+MathML+SVG parsing &Tau; 
+PASS XHTML1.1+MathML+SVG parsing &tau; 
+PASS XHTML1.1+MathML+SVG parsing &tbrk; 
+PASS XHTML1.1+MathML+SVG parsing &Tcaron; 
+PASS XHTML1.1+MathML+SVG parsing &tcaron; 
+PASS XHTML1.1+MathML+SVG parsing &Tcedil; 
+PASS XHTML1.1+MathML+SVG parsing &tcedil; 
+PASS XHTML1.1+MathML+SVG parsing &Tcy; 
+PASS XHTML1.1+MathML+SVG parsing &tcy; 
+PASS XHTML1.1+MathML+SVG parsing &tdot; 
+PASS XHTML1.1+MathML+SVG parsing &telrec; 
+PASS XHTML1.1+MathML+SVG parsing &Tfr; 
+PASS XHTML1.1+MathML+SVG parsing &tfr; 
+PASS XHTML1.1+MathML+SVG parsing &there4; 
+PASS XHTML1.1+MathML+SVG parsing &therefore; 
+PASS XHTML1.1+MathML+SVG parsing &Therefore; 
+PASS XHTML1.1+MathML+SVG parsing &Theta; 
+PASS XHTML1.1+MathML+SVG parsing &theta; 
+PASS XHTML1.1+MathML+SVG parsing &thetasym; 
+PASS XHTML1.1+MathML+SVG parsing &thetav; 
+PASS XHTML1.1+MathML+SVG parsing &thickapprox; 
+PASS XHTML1.1+MathML+SVG parsing &thicksim; 
+PASS XHTML1.1+MathML+SVG parsing &ThickSpace; 
+PASS XHTML1.1+MathML+SVG parsing &ThinSpace; 
+PASS XHTML1.1+MathML+SVG parsing &thinsp; 
+PASS XHTML1.1+MathML+SVG parsing &thkap; 
+PASS XHTML1.1+MathML+SVG parsing &thksim; 
+PASS XHTML1.1+MathML+SVG parsing &THORN; 
+PASS XHTML1.1+MathML+SVG parsing &thorn; 
+PASS XHTML1.1+MathML+SVG parsing &tilde; 
+PASS XHTML1.1+MathML+SVG parsing &Tilde; 
+PASS XHTML1.1+MathML+SVG parsing &TildeEqual; 
+PASS XHTML1.1+MathML+SVG parsing &TildeFullEqual; 
+PASS XHTML1.1+MathML+SVG parsing &TildeTilde; 
+PASS XHTML1.1+MathML+SVG parsing &timesbar; 
+PASS XHTML1.1+MathML+SVG parsing &timesb; 
+PASS XHTML1.1+MathML+SVG parsing &times; 
+PASS XHTML1.1+MathML+SVG parsing &timesd; 
+PASS XHTML1.1+MathML+SVG parsing &tint; 
+PASS XHTML1.1+MathML+SVG parsing &toea; 
+PASS XHTML1.1+MathML+SVG parsing &topbot; 
+PASS XHTML1.1+MathML+SVG parsing &topcir; 
+PASS XHTML1.1+MathML+SVG parsing &top; 
+PASS XHTML1.1+MathML+SVG parsing &Topf; 
+PASS XHTML1.1+MathML+SVG parsing &topf; 
+PASS XHTML1.1+MathML+SVG parsing &topfork; 
+PASS XHTML1.1+MathML+SVG parsing &tosa; 
+PASS XHTML1.1+MathML+SVG parsing &tprime; 
+PASS XHTML1.1+MathML+SVG parsing &trade; 
+PASS XHTML1.1+MathML+SVG parsing &TRADE; 
+PASS XHTML1.1+MathML+SVG parsing &triangle; 
+PASS XHTML1.1+MathML+SVG parsing &triangledown; 
+PASS XHTML1.1+MathML+SVG parsing &triangleleft; 
+PASS XHTML1.1+MathML+SVG parsing &trianglelefteq; 
+PASS XHTML1.1+MathML+SVG parsing &triangleq; 
+PASS XHTML1.1+MathML+SVG parsing &triangleright; 
+PASS XHTML1.1+MathML+SVG parsing &trianglerighteq; 
+PASS XHTML1.1+MathML+SVG parsing &tridot; 
+PASS XHTML1.1+MathML+SVG parsing &trie; 
+PASS XHTML1.1+MathML+SVG parsing &triminus; 
+PASS XHTML1.1+MathML+SVG parsing &TripleDot; 
+PASS XHTML1.1+MathML+SVG parsing &triplus; 
+PASS XHTML1.1+MathML+SVG parsing &trisb; 
+PASS XHTML1.1+MathML+SVG parsing &tritime; 
+PASS XHTML1.1+MathML+SVG parsing &trpezium; 
+PASS XHTML1.1+MathML+SVG parsing &Tscr; 
+PASS XHTML1.1+MathML+SVG parsing &tscr; 
+PASS XHTML1.1+MathML+SVG parsing &TScy; 
+PASS XHTML1.1+MathML+SVG parsing &tscy; 
+PASS XHTML1.1+MathML+SVG parsing &TSHcy; 
+PASS XHTML1.1+MathML+SVG parsing &tshcy; 
+PASS XHTML1.1+MathML+SVG parsing &Tstrok; 
+PASS XHTML1.1+MathML+SVG parsing &tstrok; 
+PASS XHTML1.1+MathML+SVG parsing &twixt; 
+PASS XHTML1.1+MathML+SVG parsing &twoheadleftarrow; 
+PASS XHTML1.1+MathML+SVG parsing &twoheadrightarrow; 
+PASS XHTML1.1+MathML+SVG parsing &Uacute; 
+PASS XHTML1.1+MathML+SVG parsing &uacute; 
+PASS XHTML1.1+MathML+SVG parsing &uarr; 
+PASS XHTML1.1+MathML+SVG parsing &Uarr; 
+PASS XHTML1.1+MathML+SVG parsing &uArr; 
+PASS XHTML1.1+MathML+SVG parsing &Uarrocir; 
+PASS XHTML1.1+MathML+SVG parsing &Ubrcy; 
+PASS XHTML1.1+MathML+SVG parsing &ubrcy; 
+PASS XHTML1.1+MathML+SVG parsing &Ubreve; 
+PASS XHTML1.1+MathML+SVG parsing &ubreve; 
+PASS XHTML1.1+MathML+SVG parsing &Ucirc; 
+PASS XHTML1.1+MathML+SVG parsing &ucirc; 
+PASS XHTML1.1+MathML+SVG parsing &Ucy; 
+PASS XHTML1.1+MathML+SVG parsing &ucy; 
+PASS XHTML1.1+MathML+SVG parsing &udarr; 
+PASS XHTML1.1+MathML+SVG parsing &Udblac; 
+PASS XHTML1.1+MathML+SVG parsing &udblac; 
+PASS XHTML1.1+MathML+SVG parsing &udhar; 
+PASS XHTML1.1+MathML+SVG parsing &ufisht; 
+PASS XHTML1.1+MathML+SVG parsing &Ufr; 
+PASS XHTML1.1+MathML+SVG parsing &ufr; 
+PASS XHTML1.1+MathML+SVG parsing &Ugrave; 
+PASS XHTML1.1+MathML+SVG parsing &ugrave; 
+PASS XHTML1.1+MathML+SVG parsing &uHar; 
+PASS XHTML1.1+MathML+SVG parsing &uharl; 
+PASS XHTML1.1+MathML+SVG parsing &uharr; 
+PASS XHTML1.1+MathML+SVG parsing &uhblk; 
+PASS XHTML1.1+MathML+SVG parsing &ulcorn; 
+PASS XHTML1.1+MathML+SVG parsing &ulcorner; 
+PASS XHTML1.1+MathML+SVG parsing &ulcrop; 
+PASS XHTML1.1+MathML+SVG parsing &ultri; 
+PASS XHTML1.1+MathML+SVG parsing &Umacr; 
+PASS XHTML1.1+MathML+SVG parsing &umacr; 
+PASS XHTML1.1+MathML+SVG parsing &uml; 
+PASS XHTML1.1+MathML+SVG parsing &UnderBar; 
+PASS XHTML1.1+MathML+SVG parsing &UnderBrace; 
+PASS XHTML1.1+MathML+SVG parsing &UnderBracket; 
+PASS XHTML1.1+MathML+SVG parsing &UnderParenthesis; 
+PASS XHTML1.1+MathML+SVG parsing &Union; 
+PASS XHTML1.1+MathML+SVG parsing &UnionPlus; 
+PASS XHTML1.1+MathML+SVG parsing &Uogon; 
+PASS XHTML1.1+MathML+SVG parsing &uogon; 
+PASS XHTML1.1+MathML+SVG parsing &Uopf; 
+PASS XHTML1.1+MathML+SVG parsing &uopf; 
+PASS XHTML1.1+MathML+SVG parsing &UpArrowBar; 
+PASS XHTML1.1+MathML+SVG parsing &uparrow; 
+PASS XHTML1.1+MathML+SVG parsing &UpArrow; 
+PASS XHTML1.1+MathML+SVG parsing &Uparrow; 
+PASS XHTML1.1+MathML+SVG parsing &UpArrowDownArrow; 
+PASS XHTML1.1+MathML+SVG parsing &updownarrow; 
+PASS XHTML1.1+MathML+SVG parsing &UpDownArrow; 
+PASS XHTML1.1+MathML+SVG parsing &Updownarrow; 
+PASS XHTML1.1+MathML+SVG parsing &UpEquilibrium; 
+PASS XHTML1.1+MathML+SVG parsing &upharpoonleft; 
+PASS XHTML1.1+MathML+SVG parsing &upharpoonright; 
+PASS XHTML1.1+MathML+SVG parsing &uplus; 
+PASS XHTML1.1+MathML+SVG parsing &UpperLeftArrow; 
+PASS XHTML1.1+MathML+SVG parsing &UpperRightArrow; 
+PASS XHTML1.1+MathML+SVG parsing &upsi; 
+PASS XHTML1.1+MathML+SVG parsing &Upsi; 
+PASS XHTML1.1+MathML+SVG parsing &upsih; 
+PASS XHTML1.1+MathML+SVG parsing &Upsilon; 
+PASS XHTML1.1+MathML+SVG parsing &upsilon; 
+PASS XHTML1.1+MathML+SVG parsing &UpTeeArrow; 
+PASS XHTML1.1+MathML+SVG parsing &UpTee; 
+PASS XHTML1.1+MathML+SVG parsing &upuparrows; 
+PASS XHTML1.1+MathML+SVG parsing &urcorn; 
+PASS XHTML1.1+MathML+SVG parsing &urcorner; 
+PASS XHTML1.1+MathML+SVG parsing &urcrop; 
+PASS XHTML1.1+MathML+SVG parsing &Uring; 
+PASS XHTML1.1+MathML+SVG parsing &uring; 
+PASS XHTML1.1+MathML+SVG parsing &urtri; 
+PASS XHTML1.1+MathML+SVG parsing &Uscr; 
+PASS XHTML1.1+MathML+SVG parsing &uscr; 
+PASS XHTML1.1+MathML+SVG parsing &utdot; 
+PASS XHTML1.1+MathML+SVG parsing &Utilde; 
+PASS XHTML1.1+MathML+SVG parsing &utilde; 
+PASS XHTML1.1+MathML+SVG parsing &utri; 
+PASS XHTML1.1+MathML+SVG parsing &utrif; 
+PASS XHTML1.1+MathML+SVG parsing &uuarr; 
+PASS XHTML1.1+MathML+SVG parsing &Uuml; 
+PASS XHTML1.1+MathML+SVG parsing &uuml; 
+PASS XHTML1.1+MathML+SVG parsing &uwangle; 
+PASS XHTML1.1+MathML+SVG parsing &vangrt; 
+PASS XHTML1.1+MathML+SVG parsing &varepsilon; 
+PASS XHTML1.1+MathML+SVG parsing &varkappa; 
+PASS XHTML1.1+MathML+SVG parsing &varnothing; 
+PASS XHTML1.1+MathML+SVG parsing &varphi; 
+PASS XHTML1.1+MathML+SVG parsing &varpi; 
+PASS XHTML1.1+MathML+SVG parsing &varpropto; 
+PASS XHTML1.1+MathML+SVG parsing &varr; 
+PASS XHTML1.1+MathML+SVG parsing &vArr; 
+PASS XHTML1.1+MathML+SVG parsing &varrho; 
+PASS XHTML1.1+MathML+SVG parsing &varsigma; 
+PASS XHTML1.1+MathML+SVG parsing &varsubsetneq; 
+PASS XHTML1.1+MathML+SVG parsing &varsubsetneqq; 
+PASS XHTML1.1+MathML+SVG parsing &varsupsetneq; 
+PASS XHTML1.1+MathML+SVG parsing &varsupsetneqq; 
+PASS XHTML1.1+MathML+SVG parsing &vartheta; 
+PASS XHTML1.1+MathML+SVG parsing &vartriangleleft; 
+PASS XHTML1.1+MathML+SVG parsing &vartriangleright; 
+PASS XHTML1.1+MathML+SVG parsing &vBar; 
+PASS XHTML1.1+MathML+SVG parsing &Vbar; 
+PASS XHTML1.1+MathML+SVG parsing &vBarv; 
+PASS XHTML1.1+MathML+SVG parsing &Vcy; 
+PASS XHTML1.1+MathML+SVG parsing &vcy; 
+PASS XHTML1.1+MathML+SVG parsing &vdash; 
+PASS XHTML1.1+MathML+SVG parsing &vDash; 
+PASS XHTML1.1+MathML+SVG parsing &Vdash; 
+PASS XHTML1.1+MathML+SVG parsing &VDash; 
+PASS XHTML1.1+MathML+SVG parsing &Vdashl; 
+PASS XHTML1.1+MathML+SVG parsing &veebar; 
+PASS XHTML1.1+MathML+SVG parsing &vee; 
+PASS XHTML1.1+MathML+SVG parsing &Vee; 
+PASS XHTML1.1+MathML+SVG parsing &veeeq; 
+PASS XHTML1.1+MathML+SVG parsing &vellip; 
+PASS XHTML1.1+MathML+SVG parsing &verbar; 
+PASS XHTML1.1+MathML+SVG parsing &Verbar; 
+PASS XHTML1.1+MathML+SVG parsing &vert; 
+PASS XHTML1.1+MathML+SVG parsing &Vert; 
+PASS XHTML1.1+MathML+SVG parsing &VerticalBar; 
+PASS XHTML1.1+MathML+SVG parsing &VerticalLine; 
+PASS XHTML1.1+MathML+SVG parsing &VerticalSeparator; 
+PASS XHTML1.1+MathML+SVG parsing &VerticalTilde; 
+PASS XHTML1.1+MathML+SVG parsing &VeryThinSpace; 
+PASS XHTML1.1+MathML+SVG parsing &Vfr; 
+PASS XHTML1.1+MathML+SVG parsing &vfr; 
+PASS XHTML1.1+MathML+SVG parsing &vltri; 
+PASS XHTML1.1+MathML+SVG parsing &vnsub; 
+PASS XHTML1.1+MathML+SVG parsing &vnsup; 
+PASS XHTML1.1+MathML+SVG parsing &Vopf; 
+PASS XHTML1.1+MathML+SVG parsing &vopf; 
+PASS XHTML1.1+MathML+SVG parsing &vprop; 
+PASS XHTML1.1+MathML+SVG parsing &vrtri; 
+PASS XHTML1.1+MathML+SVG parsing &Vscr; 
+PASS XHTML1.1+MathML+SVG parsing &vscr; 
+PASS XHTML1.1+MathML+SVG parsing &vsubnE; 
+PASS XHTML1.1+MathML+SVG parsing &vsubne; 
+PASS XHTML1.1+MathML+SVG parsing &vsupnE; 
+PASS XHTML1.1+MathML+SVG parsing &vsupne; 
+PASS XHTML1.1+MathML+SVG parsing &Vvdash; 
+PASS XHTML1.1+MathML+SVG parsing &vzigzag; 
+PASS XHTML1.1+MathML+SVG parsing &Wcirc; 
+PASS XHTML1.1+MathML+SVG parsing &wcirc; 
+PASS XHTML1.1+MathML+SVG parsing &wedbar; 
+PASS XHTML1.1+MathML+SVG parsing &wedge; 
+PASS XHTML1.1+MathML+SVG parsing &Wedge; 
+PASS XHTML1.1+MathML+SVG parsing &wedgeq; 
+PASS XHTML1.1+MathML+SVG parsing &weierp; 
+PASS XHTML1.1+MathML+SVG parsing &Wfr; 
+PASS XHTML1.1+MathML+SVG parsing &wfr; 
+PASS XHTML1.1+MathML+SVG parsing &Wopf; 
+PASS XHTML1.1+MathML+SVG parsing &wopf; 
+PASS XHTML1.1+MathML+SVG parsing &wp; 
+PASS XHTML1.1+MathML+SVG parsing &wr; 
+PASS XHTML1.1+MathML+SVG parsing &wreath; 
+PASS XHTML1.1+MathML+SVG parsing &Wscr; 
+PASS XHTML1.1+MathML+SVG parsing &wscr; 
+PASS XHTML1.1+MathML+SVG parsing &xcap; 
+PASS XHTML1.1+MathML+SVG parsing &xcirc; 
+PASS XHTML1.1+MathML+SVG parsing &xcup; 
+PASS XHTML1.1+MathML+SVG parsing &xdtri; 
+PASS XHTML1.1+MathML+SVG parsing &Xfr; 
+PASS XHTML1.1+MathML+SVG parsing &xfr; 
+PASS XHTML1.1+MathML+SVG parsing &xharr; 
+PASS XHTML1.1+MathML+SVG parsing &xhArr; 
+PASS XHTML1.1+MathML+SVG parsing &Xi; 
+PASS XHTML1.1+MathML+SVG parsing &xi; 
+PASS XHTML1.1+MathML+SVG parsing &xlarr; 
+PASS XHTML1.1+MathML+SVG parsing &xlArr; 
+PASS XHTML1.1+MathML+SVG parsing &xmap; 
+PASS XHTML1.1+MathML+SVG parsing &xnis; 
+PASS XHTML1.1+MathML+SVG parsing &xodot; 
+PASS XHTML1.1+MathML+SVG parsing &Xopf; 
+PASS XHTML1.1+MathML+SVG parsing &xopf; 
+PASS XHTML1.1+MathML+SVG parsing &xoplus; 
+PASS XHTML1.1+MathML+SVG parsing &xotime; 
+PASS XHTML1.1+MathML+SVG parsing &xrarr; 
+PASS XHTML1.1+MathML+SVG parsing &xrArr; 
+PASS XHTML1.1+MathML+SVG parsing &Xscr; 
+PASS XHTML1.1+MathML+SVG parsing &xscr; 
+PASS XHTML1.1+MathML+SVG parsing &xsqcup; 
+PASS XHTML1.1+MathML+SVG parsing &xuplus; 
+PASS XHTML1.1+MathML+SVG parsing &xutri; 
+PASS XHTML1.1+MathML+SVG parsing &xvee; 
+PASS XHTML1.1+MathML+SVG parsing &xwedge; 
+PASS XHTML1.1+MathML+SVG parsing &Yacute; 
+PASS XHTML1.1+MathML+SVG parsing &yacute; 
+PASS XHTML1.1+MathML+SVG parsing &YAcy; 
+PASS XHTML1.1+MathML+SVG parsing &yacy; 
+PASS XHTML1.1+MathML+SVG parsing &Ycirc; 
+PASS XHTML1.1+MathML+SVG parsing &ycirc; 
+PASS XHTML1.1+MathML+SVG parsing &Ycy; 
+PASS XHTML1.1+MathML+SVG parsing &ycy; 
+PASS XHTML1.1+MathML+SVG parsing &yen; 
+PASS XHTML1.1+MathML+SVG parsing &Yfr; 
+PASS XHTML1.1+MathML+SVG parsing &yfr; 
+PASS XHTML1.1+MathML+SVG parsing &YIcy; 
+PASS XHTML1.1+MathML+SVG parsing &yicy; 
+PASS XHTML1.1+MathML+SVG parsing &Yopf; 
+PASS XHTML1.1+MathML+SVG parsing &yopf; 
+PASS XHTML1.1+MathML+SVG parsing &Yscr; 
+PASS XHTML1.1+MathML+SVG parsing &yscr; 
+PASS XHTML1.1+MathML+SVG parsing &YUcy; 
+PASS XHTML1.1+MathML+SVG parsing &yucy; 
+PASS XHTML1.1+MathML+SVG parsing &yuml; 
+PASS XHTML1.1+MathML+SVG parsing &Yuml; 
+PASS XHTML1.1+MathML+SVG parsing &Zacute; 
+PASS XHTML1.1+MathML+SVG parsing &zacute; 
+PASS XHTML1.1+MathML+SVG parsing &Zcaron; 
+PASS XHTML1.1+MathML+SVG parsing &zcaron; 
+PASS XHTML1.1+MathML+SVG parsing &Zcy; 
+PASS XHTML1.1+MathML+SVG parsing &zcy; 
+PASS XHTML1.1+MathML+SVG parsing &Zdot; 
+PASS XHTML1.1+MathML+SVG parsing &zdot; 
+PASS XHTML1.1+MathML+SVG parsing &zeetrf; 
+PASS XHTML1.1+MathML+SVG parsing &ZeroWidthSpace; 
+PASS XHTML1.1+MathML+SVG parsing &Zeta; 
+PASS XHTML1.1+MathML+SVG parsing &zeta; 
+PASS XHTML1.1+MathML+SVG parsing &zfr; 
+PASS XHTML1.1+MathML+SVG parsing &Zfr; 
+PASS XHTML1.1+MathML+SVG parsing &ZHcy; 
+PASS XHTML1.1+MathML+SVG parsing &zhcy; 
+PASS XHTML1.1+MathML+SVG parsing &zigrarr; 
+PASS XHTML1.1+MathML+SVG parsing &zopf; 
+PASS XHTML1.1+MathML+SVG parsing &Zopf; 
+PASS XHTML1.1+MathML+SVG parsing &Zscr; 
+PASS XHTML1.1+MathML+SVG parsing &zscr; 
+PASS XHTML1.1+MathML+SVG parsing &zwj; 
+PASS XHTML1.1+MathML+SVG parsing &zwnj; 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-7.htm b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-7.htm
new file mode 100644
index 0000000..dc821d8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-7.htm
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta name=timeout content=long>
+<title>HTML entities for various XHTML Doctype</title>
+<link rel=help href="http://w3c.github.io/html/xhtml.html#parsing-xhtml-documents">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe id="test" src="xhtml-mathml-dtd-entity-support.htm"></iframe>
+
+<script>
+onload = () => document.getElementById("test").contentWindow.run(
+["application/xhtml+xml", "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN", "foo", "XHTML1.1+MathML+SVG"]);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-8-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-8-expected.txt
new file mode 100644
index 0000000..dd61a87e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-8-expected.txt
@@ -0,0 +1,2129 @@
+This is a testharness.js-based test.
+Found 2125 tests; 5 PASS, 2120 FAIL, 0 TIMEOUT, 0 NOTRUN.
+FAIL MathML parsing &Aacute; assert_true: expected true got false
+FAIL MathML parsing &aacute; assert_true: expected true got false
+FAIL MathML parsing &Abreve; assert_true: expected true got false
+FAIL MathML parsing &abreve; assert_true: expected true got false
+FAIL MathML parsing &ac; assert_true: expected true got false
+FAIL MathML parsing &acd; assert_true: expected true got false
+FAIL MathML parsing &acE; assert_true: expected true got false
+FAIL MathML parsing &Acirc; assert_true: expected true got false
+FAIL MathML parsing &acirc; assert_true: expected true got false
+FAIL MathML parsing &acute; assert_true: expected true got false
+FAIL MathML parsing &Acy; assert_true: expected true got false
+FAIL MathML parsing &acy; assert_true: expected true got false
+FAIL MathML parsing &AElig; assert_true: expected true got false
+FAIL MathML parsing &aelig; assert_true: expected true got false
+FAIL MathML parsing &af; assert_true: expected true got false
+FAIL MathML parsing &Afr; assert_true: expected true got false
+FAIL MathML parsing &afr; assert_true: expected true got false
+FAIL MathML parsing &Agrave; assert_true: expected true got false
+FAIL MathML parsing &agrave; assert_true: expected true got false
+FAIL MathML parsing &alefsym; assert_true: expected true got false
+FAIL MathML parsing &aleph; assert_true: expected true got false
+FAIL MathML parsing &Alpha; assert_true: expected true got false
+FAIL MathML parsing &alpha; assert_true: expected true got false
+FAIL MathML parsing &Amacr; assert_true: expected true got false
+FAIL MathML parsing &amacr; assert_true: expected true got false
+FAIL MathML parsing &amalg; assert_true: expected true got false
+PASS MathML parsing &amp; 
+FAIL MathML parsing &AMP; assert_true: expected true got false
+FAIL MathML parsing &andand; assert_true: expected true got false
+FAIL MathML parsing &And; assert_true: expected true got false
+FAIL MathML parsing &and; assert_true: expected true got false
+FAIL MathML parsing &andd; assert_true: expected true got false
+FAIL MathML parsing &andslope; assert_true: expected true got false
+FAIL MathML parsing &andv; assert_true: expected true got false
+FAIL MathML parsing &ang; assert_true: expected true got false
+FAIL MathML parsing &ange; assert_true: expected true got false
+FAIL MathML parsing &angle; assert_true: expected true got false
+FAIL MathML parsing &angmsdaa; assert_true: expected true got false
+FAIL MathML parsing &angmsdab; assert_true: expected true got false
+FAIL MathML parsing &angmsdac; assert_true: expected true got false
+FAIL MathML parsing &angmsdad; assert_true: expected true got false
+FAIL MathML parsing &angmsdae; assert_true: expected true got false
+FAIL MathML parsing &angmsdaf; assert_true: expected true got false
+FAIL MathML parsing &angmsdag; assert_true: expected true got false
+FAIL MathML parsing &angmsdah; assert_true: expected true got false
+FAIL MathML parsing &angmsd; assert_true: expected true got false
+FAIL MathML parsing &angrt; assert_true: expected true got false
+FAIL MathML parsing &angrtvb; assert_true: expected true got false
+FAIL MathML parsing &angrtvbd; assert_true: expected true got false
+FAIL MathML parsing &angsph; assert_true: expected true got false
+FAIL MathML parsing &angst; assert_true: expected true got false
+FAIL MathML parsing &angzarr; assert_true: expected true got false
+FAIL MathML parsing &Aogon; assert_true: expected true got false
+FAIL MathML parsing &aogon; assert_true: expected true got false
+FAIL MathML parsing &Aopf; assert_true: expected true got false
+FAIL MathML parsing &aopf; assert_true: expected true got false
+FAIL MathML parsing &apacir; assert_true: expected true got false
+FAIL MathML parsing &ap; assert_true: expected true got false
+FAIL MathML parsing &apE; assert_true: expected true got false
+FAIL MathML parsing &ape; assert_true: expected true got false
+FAIL MathML parsing &apid; assert_true: expected true got false
+PASS MathML parsing &apos; 
+FAIL MathML parsing &ApplyFunction; assert_true: expected true got false
+FAIL MathML parsing &approx; assert_true: expected true got false
+FAIL MathML parsing &approxeq; assert_true: expected true got false
+FAIL MathML parsing &Aring; assert_true: expected true got false
+FAIL MathML parsing &aring; assert_true: expected true got false
+FAIL MathML parsing &Ascr; assert_true: expected true got false
+FAIL MathML parsing &ascr; assert_true: expected true got false
+FAIL MathML parsing &Assign; assert_true: expected true got false
+FAIL MathML parsing &ast; assert_true: expected true got false
+FAIL MathML parsing &asymp; assert_true: expected true got false
+FAIL MathML parsing &asympeq; assert_true: expected true got false
+FAIL MathML parsing &Atilde; assert_true: expected true got false
+FAIL MathML parsing &atilde; assert_true: expected true got false
+FAIL MathML parsing &Auml; assert_true: expected true got false
+FAIL MathML parsing &auml; assert_true: expected true got false
+FAIL MathML parsing &awconint; assert_true: expected true got false
+FAIL MathML parsing &awint; assert_true: expected true got false
+FAIL MathML parsing &backcong; assert_true: expected true got false
+FAIL MathML parsing &backepsilon; assert_true: expected true got false
+FAIL MathML parsing &backprime; assert_true: expected true got false
+FAIL MathML parsing &backsim; assert_true: expected true got false
+FAIL MathML parsing &backsimeq; assert_true: expected true got false
+FAIL MathML parsing &Backslash; assert_true: expected true got false
+FAIL MathML parsing &Barv; assert_true: expected true got false
+FAIL MathML parsing &barvee; assert_true: expected true got false
+FAIL MathML parsing &barwed; assert_true: expected true got false
+FAIL MathML parsing &Barwed; assert_true: expected true got false
+FAIL MathML parsing &barwedge; assert_true: expected true got false
+FAIL MathML parsing &bbrk; assert_true: expected true got false
+FAIL MathML parsing &bbrktbrk; assert_true: expected true got false
+FAIL MathML parsing &bcong; assert_true: expected true got false
+FAIL MathML parsing &Bcy; assert_true: expected true got false
+FAIL MathML parsing &bcy; assert_true: expected true got false
+FAIL MathML parsing &bdquo; assert_true: expected true got false
+FAIL MathML parsing &becaus; assert_true: expected true got false
+FAIL MathML parsing &because; assert_true: expected true got false
+FAIL MathML parsing &Because; assert_true: expected true got false
+FAIL MathML parsing &bemptyv; assert_true: expected true got false
+FAIL MathML parsing &bepsi; assert_true: expected true got false
+FAIL MathML parsing &bernou; assert_true: expected true got false
+FAIL MathML parsing &Bernoullis; assert_true: expected true got false
+FAIL MathML parsing &Beta; assert_true: expected true got false
+FAIL MathML parsing &beta; assert_true: expected true got false
+FAIL MathML parsing &beth; assert_true: expected true got false
+FAIL MathML parsing &between; assert_true: expected true got false
+FAIL MathML parsing &Bfr; assert_true: expected true got false
+FAIL MathML parsing &bfr; assert_true: expected true got false
+FAIL MathML parsing &bigcap; assert_true: expected true got false
+FAIL MathML parsing &bigcirc; assert_true: expected true got false
+FAIL MathML parsing &bigcup; assert_true: expected true got false
+FAIL MathML parsing &bigodot; assert_true: expected true got false
+FAIL MathML parsing &bigoplus; assert_true: expected true got false
+FAIL MathML parsing &bigotimes; assert_true: expected true got false
+FAIL MathML parsing &bigsqcup; assert_true: expected true got false
+FAIL MathML parsing &bigstar; assert_true: expected true got false
+FAIL MathML parsing &bigtriangledown; assert_true: expected true got false
+FAIL MathML parsing &bigtriangleup; assert_true: expected true got false
+FAIL MathML parsing &biguplus; assert_true: expected true got false
+FAIL MathML parsing &bigvee; assert_true: expected true got false
+FAIL MathML parsing &bigwedge; assert_true: expected true got false
+FAIL MathML parsing &bkarow; assert_true: expected true got false
+FAIL MathML parsing &blacklozenge; assert_true: expected true got false
+FAIL MathML parsing &blacksquare; assert_true: expected true got false
+FAIL MathML parsing &blacktriangle; assert_true: expected true got false
+FAIL MathML parsing &blacktriangledown; assert_true: expected true got false
+FAIL MathML parsing &blacktriangleleft; assert_true: expected true got false
+FAIL MathML parsing &blacktriangleright; assert_true: expected true got false
+FAIL MathML parsing &blank; assert_true: expected true got false
+FAIL MathML parsing &blk12; assert_true: expected true got false
+FAIL MathML parsing &blk14; assert_true: expected true got false
+FAIL MathML parsing &blk34; assert_true: expected true got false
+FAIL MathML parsing &block; assert_true: expected true got false
+FAIL MathML parsing &bne; assert_true: expected true got false
+FAIL MathML parsing &bnequiv; assert_true: expected true got false
+FAIL MathML parsing &bNot; assert_true: expected true got false
+FAIL MathML parsing &bnot; assert_true: expected true got false
+FAIL MathML parsing &Bopf; assert_true: expected true got false
+FAIL MathML parsing &bopf; assert_true: expected true got false
+FAIL MathML parsing &bot; assert_true: expected true got false
+FAIL MathML parsing &bottom; assert_true: expected true got false
+FAIL MathML parsing &bowtie; assert_true: expected true got false
+FAIL MathML parsing &boxbox; assert_true: expected true got false
+FAIL MathML parsing &boxdl; assert_true: expected true got false
+FAIL MathML parsing &boxdL; assert_true: expected true got false
+FAIL MathML parsing &boxDl; assert_true: expected true got false
+FAIL MathML parsing &boxDL; assert_true: expected true got false
+FAIL MathML parsing &boxdr; assert_true: expected true got false
+FAIL MathML parsing &boxdR; assert_true: expected true got false
+FAIL MathML parsing &boxDr; assert_true: expected true got false
+FAIL MathML parsing &boxDR; assert_true: expected true got false
+FAIL MathML parsing &boxh; assert_true: expected true got false
+FAIL MathML parsing &boxH; assert_true: expected true got false
+FAIL MathML parsing &boxhd; assert_true: expected true got false
+FAIL MathML parsing &boxHd; assert_true: expected true got false
+FAIL MathML parsing &boxhD; assert_true: expected true got false
+FAIL MathML parsing &boxHD; assert_true: expected true got false
+FAIL MathML parsing &boxhu; assert_true: expected true got false
+FAIL MathML parsing &boxHu; assert_true: expected true got false
+FAIL MathML parsing &boxhU; assert_true: expected true got false
+FAIL MathML parsing &boxHU; assert_true: expected true got false
+FAIL MathML parsing &boxminus; assert_true: expected true got false
+FAIL MathML parsing &boxplus; assert_true: expected true got false
+FAIL MathML parsing &boxtimes; assert_true: expected true got false
+FAIL MathML parsing &boxul; assert_true: expected true got false
+FAIL MathML parsing &boxuL; assert_true: expected true got false
+FAIL MathML parsing &boxUl; assert_true: expected true got false
+FAIL MathML parsing &boxUL; assert_true: expected true got false
+FAIL MathML parsing &boxur; assert_true: expected true got false
+FAIL MathML parsing &boxuR; assert_true: expected true got false
+FAIL MathML parsing &boxUr; assert_true: expected true got false
+FAIL MathML parsing &boxUR; assert_true: expected true got false
+FAIL MathML parsing &boxv; assert_true: expected true got false
+FAIL MathML parsing &boxV; assert_true: expected true got false
+FAIL MathML parsing &boxvh; assert_true: expected true got false
+FAIL MathML parsing &boxvH; assert_true: expected true got false
+FAIL MathML parsing &boxVh; assert_true: expected true got false
+FAIL MathML parsing &boxVH; assert_true: expected true got false
+FAIL MathML parsing &boxvl; assert_true: expected true got false
+FAIL MathML parsing &boxvL; assert_true: expected true got false
+FAIL MathML parsing &boxVl; assert_true: expected true got false
+FAIL MathML parsing &boxVL; assert_true: expected true got false
+FAIL MathML parsing &boxvr; assert_true: expected true got false
+FAIL MathML parsing &boxvR; assert_true: expected true got false
+FAIL MathML parsing &boxVr; assert_true: expected true got false
+FAIL MathML parsing &boxVR; assert_true: expected true got false
+FAIL MathML parsing &bprime; assert_true: expected true got false
+FAIL MathML parsing &breve; assert_true: expected true got false
+FAIL MathML parsing &Breve; assert_true: expected true got false
+FAIL MathML parsing &brvbar; assert_true: expected true got false
+FAIL MathML parsing &bscr; assert_true: expected true got false
+FAIL MathML parsing &Bscr; assert_true: expected true got false
+FAIL MathML parsing &bsemi; assert_true: expected true got false
+FAIL MathML parsing &bsim; assert_true: expected true got false
+FAIL MathML parsing &bsime; assert_true: expected true got false
+FAIL MathML parsing &bsolb; assert_true: expected true got false
+FAIL MathML parsing &bsol; assert_true: expected true got false
+FAIL MathML parsing &bsolhsub; assert_true: expected true got false
+FAIL MathML parsing &bull; assert_true: expected true got false
+FAIL MathML parsing &bullet; assert_true: expected true got false
+FAIL MathML parsing &bump; assert_true: expected true got false
+FAIL MathML parsing &bumpE; assert_true: expected true got false
+FAIL MathML parsing &bumpe; assert_true: expected true got false
+FAIL MathML parsing &Bumpeq; assert_true: expected true got false
+FAIL MathML parsing &bumpeq; assert_true: expected true got false
+FAIL MathML parsing &Cacute; assert_true: expected true got false
+FAIL MathML parsing &cacute; assert_true: expected true got false
+FAIL MathML parsing &capand; assert_true: expected true got false
+FAIL MathML parsing &capbrcup; assert_true: expected true got false
+FAIL MathML parsing &capcap; assert_true: expected true got false
+FAIL MathML parsing &cap; assert_true: expected true got false
+FAIL MathML parsing &Cap; assert_true: expected true got false
+FAIL MathML parsing &capcup; assert_true: expected true got false
+FAIL MathML parsing &capdot; assert_true: expected true got false
+FAIL MathML parsing &CapitalDifferentialD; assert_true: expected true got false
+FAIL MathML parsing &caps; assert_true: expected true got false
+FAIL MathML parsing &caret; assert_true: expected true got false
+FAIL MathML parsing &caron; assert_true: expected true got false
+FAIL MathML parsing &Cayleys; assert_true: expected true got false
+FAIL MathML parsing &ccaps; assert_true: expected true got false
+FAIL MathML parsing &Ccaron; assert_true: expected true got false
+FAIL MathML parsing &ccaron; assert_true: expected true got false
+FAIL MathML parsing &Ccedil; assert_true: expected true got false
+FAIL MathML parsing &ccedil; assert_true: expected true got false
+FAIL MathML parsing &Ccirc; assert_true: expected true got false
+FAIL MathML parsing &ccirc; assert_true: expected true got false
+FAIL MathML parsing &Cconint; assert_true: expected true got false
+FAIL MathML parsing &ccups; assert_true: expected true got false
+FAIL MathML parsing &ccupssm; assert_true: expected true got false
+FAIL MathML parsing &Cdot; assert_true: expected true got false
+FAIL MathML parsing &cdot; assert_true: expected true got false
+FAIL MathML parsing &cedil; assert_true: expected true got false
+FAIL MathML parsing &Cedilla; assert_true: expected true got false
+FAIL MathML parsing &cemptyv; assert_true: expected true got false
+FAIL MathML parsing &cent; assert_true: expected true got false
+FAIL MathML parsing &centerdot; assert_true: expected true got false
+FAIL MathML parsing &CenterDot; assert_true: expected true got false
+FAIL MathML parsing &cfr; assert_true: expected true got false
+FAIL MathML parsing &Cfr; assert_true: expected true got false
+FAIL MathML parsing &CHcy; assert_true: expected true got false
+FAIL MathML parsing &chcy; assert_true: expected true got false
+FAIL MathML parsing &check; assert_true: expected true got false
+FAIL MathML parsing &checkmark; assert_true: expected true got false
+FAIL MathML parsing &Chi; assert_true: expected true got false
+FAIL MathML parsing &chi; assert_true: expected true got false
+FAIL MathML parsing &circ; assert_true: expected true got false
+FAIL MathML parsing &circeq; assert_true: expected true got false
+FAIL MathML parsing &circlearrowleft; assert_true: expected true got false
+FAIL MathML parsing &circlearrowright; assert_true: expected true got false
+FAIL MathML parsing &circledast; assert_true: expected true got false
+FAIL MathML parsing &circledcirc; assert_true: expected true got false
+FAIL MathML parsing &circleddash; assert_true: expected true got false
+FAIL MathML parsing &CircleDot; assert_true: expected true got false
+FAIL MathML parsing &circledR; assert_true: expected true got false
+FAIL MathML parsing &circledS; assert_true: expected true got false
+FAIL MathML parsing &CircleMinus; assert_true: expected true got false
+FAIL MathML parsing &CirclePlus; assert_true: expected true got false
+FAIL MathML parsing &CircleTimes; assert_true: expected true got false
+FAIL MathML parsing &cir; assert_true: expected true got false
+FAIL MathML parsing &cirE; assert_true: expected true got false
+FAIL MathML parsing &cire; assert_true: expected true got false
+FAIL MathML parsing &cirfnint; assert_true: expected true got false
+FAIL MathML parsing &cirmid; assert_true: expected true got false
+FAIL MathML parsing &cirscir; assert_true: expected true got false
+FAIL MathML parsing &ClockwiseContourIntegral; assert_true: expected true got false
+FAIL MathML parsing &CloseCurlyDoubleQuote; assert_true: expected true got false
+FAIL MathML parsing &CloseCurlyQuote; assert_true: expected true got false
+FAIL MathML parsing &clubs; assert_true: expected true got false
+FAIL MathML parsing &clubsuit; assert_true: expected true got false
+FAIL MathML parsing &colon; assert_true: expected true got false
+FAIL MathML parsing &Colon; assert_true: expected true got false
+FAIL MathML parsing &Colone; assert_true: expected true got false
+FAIL MathML parsing &colone; assert_true: expected true got false
+FAIL MathML parsing &coloneq; assert_true: expected true got false
+FAIL MathML parsing &comma; assert_true: expected true got false
+FAIL MathML parsing &commat; assert_true: expected true got false
+FAIL MathML parsing &comp; assert_true: expected true got false
+FAIL MathML parsing &compfn; assert_true: expected true got false
+FAIL MathML parsing &complement; assert_true: expected true got false
+FAIL MathML parsing &complexes; assert_true: expected true got false
+FAIL MathML parsing &cong; assert_true: expected true got false
+FAIL MathML parsing &congdot; assert_true: expected true got false
+FAIL MathML parsing &Congruent; assert_true: expected true got false
+FAIL MathML parsing &conint; assert_true: expected true got false
+FAIL MathML parsing &Conint; assert_true: expected true got false
+FAIL MathML parsing &ContourIntegral; assert_true: expected true got false
+FAIL MathML parsing &copf; assert_true: expected true got false
+FAIL MathML parsing &Copf; assert_true: expected true got false
+FAIL MathML parsing &coprod; assert_true: expected true got false
+FAIL MathML parsing &Coproduct; assert_true: expected true got false
+FAIL MathML parsing &copy; assert_true: expected true got false
+FAIL MathML parsing &COPY; assert_true: expected true got false
+FAIL MathML parsing &copysr; assert_true: expected true got false
+FAIL MathML parsing &CounterClockwiseContourIntegral; assert_true: expected true got false
+FAIL MathML parsing &crarr; assert_true: expected true got false
+FAIL MathML parsing &cross; assert_true: expected true got false
+FAIL MathML parsing &Cross; assert_true: expected true got false
+FAIL MathML parsing &Cscr; assert_true: expected true got false
+FAIL MathML parsing &cscr; assert_true: expected true got false
+FAIL MathML parsing &csub; assert_true: expected true got false
+FAIL MathML parsing &csube; assert_true: expected true got false
+FAIL MathML parsing &csup; assert_true: expected true got false
+FAIL MathML parsing &csupe; assert_true: expected true got false
+FAIL MathML parsing &ctdot; assert_true: expected true got false
+FAIL MathML parsing &cudarrl; assert_true: expected true got false
+FAIL MathML parsing &cudarrr; assert_true: expected true got false
+FAIL MathML parsing &cuepr; assert_true: expected true got false
+FAIL MathML parsing &cuesc; assert_true: expected true got false
+FAIL MathML parsing &cularr; assert_true: expected true got false
+FAIL MathML parsing &cularrp; assert_true: expected true got false
+FAIL MathML parsing &cupbrcap; assert_true: expected true got false
+FAIL MathML parsing &cupcap; assert_true: expected true got false
+FAIL MathML parsing &CupCap; assert_true: expected true got false
+FAIL MathML parsing &cup; assert_true: expected true got false
+FAIL MathML parsing &Cup; assert_true: expected true got false
+FAIL MathML parsing &cupcup; assert_true: expected true got false
+FAIL MathML parsing &cupdot; assert_true: expected true got false
+FAIL MathML parsing &cupor; assert_true: expected true got false
+FAIL MathML parsing &cups; assert_true: expected true got false
+FAIL MathML parsing &curarr; assert_true: expected true got false
+FAIL MathML parsing &curarrm; assert_true: expected true got false
+FAIL MathML parsing &curlyeqprec; assert_true: expected true got false
+FAIL MathML parsing &curlyeqsucc; assert_true: expected true got false
+FAIL MathML parsing &curlyvee; assert_true: expected true got false
+FAIL MathML parsing &curlywedge; assert_true: expected true got false
+FAIL MathML parsing &curren; assert_true: expected true got false
+FAIL MathML parsing &curvearrowleft; assert_true: expected true got false
+FAIL MathML parsing &curvearrowright; assert_true: expected true got false
+FAIL MathML parsing &cuvee; assert_true: expected true got false
+FAIL MathML parsing &cuwed; assert_true: expected true got false
+FAIL MathML parsing &cwconint; assert_true: expected true got false
+FAIL MathML parsing &cwint; assert_true: expected true got false
+FAIL MathML parsing &cylcty; assert_true: expected true got false
+FAIL MathML parsing &dagger; assert_true: expected true got false
+FAIL MathML parsing &Dagger; assert_true: expected true got false
+FAIL MathML parsing &daleth; assert_true: expected true got false
+FAIL MathML parsing &darr; assert_true: expected true got false
+FAIL MathML parsing &Darr; assert_true: expected true got false
+FAIL MathML parsing &dArr; assert_true: expected true got false
+FAIL MathML parsing &dash; assert_true: expected true got false
+FAIL MathML parsing &Dashv; assert_true: expected true got false
+FAIL MathML parsing &dashv; assert_true: expected true got false
+FAIL MathML parsing &dbkarow; assert_true: expected true got false
+FAIL MathML parsing &dblac; assert_true: expected true got false
+FAIL MathML parsing &Dcaron; assert_true: expected true got false
+FAIL MathML parsing &dcaron; assert_true: expected true got false
+FAIL MathML parsing &Dcy; assert_true: expected true got false
+FAIL MathML parsing &dcy; assert_true: expected true got false
+FAIL MathML parsing &ddagger; assert_true: expected true got false
+FAIL MathML parsing &ddarr; assert_true: expected true got false
+FAIL MathML parsing &DD; assert_true: expected true got false
+FAIL MathML parsing &dd; assert_true: expected true got false
+FAIL MathML parsing &DDotrahd; assert_true: expected true got false
+FAIL MathML parsing &ddotseq; assert_true: expected true got false
+FAIL MathML parsing &deg; assert_true: expected true got false
+FAIL MathML parsing &Del; assert_true: expected true got false
+FAIL MathML parsing &Delta; assert_true: expected true got false
+FAIL MathML parsing &delta; assert_true: expected true got false
+FAIL MathML parsing &demptyv; assert_true: expected true got false
+FAIL MathML parsing &dfisht; assert_true: expected true got false
+FAIL MathML parsing &Dfr; assert_true: expected true got false
+FAIL MathML parsing &dfr; assert_true: expected true got false
+FAIL MathML parsing &dHar; assert_true: expected true got false
+FAIL MathML parsing &dharl; assert_true: expected true got false
+FAIL MathML parsing &dharr; assert_true: expected true got false
+FAIL MathML parsing &DiacriticalAcute; assert_true: expected true got false
+FAIL MathML parsing &DiacriticalDot; assert_true: expected true got false
+FAIL MathML parsing &DiacriticalDoubleAcute; assert_true: expected true got false
+FAIL MathML parsing &DiacriticalGrave; assert_true: expected true got false
+FAIL MathML parsing &DiacriticalTilde; assert_true: expected true got false
+FAIL MathML parsing &diam; assert_true: expected true got false
+FAIL MathML parsing &diamond; assert_true: expected true got false
+FAIL MathML parsing &Diamond; assert_true: expected true got false
+FAIL MathML parsing &diamondsuit; assert_true: expected true got false
+FAIL MathML parsing &diams; assert_true: expected true got false
+FAIL MathML parsing &die; assert_true: expected true got false
+FAIL MathML parsing &DifferentialD; assert_true: expected true got false
+FAIL MathML parsing &digamma; assert_true: expected true got false
+FAIL MathML parsing &disin; assert_true: expected true got false
+FAIL MathML parsing &div; assert_true: expected true got false
+FAIL MathML parsing &divide; assert_true: expected true got false
+FAIL MathML parsing &divideontimes; assert_true: expected true got false
+FAIL MathML parsing &divonx; assert_true: expected true got false
+FAIL MathML parsing &DJcy; assert_true: expected true got false
+FAIL MathML parsing &djcy; assert_true: expected true got false
+FAIL MathML parsing &dlcorn; assert_true: expected true got false
+FAIL MathML parsing &dlcrop; assert_true: expected true got false
+FAIL MathML parsing &dollar; assert_true: expected true got false
+FAIL MathML parsing &Dopf; assert_true: expected true got false
+FAIL MathML parsing &dopf; assert_true: expected true got false
+FAIL MathML parsing &Dot; assert_true: expected true got false
+FAIL MathML parsing &dot; assert_true: expected true got false
+FAIL MathML parsing &DotDot; assert_true: expected true got false
+FAIL MathML parsing &doteq; assert_true: expected true got false
+FAIL MathML parsing &doteqdot; assert_true: expected true got false
+FAIL MathML parsing &DotEqual; assert_true: expected true got false
+FAIL MathML parsing &dotminus; assert_true: expected true got false
+FAIL MathML parsing &dotplus; assert_true: expected true got false
+FAIL MathML parsing &dotsquare; assert_true: expected true got false
+FAIL MathML parsing &doublebarwedge; assert_true: expected true got false
+FAIL MathML parsing &DoubleContourIntegral; assert_true: expected true got false
+FAIL MathML parsing &DoubleDot; assert_true: expected true got false
+FAIL MathML parsing &DoubleDownArrow; assert_true: expected true got false
+FAIL MathML parsing &DoubleLeftArrow; assert_true: expected true got false
+FAIL MathML parsing &DoubleLeftRightArrow; assert_true: expected true got false
+FAIL MathML parsing &DoubleLeftTee; assert_true: expected true got false
+FAIL MathML parsing &DoubleLongLeftArrow; assert_true: expected true got false
+FAIL MathML parsing &DoubleLongLeftRightArrow; assert_true: expected true got false
+FAIL MathML parsing &DoubleLongRightArrow; assert_true: expected true got false
+FAIL MathML parsing &DoubleRightArrow; assert_true: expected true got false
+FAIL MathML parsing &DoubleRightTee; assert_true: expected true got false
+FAIL MathML parsing &DoubleUpArrow; assert_true: expected true got false
+FAIL MathML parsing &DoubleUpDownArrow; assert_true: expected true got false
+FAIL MathML parsing &DoubleVerticalBar; assert_true: expected true got false
+FAIL MathML parsing &DownArrowBar; assert_true: expected true got false
+FAIL MathML parsing &downarrow; assert_true: expected true got false
+FAIL MathML parsing &DownArrow; assert_true: expected true got false
+FAIL MathML parsing &Downarrow; assert_true: expected true got false
+FAIL MathML parsing &DownArrowUpArrow; assert_true: expected true got false
+FAIL MathML parsing &DownBreve; assert_true: expected true got false
+FAIL MathML parsing &downdownarrows; assert_true: expected true got false
+FAIL MathML parsing &downharpoonleft; assert_true: expected true got false
+FAIL MathML parsing &downharpoonright; assert_true: expected true got false
+FAIL MathML parsing &DownLeftRightVector; assert_true: expected true got false
+FAIL MathML parsing &DownLeftTeeVector; assert_true: expected true got false
+FAIL MathML parsing &DownLeftVectorBar; assert_true: expected true got false
+FAIL MathML parsing &DownLeftVector; assert_true: expected true got false
+FAIL MathML parsing &DownRightTeeVector; assert_true: expected true got false
+FAIL MathML parsing &DownRightVectorBar; assert_true: expected true got false
+FAIL MathML parsing &DownRightVector; assert_true: expected true got false
+FAIL MathML parsing &DownTeeArrow; assert_true: expected true got false
+FAIL MathML parsing &DownTee; assert_true: expected true got false
+FAIL MathML parsing &drbkarow; assert_true: expected true got false
+FAIL MathML parsing &drcorn; assert_true: expected true got false
+FAIL MathML parsing &drcrop; assert_true: expected true got false
+FAIL MathML parsing &Dscr; assert_true: expected true got false
+FAIL MathML parsing &dscr; assert_true: expected true got false
+FAIL MathML parsing &DScy; assert_true: expected true got false
+FAIL MathML parsing &dscy; assert_true: expected true got false
+FAIL MathML parsing &dsol; assert_true: expected true got false
+FAIL MathML parsing &Dstrok; assert_true: expected true got false
+FAIL MathML parsing &dstrok; assert_true: expected true got false
+FAIL MathML parsing &dtdot; assert_true: expected true got false
+FAIL MathML parsing &dtri; assert_true: expected true got false
+FAIL MathML parsing &dtrif; assert_true: expected true got false
+FAIL MathML parsing &duarr; assert_true: expected true got false
+FAIL MathML parsing &duhar; assert_true: expected true got false
+FAIL MathML parsing &dwangle; assert_true: expected true got false
+FAIL MathML parsing &DZcy; assert_true: expected true got false
+FAIL MathML parsing &dzcy; assert_true: expected true got false
+FAIL MathML parsing &dzigrarr; assert_true: expected true got false
+FAIL MathML parsing &Eacute; assert_true: expected true got false
+FAIL MathML parsing &eacute; assert_true: expected true got false
+FAIL MathML parsing &easter; assert_true: expected true got false
+FAIL MathML parsing &Ecaron; assert_true: expected true got false
+FAIL MathML parsing &ecaron; assert_true: expected true got false
+FAIL MathML parsing &Ecirc; assert_true: expected true got false
+FAIL MathML parsing &ecirc; assert_true: expected true got false
+FAIL MathML parsing &ecir; assert_true: expected true got false
+FAIL MathML parsing &ecolon; assert_true: expected true got false
+FAIL MathML parsing &Ecy; assert_true: expected true got false
+FAIL MathML parsing &ecy; assert_true: expected true got false
+FAIL MathML parsing &eDDot; assert_true: expected true got false
+FAIL MathML parsing &Edot; assert_true: expected true got false
+FAIL MathML parsing &edot; assert_true: expected true got false
+FAIL MathML parsing &eDot; assert_true: expected true got false
+FAIL MathML parsing &ee; assert_true: expected true got false
+FAIL MathML parsing &efDot; assert_true: expected true got false
+FAIL MathML parsing &Efr; assert_true: expected true got false
+FAIL MathML parsing &efr; assert_true: expected true got false
+FAIL MathML parsing &eg; assert_true: expected true got false
+FAIL MathML parsing &Egrave; assert_true: expected true got false
+FAIL MathML parsing &egrave; assert_true: expected true got false
+FAIL MathML parsing &egs; assert_true: expected true got false
+FAIL MathML parsing &egsdot; assert_true: expected true got false
+FAIL MathML parsing &el; assert_true: expected true got false
+FAIL MathML parsing &Element; assert_true: expected true got false
+FAIL MathML parsing &elinters; assert_true: expected true got false
+FAIL MathML parsing &ell; assert_true: expected true got false
+FAIL MathML parsing &els; assert_true: expected true got false
+FAIL MathML parsing &elsdot; assert_true: expected true got false
+FAIL MathML parsing &Emacr; assert_true: expected true got false
+FAIL MathML parsing &emacr; assert_true: expected true got false
+FAIL MathML parsing &empty; assert_true: expected true got false
+FAIL MathML parsing &emptyset; assert_true: expected true got false
+FAIL MathML parsing &EmptySmallSquare; assert_true: expected true got false
+FAIL MathML parsing &emptyv; assert_true: expected true got false
+FAIL MathML parsing &EmptyVerySmallSquare; assert_true: expected true got false
+FAIL MathML parsing &emsp13; assert_true: expected true got false
+FAIL MathML parsing &emsp14; assert_true: expected true got false
+FAIL MathML parsing &emsp; assert_true: expected true got false
+FAIL MathML parsing &ENG; assert_true: expected true got false
+FAIL MathML parsing &eng; assert_true: expected true got false
+FAIL MathML parsing &ensp; assert_true: expected true got false
+FAIL MathML parsing &Eogon; assert_true: expected true got false
+FAIL MathML parsing &eogon; assert_true: expected true got false
+FAIL MathML parsing &Eopf; assert_true: expected true got false
+FAIL MathML parsing &eopf; assert_true: expected true got false
+FAIL MathML parsing &epar; assert_true: expected true got false
+FAIL MathML parsing &eparsl; assert_true: expected true got false
+FAIL MathML parsing &eplus; assert_true: expected true got false
+FAIL MathML parsing &epsi; assert_true: expected true got false
+FAIL MathML parsing &Epsilon; assert_true: expected true got false
+FAIL MathML parsing &epsilon; assert_true: expected true got false
+FAIL MathML parsing &epsiv; assert_true: expected true got false
+FAIL MathML parsing &eqcirc; assert_true: expected true got false
+FAIL MathML parsing &eqcolon; assert_true: expected true got false
+FAIL MathML parsing &eqsim; assert_true: expected true got false
+FAIL MathML parsing &eqslantgtr; assert_true: expected true got false
+FAIL MathML parsing &eqslantless; assert_true: expected true got false
+FAIL MathML parsing &Equal; assert_true: expected true got false
+FAIL MathML parsing &equals; assert_true: expected true got false
+FAIL MathML parsing &EqualTilde; assert_true: expected true got false
+FAIL MathML parsing &equest; assert_true: expected true got false
+FAIL MathML parsing &Equilibrium; assert_true: expected true got false
+FAIL MathML parsing &equiv; assert_true: expected true got false
+FAIL MathML parsing &equivDD; assert_true: expected true got false
+FAIL MathML parsing &eqvparsl; assert_true: expected true got false
+FAIL MathML parsing &erarr; assert_true: expected true got false
+FAIL MathML parsing &erDot; assert_true: expected true got false
+FAIL MathML parsing &escr; assert_true: expected true got false
+FAIL MathML parsing &Escr; assert_true: expected true got false
+FAIL MathML parsing &esdot; assert_true: expected true got false
+FAIL MathML parsing &Esim; assert_true: expected true got false
+FAIL MathML parsing &esim; assert_true: expected true got false
+FAIL MathML parsing &Eta; assert_true: expected true got false
+FAIL MathML parsing &eta; assert_true: expected true got false
+FAIL MathML parsing &ETH; assert_true: expected true got false
+FAIL MathML parsing &eth; assert_true: expected true got false
+FAIL MathML parsing &Euml; assert_true: expected true got false
+FAIL MathML parsing &euml; assert_true: expected true got false
+FAIL MathML parsing &euro; assert_true: expected true got false
+FAIL MathML parsing &excl; assert_true: expected true got false
+FAIL MathML parsing &exist; assert_true: expected true got false
+FAIL MathML parsing &Exists; assert_true: expected true got false
+FAIL MathML parsing &expectation; assert_true: expected true got false
+FAIL MathML parsing &exponentiale; assert_true: expected true got false
+FAIL MathML parsing &ExponentialE; assert_true: expected true got false
+FAIL MathML parsing &fallingdotseq; assert_true: expected true got false
+FAIL MathML parsing &Fcy; assert_true: expected true got false
+FAIL MathML parsing &fcy; assert_true: expected true got false
+FAIL MathML parsing &female; assert_true: expected true got false
+FAIL MathML parsing &ffilig; assert_true: expected true got false
+FAIL MathML parsing &fflig; assert_true: expected true got false
+FAIL MathML parsing &ffllig; assert_true: expected true got false
+FAIL MathML parsing &Ffr; assert_true: expected true got false
+FAIL MathML parsing &ffr; assert_true: expected true got false
+FAIL MathML parsing &filig; assert_true: expected true got false
+FAIL MathML parsing &FilledSmallSquare; assert_true: expected true got false
+FAIL MathML parsing &FilledVerySmallSquare; assert_true: expected true got false
+FAIL MathML parsing &fjlig; assert_true: expected true got false
+FAIL MathML parsing &flat; assert_true: expected true got false
+FAIL MathML parsing &fllig; assert_true: expected true got false
+FAIL MathML parsing &fltns; assert_true: expected true got false
+FAIL MathML parsing &fnof; assert_true: expected true got false
+FAIL MathML parsing &Fopf; assert_true: expected true got false
+FAIL MathML parsing &fopf; assert_true: expected true got false
+FAIL MathML parsing &forall; assert_true: expected true got false
+FAIL MathML parsing &ForAll; assert_true: expected true got false
+FAIL MathML parsing &fork; assert_true: expected true got false
+FAIL MathML parsing &forkv; assert_true: expected true got false
+FAIL MathML parsing &Fouriertrf; assert_true: expected true got false
+FAIL MathML parsing &fpartint; assert_true: expected true got false
+FAIL MathML parsing &frac12; assert_true: expected true got false
+FAIL MathML parsing &frac13; assert_true: expected true got false
+FAIL MathML parsing &frac14; assert_true: expected true got false
+FAIL MathML parsing &frac15; assert_true: expected true got false
+FAIL MathML parsing &frac16; assert_true: expected true got false
+FAIL MathML parsing &frac18; assert_true: expected true got false
+FAIL MathML parsing &frac23; assert_true: expected true got false
+FAIL MathML parsing &frac25; assert_true: expected true got false
+FAIL MathML parsing &frac34; assert_true: expected true got false
+FAIL MathML parsing &frac35; assert_true: expected true got false
+FAIL MathML parsing &frac38; assert_true: expected true got false
+FAIL MathML parsing &frac45; assert_true: expected true got false
+FAIL MathML parsing &frac56; assert_true: expected true got false
+FAIL MathML parsing &frac58; assert_true: expected true got false
+FAIL MathML parsing &frac78; assert_true: expected true got false
+FAIL MathML parsing &frasl; assert_true: expected true got false
+FAIL MathML parsing &frown; assert_true: expected true got false
+FAIL MathML parsing &fscr; assert_true: expected true got false
+FAIL MathML parsing &Fscr; assert_true: expected true got false
+FAIL MathML parsing &gacute; assert_true: expected true got false
+FAIL MathML parsing &Gamma; assert_true: expected true got false
+FAIL MathML parsing &gamma; assert_true: expected true got false
+FAIL MathML parsing &Gammad; assert_true: expected true got false
+FAIL MathML parsing &gammad; assert_true: expected true got false
+FAIL MathML parsing &gap; assert_true: expected true got false
+FAIL MathML parsing &Gbreve; assert_true: expected true got false
+FAIL MathML parsing &gbreve; assert_true: expected true got false
+FAIL MathML parsing &Gcedil; assert_true: expected true got false
+FAIL MathML parsing &Gcirc; assert_true: expected true got false
+FAIL MathML parsing &gcirc; assert_true: expected true got false
+FAIL MathML parsing &Gcy; assert_true: expected true got false
+FAIL MathML parsing &gcy; assert_true: expected true got false
+FAIL MathML parsing &Gdot; assert_true: expected true got false
+FAIL MathML parsing &gdot; assert_true: expected true got false
+FAIL MathML parsing &ge; assert_true: expected true got false
+FAIL MathML parsing &gE; assert_true: expected true got false
+FAIL MathML parsing &gEl; assert_true: expected true got false
+FAIL MathML parsing &gel; assert_true: expected true got false
+FAIL MathML parsing &geq; assert_true: expected true got false
+FAIL MathML parsing &geqq; assert_true: expected true got false
+FAIL MathML parsing &geqslant; assert_true: expected true got false
+FAIL MathML parsing &gescc; assert_true: expected true got false
+FAIL MathML parsing &ges; assert_true: expected true got false
+FAIL MathML parsing &gesdot; assert_true: expected true got false
+FAIL MathML parsing &gesdoto; assert_true: expected true got false
+FAIL MathML parsing &gesdotol; assert_true: expected true got false
+FAIL MathML parsing &gesl; assert_true: expected true got false
+FAIL MathML parsing &gesles; assert_true: expected true got false
+FAIL MathML parsing &Gfr; assert_true: expected true got false
+FAIL MathML parsing &gfr; assert_true: expected true got false
+FAIL MathML parsing &gg; assert_true: expected true got false
+FAIL MathML parsing &Gg; assert_true: expected true got false
+FAIL MathML parsing &ggg; assert_true: expected true got false
+FAIL MathML parsing &gimel; assert_true: expected true got false
+FAIL MathML parsing &GJcy; assert_true: expected true got false
+FAIL MathML parsing &gjcy; assert_true: expected true got false
+FAIL MathML parsing &gla; assert_true: expected true got false
+FAIL MathML parsing &gl; assert_true: expected true got false
+FAIL MathML parsing &glE; assert_true: expected true got false
+FAIL MathML parsing &glj; assert_true: expected true got false
+FAIL MathML parsing &gnap; assert_true: expected true got false
+FAIL MathML parsing &gnapprox; assert_true: expected true got false
+FAIL MathML parsing &gne; assert_true: expected true got false
+FAIL MathML parsing &gnE; assert_true: expected true got false
+FAIL MathML parsing &gneq; assert_true: expected true got false
+FAIL MathML parsing &gneqq; assert_true: expected true got false
+FAIL MathML parsing &gnsim; assert_true: expected true got false
+FAIL MathML parsing &Gopf; assert_true: expected true got false
+FAIL MathML parsing &gopf; assert_true: expected true got false
+FAIL MathML parsing &grave; assert_true: expected true got false
+FAIL MathML parsing &GreaterEqual; assert_true: expected true got false
+FAIL MathML parsing &GreaterEqualLess; assert_true: expected true got false
+FAIL MathML parsing &GreaterFullEqual; assert_true: expected true got false
+FAIL MathML parsing &GreaterGreater; assert_true: expected true got false
+FAIL MathML parsing &GreaterLess; assert_true: expected true got false
+FAIL MathML parsing &GreaterSlantEqual; assert_true: expected true got false
+FAIL MathML parsing &GreaterTilde; assert_true: expected true got false
+FAIL MathML parsing &Gscr; assert_true: expected true got false
+FAIL MathML parsing &gscr; assert_true: expected true got false
+FAIL MathML parsing &gsim; assert_true: expected true got false
+FAIL MathML parsing &gsime; assert_true: expected true got false
+FAIL MathML parsing &gsiml; assert_true: expected true got false
+FAIL MathML parsing &gtcc; assert_true: expected true got false
+FAIL MathML parsing &gtcir; assert_true: expected true got false
+PASS MathML parsing &gt; 
+FAIL MathML parsing &GT; assert_true: expected true got false
+FAIL MathML parsing &Gt; assert_true: expected true got false
+FAIL MathML parsing &gtdot; assert_true: expected true got false
+FAIL MathML parsing &gtlPar; assert_true: expected true got false
+FAIL MathML parsing &gtquest; assert_true: expected true got false
+FAIL MathML parsing &gtrapprox; assert_true: expected true got false
+FAIL MathML parsing &gtrarr; assert_true: expected true got false
+FAIL MathML parsing &gtrdot; assert_true: expected true got false
+FAIL MathML parsing &gtreqless; assert_true: expected true got false
+FAIL MathML parsing &gtreqqless; assert_true: expected true got false
+FAIL MathML parsing &gtrless; assert_true: expected true got false
+FAIL MathML parsing &gtrsim; assert_true: expected true got false
+FAIL MathML parsing &gvertneqq; assert_true: expected true got false
+FAIL MathML parsing &gvnE; assert_true: expected true got false
+FAIL MathML parsing &Hacek; assert_true: expected true got false
+FAIL MathML parsing &hairsp; assert_true: expected true got false
+FAIL MathML parsing &half; assert_true: expected true got false
+FAIL MathML parsing &hamilt; assert_true: expected true got false
+FAIL MathML parsing &HARDcy; assert_true: expected true got false
+FAIL MathML parsing &hardcy; assert_true: expected true got false
+FAIL MathML parsing &harrcir; assert_true: expected true got false
+FAIL MathML parsing &harr; assert_true: expected true got false
+FAIL MathML parsing &hArr; assert_true: expected true got false
+FAIL MathML parsing &harrw; assert_true: expected true got false
+FAIL MathML parsing &Hat; assert_true: expected true got false
+FAIL MathML parsing &hbar; assert_true: expected true got false
+FAIL MathML parsing &Hcirc; assert_true: expected true got false
+FAIL MathML parsing &hcirc; assert_true: expected true got false
+FAIL MathML parsing &hearts; assert_true: expected true got false
+FAIL MathML parsing &heartsuit; assert_true: expected true got false
+FAIL MathML parsing &hellip; assert_true: expected true got false
+FAIL MathML parsing &hercon; assert_true: expected true got false
+FAIL MathML parsing &hfr; assert_true: expected true got false
+FAIL MathML parsing &Hfr; assert_true: expected true got false
+FAIL MathML parsing &HilbertSpace; assert_true: expected true got false
+FAIL MathML parsing &hksearow; assert_true: expected true got false
+FAIL MathML parsing &hkswarow; assert_true: expected true got false
+FAIL MathML parsing &hoarr; assert_true: expected true got false
+FAIL MathML parsing &homtht; assert_true: expected true got false
+FAIL MathML parsing &hookleftarrow; assert_true: expected true got false
+FAIL MathML parsing &hookrightarrow; assert_true: expected true got false
+FAIL MathML parsing &hopf; assert_true: expected true got false
+FAIL MathML parsing &Hopf; assert_true: expected true got false
+FAIL MathML parsing &horbar; assert_true: expected true got false
+FAIL MathML parsing &HorizontalLine; assert_true: expected true got false
+FAIL MathML parsing &hscr; assert_true: expected true got false
+FAIL MathML parsing &Hscr; assert_true: expected true got false
+FAIL MathML parsing &hslash; assert_true: expected true got false
+FAIL MathML parsing &Hstrok; assert_true: expected true got false
+FAIL MathML parsing &hstrok; assert_true: expected true got false
+FAIL MathML parsing &HumpDownHump; assert_true: expected true got false
+FAIL MathML parsing &HumpEqual; assert_true: expected true got false
+FAIL MathML parsing &hybull; assert_true: expected true got false
+FAIL MathML parsing &hyphen; assert_true: expected true got false
+FAIL MathML parsing &Iacute; assert_true: expected true got false
+FAIL MathML parsing &iacute; assert_true: expected true got false
+FAIL MathML parsing &ic; assert_true: expected true got false
+FAIL MathML parsing &Icirc; assert_true: expected true got false
+FAIL MathML parsing &icirc; assert_true: expected true got false
+FAIL MathML parsing &Icy; assert_true: expected true got false
+FAIL MathML parsing &icy; assert_true: expected true got false
+FAIL MathML parsing &Idot; assert_true: expected true got false
+FAIL MathML parsing &IEcy; assert_true: expected true got false
+FAIL MathML parsing &iecy; assert_true: expected true got false
+FAIL MathML parsing &iexcl; assert_true: expected true got false
+FAIL MathML parsing &iff; assert_true: expected true got false
+FAIL MathML parsing &ifr; assert_true: expected true got false
+FAIL MathML parsing &Ifr; assert_true: expected true got false
+FAIL MathML parsing &Igrave; assert_true: expected true got false
+FAIL MathML parsing &igrave; assert_true: expected true got false
+FAIL MathML parsing &ii; assert_true: expected true got false
+FAIL MathML parsing &iiiint; assert_true: expected true got false
+FAIL MathML parsing &iiint; assert_true: expected true got false
+FAIL MathML parsing &iinfin; assert_true: expected true got false
+FAIL MathML parsing &iiota; assert_true: expected true got false
+FAIL MathML parsing &IJlig; assert_true: expected true got false
+FAIL MathML parsing &ijlig; assert_true: expected true got false
+FAIL MathML parsing &Imacr; assert_true: expected true got false
+FAIL MathML parsing &imacr; assert_true: expected true got false
+FAIL MathML parsing &image; assert_true: expected true got false
+FAIL MathML parsing &ImaginaryI; assert_true: expected true got false
+FAIL MathML parsing &imagline; assert_true: expected true got false
+FAIL MathML parsing &imagpart; assert_true: expected true got false
+FAIL MathML parsing &imath; assert_true: expected true got false
+FAIL MathML parsing &Im; assert_true: expected true got false
+FAIL MathML parsing &imof; assert_true: expected true got false
+FAIL MathML parsing &imped; assert_true: expected true got false
+FAIL MathML parsing &Implies; assert_true: expected true got false
+FAIL MathML parsing &incare; assert_true: expected true got false
+FAIL MathML parsing &in; assert_true: expected true got false
+FAIL MathML parsing &infin; assert_true: expected true got false
+FAIL MathML parsing &infintie; assert_true: expected true got false
+FAIL MathML parsing &inodot; assert_true: expected true got false
+FAIL MathML parsing &intcal; assert_true: expected true got false
+FAIL MathML parsing &int; assert_true: expected true got false
+FAIL MathML parsing &Int; assert_true: expected true got false
+FAIL MathML parsing &integers; assert_true: expected true got false
+FAIL MathML parsing &Integral; assert_true: expected true got false
+FAIL MathML parsing &intercal; assert_true: expected true got false
+FAIL MathML parsing &Intersection; assert_true: expected true got false
+FAIL MathML parsing &intlarhk; assert_true: expected true got false
+FAIL MathML parsing &intprod; assert_true: expected true got false
+FAIL MathML parsing &InvisibleComma; assert_true: expected true got false
+FAIL MathML parsing &InvisibleTimes; assert_true: expected true got false
+FAIL MathML parsing &IOcy; assert_true: expected true got false
+FAIL MathML parsing &iocy; assert_true: expected true got false
+FAIL MathML parsing &Iogon; assert_true: expected true got false
+FAIL MathML parsing &iogon; assert_true: expected true got false
+FAIL MathML parsing &Iopf; assert_true: expected true got false
+FAIL MathML parsing &iopf; assert_true: expected true got false
+FAIL MathML parsing &Iota; assert_true: expected true got false
+FAIL MathML parsing &iota; assert_true: expected true got false
+FAIL MathML parsing &iprod; assert_true: expected true got false
+FAIL MathML parsing &iquest; assert_true: expected true got false
+FAIL MathML parsing &iscr; assert_true: expected true got false
+FAIL MathML parsing &Iscr; assert_true: expected true got false
+FAIL MathML parsing &isin; assert_true: expected true got false
+FAIL MathML parsing &isindot; assert_true: expected true got false
+FAIL MathML parsing &isinE; assert_true: expected true got false
+FAIL MathML parsing &isins; assert_true: expected true got false
+FAIL MathML parsing &isinsv; assert_true: expected true got false
+FAIL MathML parsing &isinv; assert_true: expected true got false
+FAIL MathML parsing &it; assert_true: expected true got false
+FAIL MathML parsing &Itilde; assert_true: expected true got false
+FAIL MathML parsing &itilde; assert_true: expected true got false
+FAIL MathML parsing &Iukcy; assert_true: expected true got false
+FAIL MathML parsing &iukcy; assert_true: expected true got false
+FAIL MathML parsing &Iuml; assert_true: expected true got false
+FAIL MathML parsing &iuml; assert_true: expected true got false
+FAIL MathML parsing &Jcirc; assert_true: expected true got false
+FAIL MathML parsing &jcirc; assert_true: expected true got false
+FAIL MathML parsing &Jcy; assert_true: expected true got false
+FAIL MathML parsing &jcy; assert_true: expected true got false
+FAIL MathML parsing &Jfr; assert_true: expected true got false
+FAIL MathML parsing &jfr; assert_true: expected true got false
+FAIL MathML parsing &jmath; assert_true: expected true got false
+FAIL MathML parsing &Jopf; assert_true: expected true got false
+FAIL MathML parsing &jopf; assert_true: expected true got false
+FAIL MathML parsing &Jscr; assert_true: expected true got false
+FAIL MathML parsing &jscr; assert_true: expected true got false
+FAIL MathML parsing &Jsercy; assert_true: expected true got false
+FAIL MathML parsing &jsercy; assert_true: expected true got false
+FAIL MathML parsing &Jukcy; assert_true: expected true got false
+FAIL MathML parsing &jukcy; assert_true: expected true got false
+FAIL MathML parsing &Kappa; assert_true: expected true got false
+FAIL MathML parsing &kappa; assert_true: expected true got false
+FAIL MathML parsing &kappav; assert_true: expected true got false
+FAIL MathML parsing &Kcedil; assert_true: expected true got false
+FAIL MathML parsing &kcedil; assert_true: expected true got false
+FAIL MathML parsing &Kcy; assert_true: expected true got false
+FAIL MathML parsing &kcy; assert_true: expected true got false
+FAIL MathML parsing &Kfr; assert_true: expected true got false
+FAIL MathML parsing &kfr; assert_true: expected true got false
+FAIL MathML parsing &kgreen; assert_true: expected true got false
+FAIL MathML parsing &KHcy; assert_true: expected true got false
+FAIL MathML parsing &khcy; assert_true: expected true got false
+FAIL MathML parsing &KJcy; assert_true: expected true got false
+FAIL MathML parsing &kjcy; assert_true: expected true got false
+FAIL MathML parsing &Kopf; assert_true: expected true got false
+FAIL MathML parsing &kopf; assert_true: expected true got false
+FAIL MathML parsing &Kscr; assert_true: expected true got false
+FAIL MathML parsing &kscr; assert_true: expected true got false
+FAIL MathML parsing &lAarr; assert_true: expected true got false
+FAIL MathML parsing &Lacute; assert_true: expected true got false
+FAIL MathML parsing &lacute; assert_true: expected true got false
+FAIL MathML parsing &laemptyv; assert_true: expected true got false
+FAIL MathML parsing &lagran; assert_true: expected true got false
+FAIL MathML parsing &Lambda; assert_true: expected true got false
+FAIL MathML parsing &lambda; assert_true: expected true got false
+FAIL MathML parsing &lang; assert_true: expected true got false
+FAIL MathML parsing &Lang; assert_true: expected true got false
+FAIL MathML parsing &langd; assert_true: expected true got false
+FAIL MathML parsing &langle; assert_true: expected true got false
+FAIL MathML parsing &lap; assert_true: expected true got false
+FAIL MathML parsing &Laplacetrf; assert_true: expected true got false
+FAIL MathML parsing &laquo; assert_true: expected true got false
+FAIL MathML parsing &larrb; assert_true: expected true got false
+FAIL MathML parsing &larrbfs; assert_true: expected true got false
+FAIL MathML parsing &larr; assert_true: expected true got false
+FAIL MathML parsing &Larr; assert_true: expected true got false
+FAIL MathML parsing &lArr; assert_true: expected true got false
+FAIL MathML parsing &larrfs; assert_true: expected true got false
+FAIL MathML parsing &larrhk; assert_true: expected true got false
+FAIL MathML parsing &larrlp; assert_true: expected true got false
+FAIL MathML parsing &larrpl; assert_true: expected true got false
+FAIL MathML parsing &larrsim; assert_true: expected true got false
+FAIL MathML parsing &larrtl; assert_true: expected true got false
+FAIL MathML parsing &latail; assert_true: expected true got false
+FAIL MathML parsing &lAtail; assert_true: expected true got false
+FAIL MathML parsing &lat; assert_true: expected true got false
+FAIL MathML parsing &late; assert_true: expected true got false
+FAIL MathML parsing &lates; assert_true: expected true got false
+FAIL MathML parsing &lbarr; assert_true: expected true got false
+FAIL MathML parsing &lBarr; assert_true: expected true got false
+FAIL MathML parsing &lbbrk; assert_true: expected true got false
+FAIL MathML parsing &lbrace; assert_true: expected true got false
+FAIL MathML parsing &lbrack; assert_true: expected true got false
+FAIL MathML parsing &lbrke; assert_true: expected true got false
+FAIL MathML parsing &lbrksld; assert_true: expected true got false
+FAIL MathML parsing &lbrkslu; assert_true: expected true got false
+FAIL MathML parsing &Lcaron; assert_true: expected true got false
+FAIL MathML parsing &lcaron; assert_true: expected true got false
+FAIL MathML parsing &Lcedil; assert_true: expected true got false
+FAIL MathML parsing &lcedil; assert_true: expected true got false
+FAIL MathML parsing &lceil; assert_true: expected true got false
+FAIL MathML parsing &lcub; assert_true: expected true got false
+FAIL MathML parsing &Lcy; assert_true: expected true got false
+FAIL MathML parsing &lcy; assert_true: expected true got false
+FAIL MathML parsing &ldca; assert_true: expected true got false
+FAIL MathML parsing &ldquo; assert_true: expected true got false
+FAIL MathML parsing &ldquor; assert_true: expected true got false
+FAIL MathML parsing &ldrdhar; assert_true: expected true got false
+FAIL MathML parsing &ldrushar; assert_true: expected true got false
+FAIL MathML parsing &ldsh; assert_true: expected true got false
+FAIL MathML parsing &le; assert_true: expected true got false
+FAIL MathML parsing &lE; assert_true: expected true got false
+FAIL MathML parsing &LeftAngleBracket; assert_true: expected true got false
+FAIL MathML parsing &LeftArrowBar; assert_true: expected true got false
+FAIL MathML parsing &leftarrow; assert_true: expected true got false
+FAIL MathML parsing &LeftArrow; assert_true: expected true got false
+FAIL MathML parsing &Leftarrow; assert_true: expected true got false
+FAIL MathML parsing &LeftArrowRightArrow; assert_true: expected true got false
+FAIL MathML parsing &leftarrowtail; assert_true: expected true got false
+FAIL MathML parsing &LeftCeiling; assert_true: expected true got false
+FAIL MathML parsing &LeftDoubleBracket; assert_true: expected true got false
+FAIL MathML parsing &LeftDownTeeVector; assert_true: expected true got false
+FAIL MathML parsing &LeftDownVectorBar; assert_true: expected true got false
+FAIL MathML parsing &LeftDownVector; assert_true: expected true got false
+FAIL MathML parsing &LeftFloor; assert_true: expected true got false
+FAIL MathML parsing &leftharpoondown; assert_true: expected true got false
+FAIL MathML parsing &leftharpoonup; assert_true: expected true got false
+FAIL MathML parsing &leftleftarrows; assert_true: expected true got false
+FAIL MathML parsing &leftrightarrow; assert_true: expected true got false
+FAIL MathML parsing &LeftRightArrow; assert_true: expected true got false
+FAIL MathML parsing &Leftrightarrow; assert_true: expected true got false
+FAIL MathML parsing &leftrightarrows; assert_true: expected true got false
+FAIL MathML parsing &leftrightharpoons; assert_true: expected true got false
+FAIL MathML parsing &leftrightsquigarrow; assert_true: expected true got false
+FAIL MathML parsing &LeftRightVector; assert_true: expected true got false
+FAIL MathML parsing &LeftTeeArrow; assert_true: expected true got false
+FAIL MathML parsing &LeftTee; assert_true: expected true got false
+FAIL MathML parsing &LeftTeeVector; assert_true: expected true got false
+FAIL MathML parsing &leftthreetimes; assert_true: expected true got false
+FAIL MathML parsing &LeftTriangleBar; assert_true: expected true got false
+FAIL MathML parsing &LeftTriangle; assert_true: expected true got false
+FAIL MathML parsing &LeftTriangleEqual; assert_true: expected true got false
+FAIL MathML parsing &LeftUpDownVector; assert_true: expected true got false
+FAIL MathML parsing &LeftUpTeeVector; assert_true: expected true got false
+FAIL MathML parsing &LeftUpVectorBar; assert_true: expected true got false
+FAIL MathML parsing &LeftUpVector; assert_true: expected true got false
+FAIL MathML parsing &LeftVectorBar; assert_true: expected true got false
+FAIL MathML parsing &LeftVector; assert_true: expected true got false
+FAIL MathML parsing &lEg; assert_true: expected true got false
+FAIL MathML parsing &leg; assert_true: expected true got false
+FAIL MathML parsing &leq; assert_true: expected true got false
+FAIL MathML parsing &leqq; assert_true: expected true got false
+FAIL MathML parsing &leqslant; assert_true: expected true got false
+FAIL MathML parsing &lescc; assert_true: expected true got false
+FAIL MathML parsing &les; assert_true: expected true got false
+FAIL MathML parsing &lesdot; assert_true: expected true got false
+FAIL MathML parsing &lesdoto; assert_true: expected true got false
+FAIL MathML parsing &lesdotor; assert_true: expected true got false
+FAIL MathML parsing &lesg; assert_true: expected true got false
+FAIL MathML parsing &lesges; assert_true: expected true got false
+FAIL MathML parsing &lessapprox; assert_true: expected true got false
+FAIL MathML parsing &lessdot; assert_true: expected true got false
+FAIL MathML parsing &lesseqgtr; assert_true: expected true got false
+FAIL MathML parsing &lesseqqgtr; assert_true: expected true got false
+FAIL MathML parsing &LessEqualGreater; assert_true: expected true got false
+FAIL MathML parsing &LessFullEqual; assert_true: expected true got false
+FAIL MathML parsing &LessGreater; assert_true: expected true got false
+FAIL MathML parsing &lessgtr; assert_true: expected true got false
+FAIL MathML parsing &LessLess; assert_true: expected true got false
+FAIL MathML parsing &lesssim; assert_true: expected true got false
+FAIL MathML parsing &LessSlantEqual; assert_true: expected true got false
+FAIL MathML parsing &LessTilde; assert_true: expected true got false
+FAIL MathML parsing &lfisht; assert_true: expected true got false
+FAIL MathML parsing &lfloor; assert_true: expected true got false
+FAIL MathML parsing &Lfr; assert_true: expected true got false
+FAIL MathML parsing &lfr; assert_true: expected true got false
+FAIL MathML parsing &lg; assert_true: expected true got false
+FAIL MathML parsing &lgE; assert_true: expected true got false
+FAIL MathML parsing &lHar; assert_true: expected true got false
+FAIL MathML parsing &lhard; assert_true: expected true got false
+FAIL MathML parsing &lharu; assert_true: expected true got false
+FAIL MathML parsing &lharul; assert_true: expected true got false
+FAIL MathML parsing &lhblk; assert_true: expected true got false
+FAIL MathML parsing &LJcy; assert_true: expected true got false
+FAIL MathML parsing &ljcy; assert_true: expected true got false
+FAIL MathML parsing &llarr; assert_true: expected true got false
+FAIL MathML parsing &ll; assert_true: expected true got false
+FAIL MathML parsing &Ll; assert_true: expected true got false
+FAIL MathML parsing &llcorner; assert_true: expected true got false
+FAIL MathML parsing &Lleftarrow; assert_true: expected true got false
+FAIL MathML parsing &llhard; assert_true: expected true got false
+FAIL MathML parsing &lltri; assert_true: expected true got false
+FAIL MathML parsing &Lmidot; assert_true: expected true got false
+FAIL MathML parsing &lmidot; assert_true: expected true got false
+FAIL MathML parsing &lmoustache; assert_true: expected true got false
+FAIL MathML parsing &lmoust; assert_true: expected true got false
+FAIL MathML parsing &lnap; assert_true: expected true got false
+FAIL MathML parsing &lnapprox; assert_true: expected true got false
+FAIL MathML parsing &lne; assert_true: expected true got false
+FAIL MathML parsing &lnE; assert_true: expected true got false
+FAIL MathML parsing &lneq; assert_true: expected true got false
+FAIL MathML parsing &lneqq; assert_true: expected true got false
+FAIL MathML parsing &lnsim; assert_true: expected true got false
+FAIL MathML parsing &loang; assert_true: expected true got false
+FAIL MathML parsing &loarr; assert_true: expected true got false
+FAIL MathML parsing &lobrk; assert_true: expected true got false
+FAIL MathML parsing &longleftarrow; assert_true: expected true got false
+FAIL MathML parsing &LongLeftArrow; assert_true: expected true got false
+FAIL MathML parsing &Longleftarrow; assert_true: expected true got false
+FAIL MathML parsing &longleftrightarrow; assert_true: expected true got false
+FAIL MathML parsing &LongLeftRightArrow; assert_true: expected true got false
+FAIL MathML parsing &Longleftrightarrow; assert_true: expected true got false
+FAIL MathML parsing &longmapsto; assert_true: expected true got false
+FAIL MathML parsing &longrightarrow; assert_true: expected true got false
+FAIL MathML parsing &LongRightArrow; assert_true: expected true got false
+FAIL MathML parsing &Longrightarrow; assert_true: expected true got false
+FAIL MathML parsing &looparrowleft; assert_true: expected true got false
+FAIL MathML parsing &looparrowright; assert_true: expected true got false
+FAIL MathML parsing &lopar; assert_true: expected true got false
+FAIL MathML parsing &Lopf; assert_true: expected true got false
+FAIL MathML parsing &lopf; assert_true: expected true got false
+FAIL MathML parsing &loplus; assert_true: expected true got false
+FAIL MathML parsing &lotimes; assert_true: expected true got false
+FAIL MathML parsing &lowast; assert_true: expected true got false
+FAIL MathML parsing &lowbar; assert_true: expected true got false
+FAIL MathML parsing &LowerLeftArrow; assert_true: expected true got false
+FAIL MathML parsing &LowerRightArrow; assert_true: expected true got false
+FAIL MathML parsing &loz; assert_true: expected true got false
+FAIL MathML parsing &lozenge; assert_true: expected true got false
+FAIL MathML parsing &lozf; assert_true: expected true got false
+FAIL MathML parsing &lpar; assert_true: expected true got false
+FAIL MathML parsing &lparlt; assert_true: expected true got false
+FAIL MathML parsing &lrarr; assert_true: expected true got false
+FAIL MathML parsing &lrcorner; assert_true: expected true got false
+FAIL MathML parsing &lrhar; assert_true: expected true got false
+FAIL MathML parsing &lrhard; assert_true: expected true got false
+FAIL MathML parsing &lrm; assert_true: expected true got false
+FAIL MathML parsing &lrtri; assert_true: expected true got false
+FAIL MathML parsing &lsaquo; assert_true: expected true got false
+FAIL MathML parsing &lscr; assert_true: expected true got false
+FAIL MathML parsing &Lscr; assert_true: expected true got false
+FAIL MathML parsing &lsh; assert_true: expected true got false
+FAIL MathML parsing &Lsh; assert_true: expected true got false
+FAIL MathML parsing &lsim; assert_true: expected true got false
+FAIL MathML parsing &lsime; assert_true: expected true got false
+FAIL MathML parsing &lsimg; assert_true: expected true got false
+FAIL MathML parsing &lsqb; assert_true: expected true got false
+FAIL MathML parsing &lsquo; assert_true: expected true got false
+FAIL MathML parsing &lsquor; assert_true: expected true got false
+FAIL MathML parsing &Lstrok; assert_true: expected true got false
+FAIL MathML parsing &lstrok; assert_true: expected true got false
+FAIL MathML parsing &ltcc; assert_true: expected true got false
+FAIL MathML parsing &ltcir; assert_true: expected true got false
+PASS MathML parsing &lt; 
+FAIL MathML parsing &LT; assert_true: expected true got false
+FAIL MathML parsing &Lt; assert_true: expected true got false
+FAIL MathML parsing &ltdot; assert_true: expected true got false
+FAIL MathML parsing &lthree; assert_true: expected true got false
+FAIL MathML parsing &ltimes; assert_true: expected true got false
+FAIL MathML parsing &ltlarr; assert_true: expected true got false
+FAIL MathML parsing &ltquest; assert_true: expected true got false
+FAIL MathML parsing &ltri; assert_true: expected true got false
+FAIL MathML parsing &ltrie; assert_true: expected true got false
+FAIL MathML parsing &ltrif; assert_true: expected true got false
+FAIL MathML parsing &ltrPar; assert_true: expected true got false
+FAIL MathML parsing &lurdshar; assert_true: expected true got false
+FAIL MathML parsing &luruhar; assert_true: expected true got false
+FAIL MathML parsing &lvertneqq; assert_true: expected true got false
+FAIL MathML parsing &lvnE; assert_true: expected true got false
+FAIL MathML parsing &macr; assert_true: expected true got false
+FAIL MathML parsing &male; assert_true: expected true got false
+FAIL MathML parsing &malt; assert_true: expected true got false
+FAIL MathML parsing &maltese; assert_true: expected true got false
+FAIL MathML parsing &Map; assert_true: expected true got false
+FAIL MathML parsing &map; assert_true: expected true got false
+FAIL MathML parsing &mapsto; assert_true: expected true got false
+FAIL MathML parsing &mapstodown; assert_true: expected true got false
+FAIL MathML parsing &mapstoleft; assert_true: expected true got false
+FAIL MathML parsing &mapstoup; assert_true: expected true got false
+FAIL MathML parsing &marker; assert_true: expected true got false
+FAIL MathML parsing &mcomma; assert_true: expected true got false
+FAIL MathML parsing &Mcy; assert_true: expected true got false
+FAIL MathML parsing &mcy; assert_true: expected true got false
+FAIL MathML parsing &mdash; assert_true: expected true got false
+FAIL MathML parsing &mDDot; assert_true: expected true got false
+FAIL MathML parsing &measuredangle; assert_true: expected true got false
+FAIL MathML parsing &MediumSpace; assert_true: expected true got false
+FAIL MathML parsing &Mellintrf; assert_true: expected true got false
+FAIL MathML parsing &Mfr; assert_true: expected true got false
+FAIL MathML parsing &mfr; assert_true: expected true got false
+FAIL MathML parsing &mho; assert_true: expected true got false
+FAIL MathML parsing &micro; assert_true: expected true got false
+FAIL MathML parsing &midast; assert_true: expected true got false
+FAIL MathML parsing &midcir; assert_true: expected true got false
+FAIL MathML parsing &mid; assert_true: expected true got false
+FAIL MathML parsing &middot; assert_true: expected true got false
+FAIL MathML parsing &minusb; assert_true: expected true got false
+FAIL MathML parsing &minus; assert_true: expected true got false
+FAIL MathML parsing &minusd; assert_true: expected true got false
+FAIL MathML parsing &minusdu; assert_true: expected true got false
+FAIL MathML parsing &MinusPlus; assert_true: expected true got false
+FAIL MathML parsing &mlcp; assert_true: expected true got false
+FAIL MathML parsing &mldr; assert_true: expected true got false
+FAIL MathML parsing &mnplus; assert_true: expected true got false
+FAIL MathML parsing &models; assert_true: expected true got false
+FAIL MathML parsing &Mopf; assert_true: expected true got false
+FAIL MathML parsing &mopf; assert_true: expected true got false
+FAIL MathML parsing &mp; assert_true: expected true got false
+FAIL MathML parsing &mscr; assert_true: expected true got false
+FAIL MathML parsing &Mscr; assert_true: expected true got false
+FAIL MathML parsing &mstpos; assert_true: expected true got false
+FAIL MathML parsing &Mu; assert_true: expected true got false
+FAIL MathML parsing &mu; assert_true: expected true got false
+FAIL MathML parsing &multimap; assert_true: expected true got false
+FAIL MathML parsing &mumap; assert_true: expected true got false
+FAIL MathML parsing &nabla; assert_true: expected true got false
+FAIL MathML parsing &Nacute; assert_true: expected true got false
+FAIL MathML parsing &nacute; assert_true: expected true got false
+FAIL MathML parsing &nang; assert_true: expected true got false
+FAIL MathML parsing &nap; assert_true: expected true got false
+FAIL MathML parsing &napE; assert_true: expected true got false
+FAIL MathML parsing &napid; assert_true: expected true got false
+FAIL MathML parsing &napos; assert_true: expected true got false
+FAIL MathML parsing &napprox; assert_true: expected true got false
+FAIL MathML parsing &natural; assert_true: expected true got false
+FAIL MathML parsing &naturals; assert_true: expected true got false
+FAIL MathML parsing &natur; assert_true: expected true got false
+FAIL MathML parsing &nbsp; assert_true: expected true got false
+FAIL MathML parsing &nbump; assert_true: expected true got false
+FAIL MathML parsing &nbumpe; assert_true: expected true got false
+FAIL MathML parsing &ncap; assert_true: expected true got false
+FAIL MathML parsing &Ncaron; assert_true: expected true got false
+FAIL MathML parsing &ncaron; assert_true: expected true got false
+FAIL MathML parsing &Ncedil; assert_true: expected true got false
+FAIL MathML parsing &ncedil; assert_true: expected true got false
+FAIL MathML parsing &ncong; assert_true: expected true got false
+FAIL MathML parsing &ncongdot; assert_true: expected true got false
+FAIL MathML parsing &ncup; assert_true: expected true got false
+FAIL MathML parsing &Ncy; assert_true: expected true got false
+FAIL MathML parsing &ncy; assert_true: expected true got false
+FAIL MathML parsing &ndash; assert_true: expected true got false
+FAIL MathML parsing &nearhk; assert_true: expected true got false
+FAIL MathML parsing &nearr; assert_true: expected true got false
+FAIL MathML parsing &neArr; assert_true: expected true got false
+FAIL MathML parsing &nearrow; assert_true: expected true got false
+FAIL MathML parsing &ne; assert_true: expected true got false
+FAIL MathML parsing &nedot; assert_true: expected true got false
+FAIL MathML parsing &NegativeMediumSpace; assert_true: expected true got false
+FAIL MathML parsing &NegativeThickSpace; assert_true: expected true got false
+FAIL MathML parsing &NegativeThinSpace; assert_true: expected true got false
+FAIL MathML parsing &NegativeVeryThinSpace; assert_true: expected true got false
+FAIL MathML parsing &nequiv; assert_true: expected true got false
+FAIL MathML parsing &nesear; assert_true: expected true got false
+FAIL MathML parsing &nesim; assert_true: expected true got false
+FAIL MathML parsing &NestedGreaterGreater; assert_true: expected true got false
+FAIL MathML parsing &NestedLessLess; assert_true: expected true got false
+FAIL MathML parsing &NewLine; assert_true: expected true got false
+FAIL MathML parsing &nexist; assert_true: expected true got false
+FAIL MathML parsing &nexists; assert_true: expected true got false
+FAIL MathML parsing &Nfr; assert_true: expected true got false
+FAIL MathML parsing &nfr; assert_true: expected true got false
+FAIL MathML parsing &ngE; assert_true: expected true got false
+FAIL MathML parsing &nge; assert_true: expected true got false
+FAIL MathML parsing &ngeq; assert_true: expected true got false
+FAIL MathML parsing &ngeqq; assert_true: expected true got false
+FAIL MathML parsing &ngeqslant; assert_true: expected true got false
+FAIL MathML parsing &nges; assert_true: expected true got false
+FAIL MathML parsing &nGg; assert_true: expected true got false
+FAIL MathML parsing &ngsim; assert_true: expected true got false
+FAIL MathML parsing &nGt; assert_true: expected true got false
+FAIL MathML parsing &ngt; assert_true: expected true got false
+FAIL MathML parsing &ngtr; assert_true: expected true got false
+FAIL MathML parsing &nGtv; assert_true: expected true got false
+FAIL MathML parsing &nharr; assert_true: expected true got false
+FAIL MathML parsing &nhArr; assert_true: expected true got false
+FAIL MathML parsing &nhpar; assert_true: expected true got false
+FAIL MathML parsing &ni; assert_true: expected true got false
+FAIL MathML parsing &nis; assert_true: expected true got false
+FAIL MathML parsing &nisd; assert_true: expected true got false
+FAIL MathML parsing &niv; assert_true: expected true got false
+FAIL MathML parsing &NJcy; assert_true: expected true got false
+FAIL MathML parsing &njcy; assert_true: expected true got false
+FAIL MathML parsing &nlarr; assert_true: expected true got false
+FAIL MathML parsing &nlArr; assert_true: expected true got false
+FAIL MathML parsing &nldr; assert_true: expected true got false
+FAIL MathML parsing &nlE; assert_true: expected true got false
+FAIL MathML parsing &nle; assert_true: expected true got false
+FAIL MathML parsing &nleftarrow; assert_true: expected true got false
+FAIL MathML parsing &nLeftarrow; assert_true: expected true got false
+FAIL MathML parsing &nleftrightarrow; assert_true: expected true got false
+FAIL MathML parsing &nLeftrightarrow; assert_true: expected true got false
+FAIL MathML parsing &nleq; assert_true: expected true got false
+FAIL MathML parsing &nleqq; assert_true: expected true got false
+FAIL MathML parsing &nleqslant; assert_true: expected true got false
+FAIL MathML parsing &nles; assert_true: expected true got false
+FAIL MathML parsing &nless; assert_true: expected true got false
+FAIL MathML parsing &nLl; assert_true: expected true got false
+FAIL MathML parsing &nlsim; assert_true: expected true got false
+FAIL MathML parsing &nLt; assert_true: expected true got false
+FAIL MathML parsing &nlt; assert_true: expected true got false
+FAIL MathML parsing &nltri; assert_true: expected true got false
+FAIL MathML parsing &nltrie; assert_true: expected true got false
+FAIL MathML parsing &nLtv; assert_true: expected true got false
+FAIL MathML parsing &nmid; assert_true: expected true got false
+FAIL MathML parsing &NoBreak; assert_true: expected true got false
+FAIL MathML parsing &NonBreakingSpace; assert_true: expected true got false
+FAIL MathML parsing &nopf; assert_true: expected true got false
+FAIL MathML parsing &Nopf; assert_true: expected true got false
+FAIL MathML parsing &Not; assert_true: expected true got false
+FAIL MathML parsing &not; assert_true: expected true got false
+FAIL MathML parsing &NotCongruent; assert_true: expected true got false
+FAIL MathML parsing &NotCupCap; assert_true: expected true got false
+FAIL MathML parsing &NotDoubleVerticalBar; assert_true: expected true got false
+FAIL MathML parsing &NotElement; assert_true: expected true got false
+FAIL MathML parsing &NotEqual; assert_true: expected true got false
+FAIL MathML parsing &NotEqualTilde; assert_true: expected true got false
+FAIL MathML parsing &NotExists; assert_true: expected true got false
+FAIL MathML parsing &NotGreater; assert_true: expected true got false
+FAIL MathML parsing &NotGreaterEqual; assert_true: expected true got false
+FAIL MathML parsing &NotGreaterFullEqual; assert_true: expected true got false
+FAIL MathML parsing &NotGreaterGreater; assert_true: expected true got false
+FAIL MathML parsing &NotGreaterLess; assert_true: expected true got false
+FAIL MathML parsing &NotGreaterSlantEqual; assert_true: expected true got false
+FAIL MathML parsing &NotGreaterTilde; assert_true: expected true got false
+FAIL MathML parsing &NotHumpDownHump; assert_true: expected true got false
+FAIL MathML parsing &NotHumpEqual; assert_true: expected true got false
+FAIL MathML parsing &notin; assert_true: expected true got false
+FAIL MathML parsing &notindot; assert_true: expected true got false
+FAIL MathML parsing &notinE; assert_true: expected true got false
+FAIL MathML parsing &notinva; assert_true: expected true got false
+FAIL MathML parsing &notinvb; assert_true: expected true got false
+FAIL MathML parsing &notinvc; assert_true: expected true got false
+FAIL MathML parsing &NotLeftTriangleBar; assert_true: expected true got false
+FAIL MathML parsing &NotLeftTriangle; assert_true: expected true got false
+FAIL MathML parsing &NotLeftTriangleEqual; assert_true: expected true got false
+FAIL MathML parsing &NotLess; assert_true: expected true got false
+FAIL MathML parsing &NotLessEqual; assert_true: expected true got false
+FAIL MathML parsing &NotLessGreater; assert_true: expected true got false
+FAIL MathML parsing &NotLessLess; assert_true: expected true got false
+FAIL MathML parsing &NotLessSlantEqual; assert_true: expected true got false
+FAIL MathML parsing &NotLessTilde; assert_true: expected true got false
+FAIL MathML parsing &NotNestedGreaterGreater; assert_true: expected true got false
+FAIL MathML parsing &NotNestedLessLess; assert_true: expected true got false
+FAIL MathML parsing &notni; assert_true: expected true got false
+FAIL MathML parsing &notniva; assert_true: expected true got false
+FAIL MathML parsing &notnivb; assert_true: expected true got false
+FAIL MathML parsing &notnivc; assert_true: expected true got false
+FAIL MathML parsing &NotPrecedes; assert_true: expected true got false
+FAIL MathML parsing &NotPrecedesEqual; assert_true: expected true got false
+FAIL MathML parsing &NotPrecedesSlantEqual; assert_true: expected true got false
+FAIL MathML parsing &NotReverseElement; assert_true: expected true got false
+FAIL MathML parsing &NotRightTriangleBar; assert_true: expected true got false
+FAIL MathML parsing &NotRightTriangle; assert_true: expected true got false
+FAIL MathML parsing &NotRightTriangleEqual; assert_true: expected true got false
+FAIL MathML parsing &NotSquareSubset; assert_true: expected true got false
+FAIL MathML parsing &NotSquareSubsetEqual; assert_true: expected true got false
+FAIL MathML parsing &NotSquareSuperset; assert_true: expected true got false
+FAIL MathML parsing &NotSquareSupersetEqual; assert_true: expected true got false
+FAIL MathML parsing &NotSubset; assert_true: expected true got false
+FAIL MathML parsing &NotSubsetEqual; assert_true: expected true got false
+FAIL MathML parsing &NotSucceeds; assert_true: expected true got false
+FAIL MathML parsing &NotSucceedsEqual; assert_true: expected true got false
+FAIL MathML parsing &NotSucceedsSlantEqual; assert_true: expected true got false
+FAIL MathML parsing &NotSucceedsTilde; assert_true: expected true got false
+FAIL MathML parsing &NotSuperset; assert_true: expected true got false
+FAIL MathML parsing &NotSupersetEqual; assert_true: expected true got false
+FAIL MathML parsing &NotTilde; assert_true: expected true got false
+FAIL MathML parsing &NotTildeEqual; assert_true: expected true got false
+FAIL MathML parsing &NotTildeFullEqual; assert_true: expected true got false
+FAIL MathML parsing &NotTildeTilde; assert_true: expected true got false
+FAIL MathML parsing &NotVerticalBar; assert_true: expected true got false
+FAIL MathML parsing &nparallel; assert_true: expected true got false
+FAIL MathML parsing &npar; assert_true: expected true got false
+FAIL MathML parsing &nparsl; assert_true: expected true got false
+FAIL MathML parsing &npart; assert_true: expected true got false
+FAIL MathML parsing &npolint; assert_true: expected true got false
+FAIL MathML parsing &npr; assert_true: expected true got false
+FAIL MathML parsing &nprcue; assert_true: expected true got false
+FAIL MathML parsing &nprec; assert_true: expected true got false
+FAIL MathML parsing &npreceq; assert_true: expected true got false
+FAIL MathML parsing &npre; assert_true: expected true got false
+FAIL MathML parsing &nrarrc; assert_true: expected true got false
+FAIL MathML parsing &nrarr; assert_true: expected true got false
+FAIL MathML parsing &nrArr; assert_true: expected true got false
+FAIL MathML parsing &nrarrw; assert_true: expected true got false
+FAIL MathML parsing &nrightarrow; assert_true: expected true got false
+FAIL MathML parsing &nRightarrow; assert_true: expected true got false
+FAIL MathML parsing &nrtri; assert_true: expected true got false
+FAIL MathML parsing &nrtrie; assert_true: expected true got false
+FAIL MathML parsing &nsc; assert_true: expected true got false
+FAIL MathML parsing &nsccue; assert_true: expected true got false
+FAIL MathML parsing &nsce; assert_true: expected true got false
+FAIL MathML parsing &Nscr; assert_true: expected true got false
+FAIL MathML parsing &nscr; assert_true: expected true got false
+FAIL MathML parsing &nshortmid; assert_true: expected true got false
+FAIL MathML parsing &nshortparallel; assert_true: expected true got false
+FAIL MathML parsing &nsim; assert_true: expected true got false
+FAIL MathML parsing &nsime; assert_true: expected true got false
+FAIL MathML parsing &nsimeq; assert_true: expected true got false
+FAIL MathML parsing &nsmid; assert_true: expected true got false
+FAIL MathML parsing &nspar; assert_true: expected true got false
+FAIL MathML parsing &nsqsube; assert_true: expected true got false
+FAIL MathML parsing &nsqsupe; assert_true: expected true got false
+FAIL MathML parsing &nsub; assert_true: expected true got false
+FAIL MathML parsing &nsubE; assert_true: expected true got false
+FAIL MathML parsing &nsube; assert_true: expected true got false
+FAIL MathML parsing &nsubset; assert_true: expected true got false
+FAIL MathML parsing &nsubseteq; assert_true: expected true got false
+FAIL MathML parsing &nsubseteqq; assert_true: expected true got false
+FAIL MathML parsing &nsucc; assert_true: expected true got false
+FAIL MathML parsing &nsucceq; assert_true: expected true got false
+FAIL MathML parsing &nsup; assert_true: expected true got false
+FAIL MathML parsing &nsupE; assert_true: expected true got false
+FAIL MathML parsing &nsupe; assert_true: expected true got false
+FAIL MathML parsing &nsupset; assert_true: expected true got false
+FAIL MathML parsing &nsupseteq; assert_true: expected true got false
+FAIL MathML parsing &nsupseteqq; assert_true: expected true got false
+FAIL MathML parsing &ntgl; assert_true: expected true got false
+FAIL MathML parsing &Ntilde; assert_true: expected true got false
+FAIL MathML parsing &ntilde; assert_true: expected true got false
+FAIL MathML parsing &ntlg; assert_true: expected true got false
+FAIL MathML parsing &ntriangleleft; assert_true: expected true got false
+FAIL MathML parsing &ntrianglelefteq; assert_true: expected true got false
+FAIL MathML parsing &ntriangleright; assert_true: expected true got false
+FAIL MathML parsing &ntrianglerighteq; assert_true: expected true got false
+FAIL MathML parsing &Nu; assert_true: expected true got false
+FAIL MathML parsing &nu; assert_true: expected true got false
+FAIL MathML parsing &num; assert_true: expected true got false
+FAIL MathML parsing &numero; assert_true: expected true got false
+FAIL MathML parsing &numsp; assert_true: expected true got false
+FAIL MathML parsing &nvap; assert_true: expected true got false
+FAIL MathML parsing &nvdash; assert_true: expected true got false
+FAIL MathML parsing &nvDash; assert_true: expected true got false
+FAIL MathML parsing &nVdash; assert_true: expected true got false
+FAIL MathML parsing &nVDash; assert_true: expected true got false
+FAIL MathML parsing &nvge; assert_true: expected true got false
+FAIL MathML parsing &nvgt; assert_true: expected true got false
+FAIL MathML parsing &nvHarr; assert_true: expected true got false
+FAIL MathML parsing &nvinfin; assert_true: expected true got false
+FAIL MathML parsing &nvlArr; assert_true: expected true got false
+FAIL MathML parsing &nvle; assert_true: expected true got false
+FAIL MathML parsing &nvlt; assert_true: expected true got false
+FAIL MathML parsing &nvltrie; assert_true: expected true got false
+FAIL MathML parsing &nvrArr; assert_true: expected true got false
+FAIL MathML parsing &nvrtrie; assert_true: expected true got false
+FAIL MathML parsing &nvsim; assert_true: expected true got false
+FAIL MathML parsing &nwarhk; assert_true: expected true got false
+FAIL MathML parsing &nwarr; assert_true: expected true got false
+FAIL MathML parsing &nwArr; assert_true: expected true got false
+FAIL MathML parsing &nwarrow; assert_true: expected true got false
+FAIL MathML parsing &nwnear; assert_true: expected true got false
+FAIL MathML parsing &Oacute; assert_true: expected true got false
+FAIL MathML parsing &oacute; assert_true: expected true got false
+FAIL MathML parsing &oast; assert_true: expected true got false
+FAIL MathML parsing &Ocirc; assert_true: expected true got false
+FAIL MathML parsing &ocirc; assert_true: expected true got false
+FAIL MathML parsing &ocir; assert_true: expected true got false
+FAIL MathML parsing &Ocy; assert_true: expected true got false
+FAIL MathML parsing &ocy; assert_true: expected true got false
+FAIL MathML parsing &odash; assert_true: expected true got false
+FAIL MathML parsing &Odblac; assert_true: expected true got false
+FAIL MathML parsing &odblac; assert_true: expected true got false
+FAIL MathML parsing &odiv; assert_true: expected true got false
+FAIL MathML parsing &odot; assert_true: expected true got false
+FAIL MathML parsing &odsold; assert_true: expected true got false
+FAIL MathML parsing &OElig; assert_true: expected true got false
+FAIL MathML parsing &oelig; assert_true: expected true got false
+FAIL MathML parsing &ofcir; assert_true: expected true got false
+FAIL MathML parsing &Ofr; assert_true: expected true got false
+FAIL MathML parsing &ofr; assert_true: expected true got false
+FAIL MathML parsing &ogon; assert_true: expected true got false
+FAIL MathML parsing &Ograve; assert_true: expected true got false
+FAIL MathML parsing &ograve; assert_true: expected true got false
+FAIL MathML parsing &ogt; assert_true: expected true got false
+FAIL MathML parsing &ohbar; assert_true: expected true got false
+FAIL MathML parsing &ohm; assert_true: expected true got false
+FAIL MathML parsing &oint; assert_true: expected true got false
+FAIL MathML parsing &olarr; assert_true: expected true got false
+FAIL MathML parsing &olcir; assert_true: expected true got false
+FAIL MathML parsing &olcross; assert_true: expected true got false
+FAIL MathML parsing &oline; assert_true: expected true got false
+FAIL MathML parsing &olt; assert_true: expected true got false
+FAIL MathML parsing &Omacr; assert_true: expected true got false
+FAIL MathML parsing &omacr; assert_true: expected true got false
+FAIL MathML parsing &Omega; assert_true: expected true got false
+FAIL MathML parsing &omega; assert_true: expected true got false
+FAIL MathML parsing &Omicron; assert_true: expected true got false
+FAIL MathML parsing &omicron; assert_true: expected true got false
+FAIL MathML parsing &omid; assert_true: expected true got false
+FAIL MathML parsing &ominus; assert_true: expected true got false
+FAIL MathML parsing &Oopf; assert_true: expected true got false
+FAIL MathML parsing &oopf; assert_true: expected true got false
+FAIL MathML parsing &opar; assert_true: expected true got false
+FAIL MathML parsing &OpenCurlyDoubleQuote; assert_true: expected true got false
+FAIL MathML parsing &OpenCurlyQuote; assert_true: expected true got false
+FAIL MathML parsing &operp; assert_true: expected true got false
+FAIL MathML parsing &oplus; assert_true: expected true got false
+FAIL MathML parsing &orarr; assert_true: expected true got false
+FAIL MathML parsing &Or; assert_true: expected true got false
+FAIL MathML parsing &or; assert_true: expected true got false
+FAIL MathML parsing &ord; assert_true: expected true got false
+FAIL MathML parsing &order; assert_true: expected true got false
+FAIL MathML parsing &orderof; assert_true: expected true got false
+FAIL MathML parsing &ordf; assert_true: expected true got false
+FAIL MathML parsing &ordm; assert_true: expected true got false
+FAIL MathML parsing &origof; assert_true: expected true got false
+FAIL MathML parsing &oror; assert_true: expected true got false
+FAIL MathML parsing &orslope; assert_true: expected true got false
+FAIL MathML parsing &orv; assert_true: expected true got false
+FAIL MathML parsing &oS; assert_true: expected true got false
+FAIL MathML parsing &Oscr; assert_true: expected true got false
+FAIL MathML parsing &oscr; assert_true: expected true got false
+FAIL MathML parsing &Oslash; assert_true: expected true got false
+FAIL MathML parsing &oslash; assert_true: expected true got false
+FAIL MathML parsing &osol; assert_true: expected true got false
+FAIL MathML parsing &Otilde; assert_true: expected true got false
+FAIL MathML parsing &otilde; assert_true: expected true got false
+FAIL MathML parsing &otimesas; assert_true: expected true got false
+FAIL MathML parsing &Otimes; assert_true: expected true got false
+FAIL MathML parsing &otimes; assert_true: expected true got false
+FAIL MathML parsing &Ouml; assert_true: expected true got false
+FAIL MathML parsing &ouml; assert_true: expected true got false
+FAIL MathML parsing &ovbar; assert_true: expected true got false
+FAIL MathML parsing &OverBar; assert_true: expected true got false
+FAIL MathML parsing &OverBrace; assert_true: expected true got false
+FAIL MathML parsing &OverBracket; assert_true: expected true got false
+FAIL MathML parsing &OverParenthesis; assert_true: expected true got false
+FAIL MathML parsing &para; assert_true: expected true got false
+FAIL MathML parsing &parallel; assert_true: expected true got false
+FAIL MathML parsing &par; assert_true: expected true got false
+FAIL MathML parsing &parsim; assert_true: expected true got false
+FAIL MathML parsing &parsl; assert_true: expected true got false
+FAIL MathML parsing &part; assert_true: expected true got false
+FAIL MathML parsing &PartialD; assert_true: expected true got false
+FAIL MathML parsing &Pcy; assert_true: expected true got false
+FAIL MathML parsing &pcy; assert_true: expected true got false
+FAIL MathML parsing &percnt; assert_true: expected true got false
+FAIL MathML parsing &period; assert_true: expected true got false
+FAIL MathML parsing &permil; assert_true: expected true got false
+FAIL MathML parsing &perp; assert_true: expected true got false
+FAIL MathML parsing &pertenk; assert_true: expected true got false
+FAIL MathML parsing &Pfr; assert_true: expected true got false
+FAIL MathML parsing &pfr; assert_true: expected true got false
+FAIL MathML parsing &Phi; assert_true: expected true got false
+FAIL MathML parsing &phi; assert_true: expected true got false
+FAIL MathML parsing &phiv; assert_true: expected true got false
+FAIL MathML parsing &phmmat; assert_true: expected true got false
+FAIL MathML parsing &phone; assert_true: expected true got false
+FAIL MathML parsing &Pi; assert_true: expected true got false
+FAIL MathML parsing &pi; assert_true: expected true got false
+FAIL MathML parsing &pitchfork; assert_true: expected true got false
+FAIL MathML parsing &piv; assert_true: expected true got false
+FAIL MathML parsing &planck; assert_true: expected true got false
+FAIL MathML parsing &planckh; assert_true: expected true got false
+FAIL MathML parsing &plankv; assert_true: expected true got false
+FAIL MathML parsing &plusacir; assert_true: expected true got false
+FAIL MathML parsing &plusb; assert_true: expected true got false
+FAIL MathML parsing &pluscir; assert_true: expected true got false
+FAIL MathML parsing &plus; assert_true: expected true got false
+FAIL MathML parsing &plusdo; assert_true: expected true got false
+FAIL MathML parsing &plusdu; assert_true: expected true got false
+FAIL MathML parsing &pluse; assert_true: expected true got false
+FAIL MathML parsing &PlusMinus; assert_true: expected true got false
+FAIL MathML parsing &plusmn; assert_true: expected true got false
+FAIL MathML parsing &plussim; assert_true: expected true got false
+FAIL MathML parsing &plustwo; assert_true: expected true got false
+FAIL MathML parsing &pm; assert_true: expected true got false
+FAIL MathML parsing &Poincareplane; assert_true: expected true got false
+FAIL MathML parsing &pointint; assert_true: expected true got false
+FAIL MathML parsing &popf; assert_true: expected true got false
+FAIL MathML parsing &Popf; assert_true: expected true got false
+FAIL MathML parsing &pound; assert_true: expected true got false
+FAIL MathML parsing &prap; assert_true: expected true got false
+FAIL MathML parsing &Pr; assert_true: expected true got false
+FAIL MathML parsing &pr; assert_true: expected true got false
+FAIL MathML parsing &prcue; assert_true: expected true got false
+FAIL MathML parsing &precapprox; assert_true: expected true got false
+FAIL MathML parsing &prec; assert_true: expected true got false
+FAIL MathML parsing &preccurlyeq; assert_true: expected true got false
+FAIL MathML parsing &Precedes; assert_true: expected true got false
+FAIL MathML parsing &PrecedesEqual; assert_true: expected true got false
+FAIL MathML parsing &PrecedesSlantEqual; assert_true: expected true got false
+FAIL MathML parsing &PrecedesTilde; assert_true: expected true got false
+FAIL MathML parsing &preceq; assert_true: expected true got false
+FAIL MathML parsing &precnapprox; assert_true: expected true got false
+FAIL MathML parsing &precneqq; assert_true: expected true got false
+FAIL MathML parsing &precnsim; assert_true: expected true got false
+FAIL MathML parsing &pre; assert_true: expected true got false
+FAIL MathML parsing &prE; assert_true: expected true got false
+FAIL MathML parsing &precsim; assert_true: expected true got false
+FAIL MathML parsing &prime; assert_true: expected true got false
+FAIL MathML parsing &Prime; assert_true: expected true got false
+FAIL MathML parsing &primes; assert_true: expected true got false
+FAIL MathML parsing &prnap; assert_true: expected true got false
+FAIL MathML parsing &prnE; assert_true: expected true got false
+FAIL MathML parsing &prnsim; assert_true: expected true got false
+FAIL MathML parsing &prod; assert_true: expected true got false
+FAIL MathML parsing &Product; assert_true: expected true got false
+FAIL MathML parsing &profalar; assert_true: expected true got false
+FAIL MathML parsing &profline; assert_true: expected true got false
+FAIL MathML parsing &profsurf; assert_true: expected true got false
+FAIL MathML parsing &prop; assert_true: expected true got false
+FAIL MathML parsing &Proportional; assert_true: expected true got false
+FAIL MathML parsing &Proportion; assert_true: expected true got false
+FAIL MathML parsing &propto; assert_true: expected true got false
+FAIL MathML parsing &prsim; assert_true: expected true got false
+FAIL MathML parsing &prurel; assert_true: expected true got false
+FAIL MathML parsing &Pscr; assert_true: expected true got false
+FAIL MathML parsing &pscr; assert_true: expected true got false
+FAIL MathML parsing &Psi; assert_true: expected true got false
+FAIL MathML parsing &psi; assert_true: expected true got false
+FAIL MathML parsing &puncsp; assert_true: expected true got false
+FAIL MathML parsing &Qfr; assert_true: expected true got false
+FAIL MathML parsing &qfr; assert_true: expected true got false
+FAIL MathML parsing &qint; assert_true: expected true got false
+FAIL MathML parsing &qopf; assert_true: expected true got false
+FAIL MathML parsing &Qopf; assert_true: expected true got false
+FAIL MathML parsing &qprime; assert_true: expected true got false
+FAIL MathML parsing &Qscr; assert_true: expected true got false
+FAIL MathML parsing &qscr; assert_true: expected true got false
+FAIL MathML parsing &quaternions; assert_true: expected true got false
+FAIL MathML parsing &quatint; assert_true: expected true got false
+FAIL MathML parsing &quest; assert_true: expected true got false
+FAIL MathML parsing &questeq; assert_true: expected true got false
+PASS MathML parsing &quot; 
+FAIL MathML parsing &QUOT; assert_true: expected true got false
+FAIL MathML parsing &rAarr; assert_true: expected true got false
+FAIL MathML parsing &race; assert_true: expected true got false
+FAIL MathML parsing &Racute; assert_true: expected true got false
+FAIL MathML parsing &racute; assert_true: expected true got false
+FAIL MathML parsing &radic; assert_true: expected true got false
+FAIL MathML parsing &raemptyv; assert_true: expected true got false
+FAIL MathML parsing &rang; assert_true: expected true got false
+FAIL MathML parsing &Rang; assert_true: expected true got false
+FAIL MathML parsing &rangd; assert_true: expected true got false
+FAIL MathML parsing &range; assert_true: expected true got false
+FAIL MathML parsing &rangle; assert_true: expected true got false
+FAIL MathML parsing &raquo; assert_true: expected true got false
+FAIL MathML parsing &rarrap; assert_true: expected true got false
+FAIL MathML parsing &rarrb; assert_true: expected true got false
+FAIL MathML parsing &rarrbfs; assert_true: expected true got false
+FAIL MathML parsing &rarrc; assert_true: expected true got false
+FAIL MathML parsing &rarr; assert_true: expected true got false
+FAIL MathML parsing &Rarr; assert_true: expected true got false
+FAIL MathML parsing &rArr; assert_true: expected true got false
+FAIL MathML parsing &rarrfs; assert_true: expected true got false
+FAIL MathML parsing &rarrhk; assert_true: expected true got false
+FAIL MathML parsing &rarrlp; assert_true: expected true got false
+FAIL MathML parsing &rarrpl; assert_true: expected true got false
+FAIL MathML parsing &rarrsim; assert_true: expected true got false
+FAIL MathML parsing &Rarrtl; assert_true: expected true got false
+FAIL MathML parsing &rarrtl; assert_true: expected true got false
+FAIL MathML parsing &rarrw; assert_true: expected true got false
+FAIL MathML parsing &ratail; assert_true: expected true got false
+FAIL MathML parsing &rAtail; assert_true: expected true got false
+FAIL MathML parsing &ratio; assert_true: expected true got false
+FAIL MathML parsing &rationals; assert_true: expected true got false
+FAIL MathML parsing &rbarr; assert_true: expected true got false
+FAIL MathML parsing &rBarr; assert_true: expected true got false
+FAIL MathML parsing &RBarr; assert_true: expected true got false
+FAIL MathML parsing &rbbrk; assert_true: expected true got false
+FAIL MathML parsing &rbrace; assert_true: expected true got false
+FAIL MathML parsing &rbrack; assert_true: expected true got false
+FAIL MathML parsing &rbrke; assert_true: expected true got false
+FAIL MathML parsing &rbrksld; assert_true: expected true got false
+FAIL MathML parsing &rbrkslu; assert_true: expected true got false
+FAIL MathML parsing &Rcaron; assert_true: expected true got false
+FAIL MathML parsing &rcaron; assert_true: expected true got false
+FAIL MathML parsing &Rcedil; assert_true: expected true got false
+FAIL MathML parsing &rcedil; assert_true: expected true got false
+FAIL MathML parsing &rceil; assert_true: expected true got false
+FAIL MathML parsing &rcub; assert_true: expected true got false
+FAIL MathML parsing &Rcy; assert_true: expected true got false
+FAIL MathML parsing &rcy; assert_true: expected true got false
+FAIL MathML parsing &rdca; assert_true: expected true got false
+FAIL MathML parsing &rdldhar; assert_true: expected true got false
+FAIL MathML parsing &rdquo; assert_true: expected true got false
+FAIL MathML parsing &rdquor; assert_true: expected true got false
+FAIL MathML parsing &rdsh; assert_true: expected true got false
+FAIL MathML parsing &real; assert_true: expected true got false
+FAIL MathML parsing &realine; assert_true: expected true got false
+FAIL MathML parsing &realpart; assert_true: expected true got false
+FAIL MathML parsing &reals; assert_true: expected true got false
+FAIL MathML parsing &Re; assert_true: expected true got false
+FAIL MathML parsing &rect; assert_true: expected true got false
+FAIL MathML parsing &reg; assert_true: expected true got false
+FAIL MathML parsing &REG; assert_true: expected true got false
+FAIL MathML parsing &ReverseElement; assert_true: expected true got false
+FAIL MathML parsing &ReverseEquilibrium; assert_true: expected true got false
+FAIL MathML parsing &ReverseUpEquilibrium; assert_true: expected true got false
+FAIL MathML parsing &rfisht; assert_true: expected true got false
+FAIL MathML parsing &rfloor; assert_true: expected true got false
+FAIL MathML parsing &rfr; assert_true: expected true got false
+FAIL MathML parsing &Rfr; assert_true: expected true got false
+FAIL MathML parsing &rHar; assert_true: expected true got false
+FAIL MathML parsing &rhard; assert_true: expected true got false
+FAIL MathML parsing &rharu; assert_true: expected true got false
+FAIL MathML parsing &rharul; assert_true: expected true got false
+FAIL MathML parsing &Rho; assert_true: expected true got false
+FAIL MathML parsing &rho; assert_true: expected true got false
+FAIL MathML parsing &rhov; assert_true: expected true got false
+FAIL MathML parsing &RightAngleBracket; assert_true: expected true got false
+FAIL MathML parsing &RightArrowBar; assert_true: expected true got false
+FAIL MathML parsing &rightarrow; assert_true: expected true got false
+FAIL MathML parsing &RightArrow; assert_true: expected true got false
+FAIL MathML parsing &Rightarrow; assert_true: expected true got false
+FAIL MathML parsing &RightArrowLeftArrow; assert_true: expected true got false
+FAIL MathML parsing &rightarrowtail; assert_true: expected true got false
+FAIL MathML parsing &RightCeiling; assert_true: expected true got false
+FAIL MathML parsing &RightDoubleBracket; assert_true: expected true got false
+FAIL MathML parsing &RightDownTeeVector; assert_true: expected true got false
+FAIL MathML parsing &RightDownVectorBar; assert_true: expected true got false
+FAIL MathML parsing &RightDownVector; assert_true: expected true got false
+FAIL MathML parsing &RightFloor; assert_true: expected true got false
+FAIL MathML parsing &rightharpoondown; assert_true: expected true got false
+FAIL MathML parsing &rightharpoonup; assert_true: expected true got false
+FAIL MathML parsing &rightleftarrows; assert_true: expected true got false
+FAIL MathML parsing &rightleftharpoons; assert_true: expected true got false
+FAIL MathML parsing &rightrightarrows; assert_true: expected true got false
+FAIL MathML parsing &rightsquigarrow; assert_true: expected true got false
+FAIL MathML parsing &RightTeeArrow; assert_true: expected true got false
+FAIL MathML parsing &RightTee; assert_true: expected true got false
+FAIL MathML parsing &RightTeeVector; assert_true: expected true got false
+FAIL MathML parsing &rightthreetimes; assert_true: expected true got false
+FAIL MathML parsing &RightTriangleBar; assert_true: expected true got false
+FAIL MathML parsing &RightTriangle; assert_true: expected true got false
+FAIL MathML parsing &RightTriangleEqual; assert_true: expected true got false
+FAIL MathML parsing &RightUpDownVector; assert_true: expected true got false
+FAIL MathML parsing &RightUpTeeVector; assert_true: expected true got false
+FAIL MathML parsing &RightUpVectorBar; assert_true: expected true got false
+FAIL MathML parsing &RightUpVector; assert_true: expected true got false
+FAIL MathML parsing &RightVectorBar; assert_true: expected true got false
+FAIL MathML parsing &RightVector; assert_true: expected true got false
+FAIL MathML parsing &ring; assert_true: expected true got false
+FAIL MathML parsing &risingdotseq; assert_true: expected true got false
+FAIL MathML parsing &rlarr; assert_true: expected true got false
+FAIL MathML parsing &rlhar; assert_true: expected true got false
+FAIL MathML parsing &rlm; assert_true: expected true got false
+FAIL MathML parsing &rmoustache; assert_true: expected true got false
+FAIL MathML parsing &rmoust; assert_true: expected true got false
+FAIL MathML parsing &rnmid; assert_true: expected true got false
+FAIL MathML parsing &roang; assert_true: expected true got false
+FAIL MathML parsing &roarr; assert_true: expected true got false
+FAIL MathML parsing &robrk; assert_true: expected true got false
+FAIL MathML parsing &ropar; assert_true: expected true got false
+FAIL MathML parsing &ropf; assert_true: expected true got false
+FAIL MathML parsing &Ropf; assert_true: expected true got false
+FAIL MathML parsing &roplus; assert_true: expected true got false
+FAIL MathML parsing &rotimes; assert_true: expected true got false
+FAIL MathML parsing &RoundImplies; assert_true: expected true got false
+FAIL MathML parsing &rpar; assert_true: expected true got false
+FAIL MathML parsing &rpargt; assert_true: expected true got false
+FAIL MathML parsing &rppolint; assert_true: expected true got false
+FAIL MathML parsing &rrarr; assert_true: expected true got false
+FAIL MathML parsing &Rrightarrow; assert_true: expected true got false
+FAIL MathML parsing &rsaquo; assert_true: expected true got false
+FAIL MathML parsing &rscr; assert_true: expected true got false
+FAIL MathML parsing &Rscr; assert_true: expected true got false
+FAIL MathML parsing &rsh; assert_true: expected true got false
+FAIL MathML parsing &Rsh; assert_true: expected true got false
+FAIL MathML parsing &rsqb; assert_true: expected true got false
+FAIL MathML parsing &rsquo; assert_true: expected true got false
+FAIL MathML parsing &rsquor; assert_true: expected true got false
+FAIL MathML parsing &rthree; assert_true: expected true got false
+FAIL MathML parsing &rtimes; assert_true: expected true got false
+FAIL MathML parsing &rtri; assert_true: expected true got false
+FAIL MathML parsing &rtrie; assert_true: expected true got false
+FAIL MathML parsing &rtrif; assert_true: expected true got false
+FAIL MathML parsing &rtriltri; assert_true: expected true got false
+FAIL MathML parsing &RuleDelayed; assert_true: expected true got false
+FAIL MathML parsing &ruluhar; assert_true: expected true got false
+FAIL MathML parsing &rx; assert_true: expected true got false
+FAIL MathML parsing &Sacute; assert_true: expected true got false
+FAIL MathML parsing &sacute; assert_true: expected true got false
+FAIL MathML parsing &sbquo; assert_true: expected true got false
+FAIL MathML parsing &scap; assert_true: expected true got false
+FAIL MathML parsing &Scaron; assert_true: expected true got false
+FAIL MathML parsing &scaron; assert_true: expected true got false
+FAIL MathML parsing &Sc; assert_true: expected true got false
+FAIL MathML parsing &sc; assert_true: expected true got false
+FAIL MathML parsing &sccue; assert_true: expected true got false
+FAIL MathML parsing &sce; assert_true: expected true got false
+FAIL MathML parsing &scE; assert_true: expected true got false
+FAIL MathML parsing &Scedil; assert_true: expected true got false
+FAIL MathML parsing &scedil; assert_true: expected true got false
+FAIL MathML parsing &Scirc; assert_true: expected true got false
+FAIL MathML parsing &scirc; assert_true: expected true got false
+FAIL MathML parsing &scnap; assert_true: expected true got false
+FAIL MathML parsing &scnE; assert_true: expected true got false
+FAIL MathML parsing &scnsim; assert_true: expected true got false
+FAIL MathML parsing &scpolint; assert_true: expected true got false
+FAIL MathML parsing &scsim; assert_true: expected true got false
+FAIL MathML parsing &Scy; assert_true: expected true got false
+FAIL MathML parsing &scy; assert_true: expected true got false
+FAIL MathML parsing &sdotb; assert_true: expected true got false
+FAIL MathML parsing &sdot; assert_true: expected true got false
+FAIL MathML parsing &sdote; assert_true: expected true got false
+FAIL MathML parsing &searhk; assert_true: expected true got false
+FAIL MathML parsing &searr; assert_true: expected true got false
+FAIL MathML parsing &seArr; assert_true: expected true got false
+FAIL MathML parsing &searrow; assert_true: expected true got false
+FAIL MathML parsing &sect; assert_true: expected true got false
+FAIL MathML parsing &semi; assert_true: expected true got false
+FAIL MathML parsing &seswar; assert_true: expected true got false
+FAIL MathML parsing &setminus; assert_true: expected true got false
+FAIL MathML parsing &setmn; assert_true: expected true got false
+FAIL MathML parsing &sext; assert_true: expected true got false
+FAIL MathML parsing &Sfr; assert_true: expected true got false
+FAIL MathML parsing &sfr; assert_true: expected true got false
+FAIL MathML parsing &sfrown; assert_true: expected true got false
+FAIL MathML parsing &sharp; assert_true: expected true got false
+FAIL MathML parsing &SHCHcy; assert_true: expected true got false
+FAIL MathML parsing &shchcy; assert_true: expected true got false
+FAIL MathML parsing &SHcy; assert_true: expected true got false
+FAIL MathML parsing &shcy; assert_true: expected true got false
+FAIL MathML parsing &ShortDownArrow; assert_true: expected true got false
+FAIL MathML parsing &ShortLeftArrow; assert_true: expected true got false
+FAIL MathML parsing &shortmid; assert_true: expected true got false
+FAIL MathML parsing &shortparallel; assert_true: expected true got false
+FAIL MathML parsing &ShortRightArrow; assert_true: expected true got false
+FAIL MathML parsing &ShortUpArrow; assert_true: expected true got false
+FAIL MathML parsing &shy; assert_true: expected true got false
+FAIL MathML parsing &Sigma; assert_true: expected true got false
+FAIL MathML parsing &sigma; assert_true: expected true got false
+FAIL MathML parsing &sigmaf; assert_true: expected true got false
+FAIL MathML parsing &sigmav; assert_true: expected true got false
+FAIL MathML parsing &sim; assert_true: expected true got false
+FAIL MathML parsing &simdot; assert_true: expected true got false
+FAIL MathML parsing &sime; assert_true: expected true got false
+FAIL MathML parsing &simeq; assert_true: expected true got false
+FAIL MathML parsing &simg; assert_true: expected true got false
+FAIL MathML parsing &simgE; assert_true: expected true got false
+FAIL MathML parsing &siml; assert_true: expected true got false
+FAIL MathML parsing &simlE; assert_true: expected true got false
+FAIL MathML parsing &simne; assert_true: expected true got false
+FAIL MathML parsing &simplus; assert_true: expected true got false
+FAIL MathML parsing &simrarr; assert_true: expected true got false
+FAIL MathML parsing &slarr; assert_true: expected true got false
+FAIL MathML parsing &SmallCircle; assert_true: expected true got false
+FAIL MathML parsing &smallsetminus; assert_true: expected true got false
+FAIL MathML parsing &smashp; assert_true: expected true got false
+FAIL MathML parsing &smeparsl; assert_true: expected true got false
+FAIL MathML parsing &smid; assert_true: expected true got false
+FAIL MathML parsing &smile; assert_true: expected true got false
+FAIL MathML parsing &smt; assert_true: expected true got false
+FAIL MathML parsing &smte; assert_true: expected true got false
+FAIL MathML parsing &smtes; assert_true: expected true got false
+FAIL MathML parsing &SOFTcy; assert_true: expected true got false
+FAIL MathML parsing &softcy; assert_true: expected true got false
+FAIL MathML parsing &solbar; assert_true: expected true got false
+FAIL MathML parsing &solb; assert_true: expected true got false
+FAIL MathML parsing &sol; assert_true: expected true got false
+FAIL MathML parsing &Sopf; assert_true: expected true got false
+FAIL MathML parsing &sopf; assert_true: expected true got false
+FAIL MathML parsing &spades; assert_true: expected true got false
+FAIL MathML parsing &spadesuit; assert_true: expected true got false
+FAIL MathML parsing &spar; assert_true: expected true got false
+FAIL MathML parsing &sqcap; assert_true: expected true got false
+FAIL MathML parsing &sqcaps; assert_true: expected true got false
+FAIL MathML parsing &sqcup; assert_true: expected true got false
+FAIL MathML parsing &sqcups; assert_true: expected true got false
+FAIL MathML parsing &Sqrt; assert_true: expected true got false
+FAIL MathML parsing &sqsub; assert_true: expected true got false
+FAIL MathML parsing &sqsube; assert_true: expected true got false
+FAIL MathML parsing &sqsubset; assert_true: expected true got false
+FAIL MathML parsing &sqsubseteq; assert_true: expected true got false
+FAIL MathML parsing &sqsup; assert_true: expected true got false
+FAIL MathML parsing &sqsupe; assert_true: expected true got false
+FAIL MathML parsing &sqsupset; assert_true: expected true got false
+FAIL MathML parsing &sqsupseteq; assert_true: expected true got false
+FAIL MathML parsing &square; assert_true: expected true got false
+FAIL MathML parsing &Square; assert_true: expected true got false
+FAIL MathML parsing &SquareIntersection; assert_true: expected true got false
+FAIL MathML parsing &SquareSubset; assert_true: expected true got false
+FAIL MathML parsing &SquareSubsetEqual; assert_true: expected true got false
+FAIL MathML parsing &SquareSuperset; assert_true: expected true got false
+FAIL MathML parsing &SquareSupersetEqual; assert_true: expected true got false
+FAIL MathML parsing &SquareUnion; assert_true: expected true got false
+FAIL MathML parsing &squarf; assert_true: expected true got false
+FAIL MathML parsing &squ; assert_true: expected true got false
+FAIL MathML parsing &squf; assert_true: expected true got false
+FAIL MathML parsing &srarr; assert_true: expected true got false
+FAIL MathML parsing &Sscr; assert_true: expected true got false
+FAIL MathML parsing &sscr; assert_true: expected true got false
+FAIL MathML parsing &ssetmn; assert_true: expected true got false
+FAIL MathML parsing &ssmile; assert_true: expected true got false
+FAIL MathML parsing &sstarf; assert_true: expected true got false
+FAIL MathML parsing &Star; assert_true: expected true got false
+FAIL MathML parsing &star; assert_true: expected true got false
+FAIL MathML parsing &starf; assert_true: expected true got false
+FAIL MathML parsing &straightepsilon; assert_true: expected true got false
+FAIL MathML parsing &straightphi; assert_true: expected true got false
+FAIL MathML parsing &strns; assert_true: expected true got false
+FAIL MathML parsing &sub; assert_true: expected true got false
+FAIL MathML parsing &Sub; assert_true: expected true got false
+FAIL MathML parsing &subdot; assert_true: expected true got false
+FAIL MathML parsing &subE; assert_true: expected true got false
+FAIL MathML parsing &sube; assert_true: expected true got false
+FAIL MathML parsing &subedot; assert_true: expected true got false
+FAIL MathML parsing &submult; assert_true: expected true got false
+FAIL MathML parsing &subnE; assert_true: expected true got false
+FAIL MathML parsing &subne; assert_true: expected true got false
+FAIL MathML parsing &subplus; assert_true: expected true got false
+FAIL MathML parsing &subrarr; assert_true: expected true got false
+FAIL MathML parsing &subset; assert_true: expected true got false
+FAIL MathML parsing &Subset; assert_true: expected true got false
+FAIL MathML parsing &subseteq; assert_true: expected true got false
+FAIL MathML parsing &subseteqq; assert_true: expected true got false
+FAIL MathML parsing &SubsetEqual; assert_true: expected true got false
+FAIL MathML parsing &subsetneq; assert_true: expected true got false
+FAIL MathML parsing &subsetneqq; assert_true: expected true got false
+FAIL MathML parsing &subsim; assert_true: expected true got false
+FAIL MathML parsing &subsub; assert_true: expected true got false
+FAIL MathML parsing &subsup; assert_true: expected true got false
+FAIL MathML parsing &succapprox; assert_true: expected true got false
+FAIL MathML parsing &succ; assert_true: expected true got false
+FAIL MathML parsing &succcurlyeq; assert_true: expected true got false
+FAIL MathML parsing &Succeeds; assert_true: expected true got false
+FAIL MathML parsing &SucceedsEqual; assert_true: expected true got false
+FAIL MathML parsing &SucceedsSlantEqual; assert_true: expected true got false
+FAIL MathML parsing &SucceedsTilde; assert_true: expected true got false
+FAIL MathML parsing &succeq; assert_true: expected true got false
+FAIL MathML parsing &succnapprox; assert_true: expected true got false
+FAIL MathML parsing &succneqq; assert_true: expected true got false
+FAIL MathML parsing &succnsim; assert_true: expected true got false
+FAIL MathML parsing &succsim; assert_true: expected true got false
+FAIL MathML parsing &SuchThat; assert_true: expected true got false
+FAIL MathML parsing &sum; assert_true: expected true got false
+FAIL MathML parsing &Sum; assert_true: expected true got false
+FAIL MathML parsing &sung; assert_true: expected true got false
+FAIL MathML parsing &sup1; assert_true: expected true got false
+FAIL MathML parsing &sup2; assert_true: expected true got false
+FAIL MathML parsing &sup3; assert_true: expected true got false
+FAIL MathML parsing &sup; assert_true: expected true got false
+FAIL MathML parsing &Sup; assert_true: expected true got false
+FAIL MathML parsing &supdot; assert_true: expected true got false
+FAIL MathML parsing &supdsub; assert_true: expected true got false
+FAIL MathML parsing &supE; assert_true: expected true got false
+FAIL MathML parsing &supe; assert_true: expected true got false
+FAIL MathML parsing &supedot; assert_true: expected true got false
+FAIL MathML parsing &Superset; assert_true: expected true got false
+FAIL MathML parsing &SupersetEqual; assert_true: expected true got false
+FAIL MathML parsing &suphsol; assert_true: expected true got false
+FAIL MathML parsing &suphsub; assert_true: expected true got false
+FAIL MathML parsing &suplarr; assert_true: expected true got false
+FAIL MathML parsing &supmult; assert_true: expected true got false
+FAIL MathML parsing &supnE; assert_true: expected true got false
+FAIL MathML parsing &supne; assert_true: expected true got false
+FAIL MathML parsing &supplus; assert_true: expected true got false
+FAIL MathML parsing &supset; assert_true: expected true got false
+FAIL MathML parsing &Supset; assert_true: expected true got false
+FAIL MathML parsing &supseteq; assert_true: expected true got false
+FAIL MathML parsing &supseteqq; assert_true: expected true got false
+FAIL MathML parsing &supsetneq; assert_true: expected true got false
+FAIL MathML parsing &supsetneqq; assert_true: expected true got false
+FAIL MathML parsing &supsim; assert_true: expected true got false
+FAIL MathML parsing &supsub; assert_true: expected true got false
+FAIL MathML parsing &supsup; assert_true: expected true got false
+FAIL MathML parsing &swarhk; assert_true: expected true got false
+FAIL MathML parsing &swarr; assert_true: expected true got false
+FAIL MathML parsing &swArr; assert_true: expected true got false
+FAIL MathML parsing &swarrow; assert_true: expected true got false
+FAIL MathML parsing &swnwar; assert_true: expected true got false
+FAIL MathML parsing &szlig; assert_true: expected true got false
+FAIL MathML parsing &Tab; assert_true: expected true got false
+FAIL MathML parsing &target; assert_true: expected true got false
+FAIL MathML parsing &Tau; assert_true: expected true got false
+FAIL MathML parsing &tau; assert_true: expected true got false
+FAIL MathML parsing &tbrk; assert_true: expected true got false
+FAIL MathML parsing &Tcaron; assert_true: expected true got false
+FAIL MathML parsing &tcaron; assert_true: expected true got false
+FAIL MathML parsing &Tcedil; assert_true: expected true got false
+FAIL MathML parsing &tcedil; assert_true: expected true got false
+FAIL MathML parsing &Tcy; assert_true: expected true got false
+FAIL MathML parsing &tcy; assert_true: expected true got false
+FAIL MathML parsing &tdot; assert_true: expected true got false
+FAIL MathML parsing &telrec; assert_true: expected true got false
+FAIL MathML parsing &Tfr; assert_true: expected true got false
+FAIL MathML parsing &tfr; assert_true: expected true got false
+FAIL MathML parsing &there4; assert_true: expected true got false
+FAIL MathML parsing &therefore; assert_true: expected true got false
+FAIL MathML parsing &Therefore; assert_true: expected true got false
+FAIL MathML parsing &Theta; assert_true: expected true got false
+FAIL MathML parsing &theta; assert_true: expected true got false
+FAIL MathML parsing &thetasym; assert_true: expected true got false
+FAIL MathML parsing &thetav; assert_true: expected true got false
+FAIL MathML parsing &thickapprox; assert_true: expected true got false
+FAIL MathML parsing &thicksim; assert_true: expected true got false
+FAIL MathML parsing &ThickSpace; assert_true: expected true got false
+FAIL MathML parsing &ThinSpace; assert_true: expected true got false
+FAIL MathML parsing &thinsp; assert_true: expected true got false
+FAIL MathML parsing &thkap; assert_true: expected true got false
+FAIL MathML parsing &thksim; assert_true: expected true got false
+FAIL MathML parsing &THORN; assert_true: expected true got false
+FAIL MathML parsing &thorn; assert_true: expected true got false
+FAIL MathML parsing &tilde; assert_true: expected true got false
+FAIL MathML parsing &Tilde; assert_true: expected true got false
+FAIL MathML parsing &TildeEqual; assert_true: expected true got false
+FAIL MathML parsing &TildeFullEqual; assert_true: expected true got false
+FAIL MathML parsing &TildeTilde; assert_true: expected true got false
+FAIL MathML parsing &timesbar; assert_true: expected true got false
+FAIL MathML parsing &timesb; assert_true: expected true got false
+FAIL MathML parsing &times; assert_true: expected true got false
+FAIL MathML parsing &timesd; assert_true: expected true got false
+FAIL MathML parsing &tint; assert_true: expected true got false
+FAIL MathML parsing &toea; assert_true: expected true got false
+FAIL MathML parsing &topbot; assert_true: expected true got false
+FAIL MathML parsing &topcir; assert_true: expected true got false
+FAIL MathML parsing &top; assert_true: expected true got false
+FAIL MathML parsing &Topf; assert_true: expected true got false
+FAIL MathML parsing &topf; assert_true: expected true got false
+FAIL MathML parsing &topfork; assert_true: expected true got false
+FAIL MathML parsing &tosa; assert_true: expected true got false
+FAIL MathML parsing &tprime; assert_true: expected true got false
+FAIL MathML parsing &trade; assert_true: expected true got false
+FAIL MathML parsing &TRADE; assert_true: expected true got false
+FAIL MathML parsing &triangle; assert_true: expected true got false
+FAIL MathML parsing &triangledown; assert_true: expected true got false
+FAIL MathML parsing &triangleleft; assert_true: expected true got false
+FAIL MathML parsing &trianglelefteq; assert_true: expected true got false
+FAIL MathML parsing &triangleq; assert_true: expected true got false
+FAIL MathML parsing &triangleright; assert_true: expected true got false
+FAIL MathML parsing &trianglerighteq; assert_true: expected true got false
+FAIL MathML parsing &tridot; assert_true: expected true got false
+FAIL MathML parsing &trie; assert_true: expected true got false
+FAIL MathML parsing &triminus; assert_true: expected true got false
+FAIL MathML parsing &TripleDot; assert_true: expected true got false
+FAIL MathML parsing &triplus; assert_true: expected true got false
+FAIL MathML parsing &trisb; assert_true: expected true got false
+FAIL MathML parsing &tritime; assert_true: expected true got false
+FAIL MathML parsing &trpezium; assert_true: expected true got false
+FAIL MathML parsing &Tscr; assert_true: expected true got false
+FAIL MathML parsing &tscr; assert_true: expected true got false
+FAIL MathML parsing &TScy; assert_true: expected true got false
+FAIL MathML parsing &tscy; assert_true: expected true got false
+FAIL MathML parsing &TSHcy; assert_true: expected true got false
+FAIL MathML parsing &tshcy; assert_true: expected true got false
+FAIL MathML parsing &Tstrok; assert_true: expected true got false
+FAIL MathML parsing &tstrok; assert_true: expected true got false
+FAIL MathML parsing &twixt; assert_true: expected true got false
+FAIL MathML parsing &twoheadleftarrow; assert_true: expected true got false
+FAIL MathML parsing &twoheadrightarrow; assert_true: expected true got false
+FAIL MathML parsing &Uacute; assert_true: expected true got false
+FAIL MathML parsing &uacute; assert_true: expected true got false
+FAIL MathML parsing &uarr; assert_true: expected true got false
+FAIL MathML parsing &Uarr; assert_true: expected true got false
+FAIL MathML parsing &uArr; assert_true: expected true got false
+FAIL MathML parsing &Uarrocir; assert_true: expected true got false
+FAIL MathML parsing &Ubrcy; assert_true: expected true got false
+FAIL MathML parsing &ubrcy; assert_true: expected true got false
+FAIL MathML parsing &Ubreve; assert_true: expected true got false
+FAIL MathML parsing &ubreve; assert_true: expected true got false
+FAIL MathML parsing &Ucirc; assert_true: expected true got false
+FAIL MathML parsing &ucirc; assert_true: expected true got false
+FAIL MathML parsing &Ucy; assert_true: expected true got false
+FAIL MathML parsing &ucy; assert_true: expected true got false
+FAIL MathML parsing &udarr; assert_true: expected true got false
+FAIL MathML parsing &Udblac; assert_true: expected true got false
+FAIL MathML parsing &udblac; assert_true: expected true got false
+FAIL MathML parsing &udhar; assert_true: expected true got false
+FAIL MathML parsing &ufisht; assert_true: expected true got false
+FAIL MathML parsing &Ufr; assert_true: expected true got false
+FAIL MathML parsing &ufr; assert_true: expected true got false
+FAIL MathML parsing &Ugrave; assert_true: expected true got false
+FAIL MathML parsing &ugrave; assert_true: expected true got false
+FAIL MathML parsing &uHar; assert_true: expected true got false
+FAIL MathML parsing &uharl; assert_true: expected true got false
+FAIL MathML parsing &uharr; assert_true: expected true got false
+FAIL MathML parsing &uhblk; assert_true: expected true got false
+FAIL MathML parsing &ulcorn; assert_true: expected true got false
+FAIL MathML parsing &ulcorner; assert_true: expected true got false
+FAIL MathML parsing &ulcrop; assert_true: expected true got false
+FAIL MathML parsing &ultri; assert_true: expected true got false
+FAIL MathML parsing &Umacr; assert_true: expected true got false
+FAIL MathML parsing &umacr; assert_true: expected true got false
+FAIL MathML parsing &uml; assert_true: expected true got false
+FAIL MathML parsing &UnderBar; assert_true: expected true got false
+FAIL MathML parsing &UnderBrace; assert_true: expected true got false
+FAIL MathML parsing &UnderBracket; assert_true: expected true got false
+FAIL MathML parsing &UnderParenthesis; assert_true: expected true got false
+FAIL MathML parsing &Union; assert_true: expected true got false
+FAIL MathML parsing &UnionPlus; assert_true: expected true got false
+FAIL MathML parsing &Uogon; assert_true: expected true got false
+FAIL MathML parsing &uogon; assert_true: expected true got false
+FAIL MathML parsing &Uopf; assert_true: expected true got false
+FAIL MathML parsing &uopf; assert_true: expected true got false
+FAIL MathML parsing &UpArrowBar; assert_true: expected true got false
+FAIL MathML parsing &uparrow; assert_true: expected true got false
+FAIL MathML parsing &UpArrow; assert_true: expected true got false
+FAIL MathML parsing &Uparrow; assert_true: expected true got false
+FAIL MathML parsing &UpArrowDownArrow; assert_true: expected true got false
+FAIL MathML parsing &updownarrow; assert_true: expected true got false
+FAIL MathML parsing &UpDownArrow; assert_true: expected true got false
+FAIL MathML parsing &Updownarrow; assert_true: expected true got false
+FAIL MathML parsing &UpEquilibrium; assert_true: expected true got false
+FAIL MathML parsing &upharpoonleft; assert_true: expected true got false
+FAIL MathML parsing &upharpoonright; assert_true: expected true got false
+FAIL MathML parsing &uplus; assert_true: expected true got false
+FAIL MathML parsing &UpperLeftArrow; assert_true: expected true got false
+FAIL MathML parsing &UpperRightArrow; assert_true: expected true got false
+FAIL MathML parsing &upsi; assert_true: expected true got false
+FAIL MathML parsing &Upsi; assert_true: expected true got false
+FAIL MathML parsing &upsih; assert_true: expected true got false
+FAIL MathML parsing &Upsilon; assert_true: expected true got false
+FAIL MathML parsing &upsilon; assert_true: expected true got false
+FAIL MathML parsing &UpTeeArrow; assert_true: expected true got false
+FAIL MathML parsing &UpTee; assert_true: expected true got false
+FAIL MathML parsing &upuparrows; assert_true: expected true got false
+FAIL MathML parsing &urcorn; assert_true: expected true got false
+FAIL MathML parsing &urcorner; assert_true: expected true got false
+FAIL MathML parsing &urcrop; assert_true: expected true got false
+FAIL MathML parsing &Uring; assert_true: expected true got false
+FAIL MathML parsing &uring; assert_true: expected true got false
+FAIL MathML parsing &urtri; assert_true: expected true got false
+FAIL MathML parsing &Uscr; assert_true: expected true got false
+FAIL MathML parsing &uscr; assert_true: expected true got false
+FAIL MathML parsing &utdot; assert_true: expected true got false
+FAIL MathML parsing &Utilde; assert_true: expected true got false
+FAIL MathML parsing &utilde; assert_true: expected true got false
+FAIL MathML parsing &utri; assert_true: expected true got false
+FAIL MathML parsing &utrif; assert_true: expected true got false
+FAIL MathML parsing &uuarr; assert_true: expected true got false
+FAIL MathML parsing &Uuml; assert_true: expected true got false
+FAIL MathML parsing &uuml; assert_true: expected true got false
+FAIL MathML parsing &uwangle; assert_true: expected true got false
+FAIL MathML parsing &vangrt; assert_true: expected true got false
+FAIL MathML parsing &varepsilon; assert_true: expected true got false
+FAIL MathML parsing &varkappa; assert_true: expected true got false
+FAIL MathML parsing &varnothing; assert_true: expected true got false
+FAIL MathML parsing &varphi; assert_true: expected true got false
+FAIL MathML parsing &varpi; assert_true: expected true got false
+FAIL MathML parsing &varpropto; assert_true: expected true got false
+FAIL MathML parsing &varr; assert_true: expected true got false
+FAIL MathML parsing &vArr; assert_true: expected true got false
+FAIL MathML parsing &varrho; assert_true: expected true got false
+FAIL MathML parsing &varsigma; assert_true: expected true got false
+FAIL MathML parsing &varsubsetneq; assert_true: expected true got false
+FAIL MathML parsing &varsubsetneqq; assert_true: expected true got false
+FAIL MathML parsing &varsupsetneq; assert_true: expected true got false
+FAIL MathML parsing &varsupsetneqq; assert_true: expected true got false
+FAIL MathML parsing &vartheta; assert_true: expected true got false
+FAIL MathML parsing &vartriangleleft; assert_true: expected true got false
+FAIL MathML parsing &vartriangleright; assert_true: expected true got false
+FAIL MathML parsing &vBar; assert_true: expected true got false
+FAIL MathML parsing &Vbar; assert_true: expected true got false
+FAIL MathML parsing &vBarv; assert_true: expected true got false
+FAIL MathML parsing &Vcy; assert_true: expected true got false
+FAIL MathML parsing &vcy; assert_true: expected true got false
+FAIL MathML parsing &vdash; assert_true: expected true got false
+FAIL MathML parsing &vDash; assert_true: expected true got false
+FAIL MathML parsing &Vdash; assert_true: expected true got false
+FAIL MathML parsing &VDash; assert_true: expected true got false
+FAIL MathML parsing &Vdashl; assert_true: expected true got false
+FAIL MathML parsing &veebar; assert_true: expected true got false
+FAIL MathML parsing &vee; assert_true: expected true got false
+FAIL MathML parsing &Vee; assert_true: expected true got false
+FAIL MathML parsing &veeeq; assert_true: expected true got false
+FAIL MathML parsing &vellip; assert_true: expected true got false
+FAIL MathML parsing &verbar; assert_true: expected true got false
+FAIL MathML parsing &Verbar; assert_true: expected true got false
+FAIL MathML parsing &vert; assert_true: expected true got false
+FAIL MathML parsing &Vert; assert_true: expected true got false
+FAIL MathML parsing &VerticalBar; assert_true: expected true got false
+FAIL MathML parsing &VerticalLine; assert_true: expected true got false
+FAIL MathML parsing &VerticalSeparator; assert_true: expected true got false
+FAIL MathML parsing &VerticalTilde; assert_true: expected true got false
+FAIL MathML parsing &VeryThinSpace; assert_true: expected true got false
+FAIL MathML parsing &Vfr; assert_true: expected true got false
+FAIL MathML parsing &vfr; assert_true: expected true got false
+FAIL MathML parsing &vltri; assert_true: expected true got false
+FAIL MathML parsing &vnsub; assert_true: expected true got false
+FAIL MathML parsing &vnsup; assert_true: expected true got false
+FAIL MathML parsing &Vopf; assert_true: expected true got false
+FAIL MathML parsing &vopf; assert_true: expected true got false
+FAIL MathML parsing &vprop; assert_true: expected true got false
+FAIL MathML parsing &vrtri; assert_true: expected true got false
+FAIL MathML parsing &Vscr; assert_true: expected true got false
+FAIL MathML parsing &vscr; assert_true: expected true got false
+FAIL MathML parsing &vsubnE; assert_true: expected true got false
+FAIL MathML parsing &vsubne; assert_true: expected true got false
+FAIL MathML parsing &vsupnE; assert_true: expected true got false
+FAIL MathML parsing &vsupne; assert_true: expected true got false
+FAIL MathML parsing &Vvdash; assert_true: expected true got false
+FAIL MathML parsing &vzigzag; assert_true: expected true got false
+FAIL MathML parsing &Wcirc; assert_true: expected true got false
+FAIL MathML parsing &wcirc; assert_true: expected true got false
+FAIL MathML parsing &wedbar; assert_true: expected true got false
+FAIL MathML parsing &wedge; assert_true: expected true got false
+FAIL MathML parsing &Wedge; assert_true: expected true got false
+FAIL MathML parsing &wedgeq; assert_true: expected true got false
+FAIL MathML parsing &weierp; assert_true: expected true got false
+FAIL MathML parsing &Wfr; assert_true: expected true got false
+FAIL MathML parsing &wfr; assert_true: expected true got false
+FAIL MathML parsing &Wopf; assert_true: expected true got false
+FAIL MathML parsing &wopf; assert_true: expected true got false
+FAIL MathML parsing &wp; assert_true: expected true got false
+FAIL MathML parsing &wr; assert_true: expected true got false
+FAIL MathML parsing &wreath; assert_true: expected true got false
+FAIL MathML parsing &Wscr; assert_true: expected true got false
+FAIL MathML parsing &wscr; assert_true: expected true got false
+FAIL MathML parsing &xcap; assert_true: expected true got false
+FAIL MathML parsing &xcirc; assert_true: expected true got false
+FAIL MathML parsing &xcup; assert_true: expected true got false
+FAIL MathML parsing &xdtri; assert_true: expected true got false
+FAIL MathML parsing &Xfr; assert_true: expected true got false
+FAIL MathML parsing &xfr; assert_true: expected true got false
+FAIL MathML parsing &xharr; assert_true: expected true got false
+FAIL MathML parsing &xhArr; assert_true: expected true got false
+FAIL MathML parsing &Xi; assert_true: expected true got false
+FAIL MathML parsing &xi; assert_true: expected true got false
+FAIL MathML parsing &xlarr; assert_true: expected true got false
+FAIL MathML parsing &xlArr; assert_true: expected true got false
+FAIL MathML parsing &xmap; assert_true: expected true got false
+FAIL MathML parsing &xnis; assert_true: expected true got false
+FAIL MathML parsing &xodot; assert_true: expected true got false
+FAIL MathML parsing &Xopf; assert_true: expected true got false
+FAIL MathML parsing &xopf; assert_true: expected true got false
+FAIL MathML parsing &xoplus; assert_true: expected true got false
+FAIL MathML parsing &xotime; assert_true: expected true got false
+FAIL MathML parsing &xrarr; assert_true: expected true got false
+FAIL MathML parsing &xrArr; assert_true: expected true got false
+FAIL MathML parsing &Xscr; assert_true: expected true got false
+FAIL MathML parsing &xscr; assert_true: expected true got false
+FAIL MathML parsing &xsqcup; assert_true: expected true got false
+FAIL MathML parsing &xuplus; assert_true: expected true got false
+FAIL MathML parsing &xutri; assert_true: expected true got false
+FAIL MathML parsing &xvee; assert_true: expected true got false
+FAIL MathML parsing &xwedge; assert_true: expected true got false
+FAIL MathML parsing &Yacute; assert_true: expected true got false
+FAIL MathML parsing &yacute; assert_true: expected true got false
+FAIL MathML parsing &YAcy; assert_true: expected true got false
+FAIL MathML parsing &yacy; assert_true: expected true got false
+FAIL MathML parsing &Ycirc; assert_true: expected true got false
+FAIL MathML parsing &ycirc; assert_true: expected true got false
+FAIL MathML parsing &Ycy; assert_true: expected true got false
+FAIL MathML parsing &ycy; assert_true: expected true got false
+FAIL MathML parsing &yen; assert_true: expected true got false
+FAIL MathML parsing &Yfr; assert_true: expected true got false
+FAIL MathML parsing &yfr; assert_true: expected true got false
+FAIL MathML parsing &YIcy; assert_true: expected true got false
+FAIL MathML parsing &yicy; assert_true: expected true got false
+FAIL MathML parsing &Yopf; assert_true: expected true got false
+FAIL MathML parsing &yopf; assert_true: expected true got false
+FAIL MathML parsing &Yscr; assert_true: expected true got false
+FAIL MathML parsing &yscr; assert_true: expected true got false
+FAIL MathML parsing &YUcy; assert_true: expected true got false
+FAIL MathML parsing &yucy; assert_true: expected true got false
+FAIL MathML parsing &yuml; assert_true: expected true got false
+FAIL MathML parsing &Yuml; assert_true: expected true got false
+FAIL MathML parsing &Zacute; assert_true: expected true got false
+FAIL MathML parsing &zacute; assert_true: expected true got false
+FAIL MathML parsing &Zcaron; assert_true: expected true got false
+FAIL MathML parsing &zcaron; assert_true: expected true got false
+FAIL MathML parsing &Zcy; assert_true: expected true got false
+FAIL MathML parsing &zcy; assert_true: expected true got false
+FAIL MathML parsing &Zdot; assert_true: expected true got false
+FAIL MathML parsing &zdot; assert_true: expected true got false
+FAIL MathML parsing &zeetrf; assert_true: expected true got false
+FAIL MathML parsing &ZeroWidthSpace; assert_true: expected true got false
+FAIL MathML parsing &Zeta; assert_true: expected true got false
+FAIL MathML parsing &zeta; assert_true: expected true got false
+FAIL MathML parsing &zfr; assert_true: expected true got false
+FAIL MathML parsing &Zfr; assert_true: expected true got false
+FAIL MathML parsing &ZHcy; assert_true: expected true got false
+FAIL MathML parsing &zhcy; assert_true: expected true got false
+FAIL MathML parsing &zigrarr; assert_true: expected true got false
+FAIL MathML parsing &zopf; assert_true: expected true got false
+FAIL MathML parsing &Zopf; assert_true: expected true got false
+FAIL MathML parsing &Zscr; assert_true: expected true got false
+FAIL MathML parsing &zscr; assert_true: expected true got false
+FAIL MathML parsing &zwj; assert_true: expected true got false
+FAIL MathML parsing &zwnj; assert_true: expected true got false
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-8.htm b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-8.htm
new file mode 100644
index 0000000..b16011c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-8.htm
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta name=timeout content=long>
+<title>HTML entities for various XHTML Doctype</title>
+<link rel=help href="http://w3c.github.io/html/xhtml.html#parsing-xhtml-documents">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe id="test" src="xhtml-mathml-dtd-entity-support.htm"></iframe>
+
+<script>
+onload = () => document.getElementById("test").contentWindow.run(
+["application/xhtml+xml", "-//W3C//DTD MathML 2.0//EN", "foo", "MathML"]);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-9-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-9-expected.txt
new file mode 100644
index 0000000..3f91a75
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-9-expected.txt
@@ -0,0 +1,2129 @@
+This is a testharness.js-based test.
+Found 2125 tests; 2122 PASS, 3 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS XHTML Mobile parsing &Aacute; 
+PASS XHTML Mobile parsing &aacute; 
+PASS XHTML Mobile parsing &Abreve; 
+PASS XHTML Mobile parsing &abreve; 
+PASS XHTML Mobile parsing &ac; 
+PASS XHTML Mobile parsing &acd; 
+PASS XHTML Mobile parsing &acE; 
+PASS XHTML Mobile parsing &Acirc; 
+PASS XHTML Mobile parsing &acirc; 
+PASS XHTML Mobile parsing &acute; 
+PASS XHTML Mobile parsing &Acy; 
+PASS XHTML Mobile parsing &acy; 
+PASS XHTML Mobile parsing &AElig; 
+PASS XHTML Mobile parsing &aelig; 
+PASS XHTML Mobile parsing &af; 
+PASS XHTML Mobile parsing &Afr; 
+PASS XHTML Mobile parsing &afr; 
+PASS XHTML Mobile parsing &Agrave; 
+PASS XHTML Mobile parsing &agrave; 
+PASS XHTML Mobile parsing &alefsym; 
+PASS XHTML Mobile parsing &aleph; 
+PASS XHTML Mobile parsing &Alpha; 
+PASS XHTML Mobile parsing &alpha; 
+PASS XHTML Mobile parsing &Amacr; 
+PASS XHTML Mobile parsing &amacr; 
+PASS XHTML Mobile parsing &amalg; 
+PASS XHTML Mobile parsing &amp; 
+FAIL XHTML Mobile parsing &AMP; assert_true: expected true got false
+PASS XHTML Mobile parsing &andand; 
+PASS XHTML Mobile parsing &And; 
+PASS XHTML Mobile parsing &and; 
+PASS XHTML Mobile parsing &andd; 
+PASS XHTML Mobile parsing &andslope; 
+PASS XHTML Mobile parsing &andv; 
+PASS XHTML Mobile parsing &ang; 
+PASS XHTML Mobile parsing &ange; 
+PASS XHTML Mobile parsing &angle; 
+PASS XHTML Mobile parsing &angmsdaa; 
+PASS XHTML Mobile parsing &angmsdab; 
+PASS XHTML Mobile parsing &angmsdac; 
+PASS XHTML Mobile parsing &angmsdad; 
+PASS XHTML Mobile parsing &angmsdae; 
+PASS XHTML Mobile parsing &angmsdaf; 
+PASS XHTML Mobile parsing &angmsdag; 
+PASS XHTML Mobile parsing &angmsdah; 
+PASS XHTML Mobile parsing &angmsd; 
+PASS XHTML Mobile parsing &angrt; 
+PASS XHTML Mobile parsing &angrtvb; 
+PASS XHTML Mobile parsing &angrtvbd; 
+PASS XHTML Mobile parsing &angsph; 
+PASS XHTML Mobile parsing &angst; 
+PASS XHTML Mobile parsing &angzarr; 
+PASS XHTML Mobile parsing &Aogon; 
+PASS XHTML Mobile parsing &aogon; 
+PASS XHTML Mobile parsing &Aopf; 
+PASS XHTML Mobile parsing &aopf; 
+PASS XHTML Mobile parsing &apacir; 
+PASS XHTML Mobile parsing &ap; 
+PASS XHTML Mobile parsing &apE; 
+PASS XHTML Mobile parsing &ape; 
+PASS XHTML Mobile parsing &apid; 
+PASS XHTML Mobile parsing &apos; 
+PASS XHTML Mobile parsing &ApplyFunction; 
+PASS XHTML Mobile parsing &approx; 
+PASS XHTML Mobile parsing &approxeq; 
+PASS XHTML Mobile parsing &Aring; 
+PASS XHTML Mobile parsing &aring; 
+PASS XHTML Mobile parsing &Ascr; 
+PASS XHTML Mobile parsing &ascr; 
+PASS XHTML Mobile parsing &Assign; 
+PASS XHTML Mobile parsing &ast; 
+PASS XHTML Mobile parsing &asymp; 
+PASS XHTML Mobile parsing &asympeq; 
+PASS XHTML Mobile parsing &Atilde; 
+PASS XHTML Mobile parsing &atilde; 
+PASS XHTML Mobile parsing &Auml; 
+PASS XHTML Mobile parsing &auml; 
+PASS XHTML Mobile parsing &awconint; 
+PASS XHTML Mobile parsing &awint; 
+PASS XHTML Mobile parsing &backcong; 
+PASS XHTML Mobile parsing &backepsilon; 
+PASS XHTML Mobile parsing &backprime; 
+PASS XHTML Mobile parsing &backsim; 
+PASS XHTML Mobile parsing &backsimeq; 
+PASS XHTML Mobile parsing &Backslash; 
+PASS XHTML Mobile parsing &Barv; 
+PASS XHTML Mobile parsing &barvee; 
+PASS XHTML Mobile parsing &barwed; 
+PASS XHTML Mobile parsing &Barwed; 
+PASS XHTML Mobile parsing &barwedge; 
+PASS XHTML Mobile parsing &bbrk; 
+PASS XHTML Mobile parsing &bbrktbrk; 
+PASS XHTML Mobile parsing &bcong; 
+PASS XHTML Mobile parsing &Bcy; 
+PASS XHTML Mobile parsing &bcy; 
+PASS XHTML Mobile parsing &bdquo; 
+PASS XHTML Mobile parsing &becaus; 
+PASS XHTML Mobile parsing &because; 
+PASS XHTML Mobile parsing &Because; 
+PASS XHTML Mobile parsing &bemptyv; 
+PASS XHTML Mobile parsing &bepsi; 
+PASS XHTML Mobile parsing &bernou; 
+PASS XHTML Mobile parsing &Bernoullis; 
+PASS XHTML Mobile parsing &Beta; 
+PASS XHTML Mobile parsing &beta; 
+PASS XHTML Mobile parsing &beth; 
+PASS XHTML Mobile parsing &between; 
+PASS XHTML Mobile parsing &Bfr; 
+PASS XHTML Mobile parsing &bfr; 
+PASS XHTML Mobile parsing &bigcap; 
+PASS XHTML Mobile parsing &bigcirc; 
+PASS XHTML Mobile parsing &bigcup; 
+PASS XHTML Mobile parsing &bigodot; 
+PASS XHTML Mobile parsing &bigoplus; 
+PASS XHTML Mobile parsing &bigotimes; 
+PASS XHTML Mobile parsing &bigsqcup; 
+PASS XHTML Mobile parsing &bigstar; 
+PASS XHTML Mobile parsing &bigtriangledown; 
+PASS XHTML Mobile parsing &bigtriangleup; 
+PASS XHTML Mobile parsing &biguplus; 
+PASS XHTML Mobile parsing &bigvee; 
+PASS XHTML Mobile parsing &bigwedge; 
+PASS XHTML Mobile parsing &bkarow; 
+PASS XHTML Mobile parsing &blacklozenge; 
+PASS XHTML Mobile parsing &blacksquare; 
+PASS XHTML Mobile parsing &blacktriangle; 
+PASS XHTML Mobile parsing &blacktriangledown; 
+PASS XHTML Mobile parsing &blacktriangleleft; 
+PASS XHTML Mobile parsing &blacktriangleright; 
+PASS XHTML Mobile parsing &blank; 
+PASS XHTML Mobile parsing &blk12; 
+PASS XHTML Mobile parsing &blk14; 
+PASS XHTML Mobile parsing &blk34; 
+PASS XHTML Mobile parsing &block; 
+PASS XHTML Mobile parsing &bne; 
+PASS XHTML Mobile parsing &bnequiv; 
+PASS XHTML Mobile parsing &bNot; 
+PASS XHTML Mobile parsing &bnot; 
+PASS XHTML Mobile parsing &Bopf; 
+PASS XHTML Mobile parsing &bopf; 
+PASS XHTML Mobile parsing &bot; 
+PASS XHTML Mobile parsing &bottom; 
+PASS XHTML Mobile parsing &bowtie; 
+PASS XHTML Mobile parsing &boxbox; 
+PASS XHTML Mobile parsing &boxdl; 
+PASS XHTML Mobile parsing &boxdL; 
+PASS XHTML Mobile parsing &boxDl; 
+PASS XHTML Mobile parsing &boxDL; 
+PASS XHTML Mobile parsing &boxdr; 
+PASS XHTML Mobile parsing &boxdR; 
+PASS XHTML Mobile parsing &boxDr; 
+PASS XHTML Mobile parsing &boxDR; 
+PASS XHTML Mobile parsing &boxh; 
+PASS XHTML Mobile parsing &boxH; 
+PASS XHTML Mobile parsing &boxhd; 
+PASS XHTML Mobile parsing &boxHd; 
+PASS XHTML Mobile parsing &boxhD; 
+PASS XHTML Mobile parsing &boxHD; 
+PASS XHTML Mobile parsing &boxhu; 
+PASS XHTML Mobile parsing &boxHu; 
+PASS XHTML Mobile parsing &boxhU; 
+PASS XHTML Mobile parsing &boxHU; 
+PASS XHTML Mobile parsing &boxminus; 
+PASS XHTML Mobile parsing &boxplus; 
+PASS XHTML Mobile parsing &boxtimes; 
+PASS XHTML Mobile parsing &boxul; 
+PASS XHTML Mobile parsing &boxuL; 
+PASS XHTML Mobile parsing &boxUl; 
+PASS XHTML Mobile parsing &boxUL; 
+PASS XHTML Mobile parsing &boxur; 
+PASS XHTML Mobile parsing &boxuR; 
+PASS XHTML Mobile parsing &boxUr; 
+PASS XHTML Mobile parsing &boxUR; 
+PASS XHTML Mobile parsing &boxv; 
+PASS XHTML Mobile parsing &boxV; 
+PASS XHTML Mobile parsing &boxvh; 
+PASS XHTML Mobile parsing &boxvH; 
+PASS XHTML Mobile parsing &boxVh; 
+PASS XHTML Mobile parsing &boxVH; 
+PASS XHTML Mobile parsing &boxvl; 
+PASS XHTML Mobile parsing &boxvL; 
+PASS XHTML Mobile parsing &boxVl; 
+PASS XHTML Mobile parsing &boxVL; 
+PASS XHTML Mobile parsing &boxvr; 
+PASS XHTML Mobile parsing &boxvR; 
+PASS XHTML Mobile parsing &boxVr; 
+PASS XHTML Mobile parsing &boxVR; 
+PASS XHTML Mobile parsing &bprime; 
+PASS XHTML Mobile parsing &breve; 
+PASS XHTML Mobile parsing &Breve; 
+PASS XHTML Mobile parsing &brvbar; 
+PASS XHTML Mobile parsing &bscr; 
+PASS XHTML Mobile parsing &Bscr; 
+PASS XHTML Mobile parsing &bsemi; 
+PASS XHTML Mobile parsing &bsim; 
+PASS XHTML Mobile parsing &bsime; 
+PASS XHTML Mobile parsing &bsolb; 
+PASS XHTML Mobile parsing &bsol; 
+PASS XHTML Mobile parsing &bsolhsub; 
+PASS XHTML Mobile parsing &bull; 
+PASS XHTML Mobile parsing &bullet; 
+PASS XHTML Mobile parsing &bump; 
+PASS XHTML Mobile parsing &bumpE; 
+PASS XHTML Mobile parsing &bumpe; 
+PASS XHTML Mobile parsing &Bumpeq; 
+PASS XHTML Mobile parsing &bumpeq; 
+PASS XHTML Mobile parsing &Cacute; 
+PASS XHTML Mobile parsing &cacute; 
+PASS XHTML Mobile parsing &capand; 
+PASS XHTML Mobile parsing &capbrcup; 
+PASS XHTML Mobile parsing &capcap; 
+PASS XHTML Mobile parsing &cap; 
+PASS XHTML Mobile parsing &Cap; 
+PASS XHTML Mobile parsing &capcup; 
+PASS XHTML Mobile parsing &capdot; 
+PASS XHTML Mobile parsing &CapitalDifferentialD; 
+PASS XHTML Mobile parsing &caps; 
+PASS XHTML Mobile parsing &caret; 
+PASS XHTML Mobile parsing &caron; 
+PASS XHTML Mobile parsing &Cayleys; 
+PASS XHTML Mobile parsing &ccaps; 
+PASS XHTML Mobile parsing &Ccaron; 
+PASS XHTML Mobile parsing &ccaron; 
+PASS XHTML Mobile parsing &Ccedil; 
+PASS XHTML Mobile parsing &ccedil; 
+PASS XHTML Mobile parsing &Ccirc; 
+PASS XHTML Mobile parsing &ccirc; 
+PASS XHTML Mobile parsing &Cconint; 
+PASS XHTML Mobile parsing &ccups; 
+PASS XHTML Mobile parsing &ccupssm; 
+PASS XHTML Mobile parsing &Cdot; 
+PASS XHTML Mobile parsing &cdot; 
+PASS XHTML Mobile parsing &cedil; 
+PASS XHTML Mobile parsing &Cedilla; 
+PASS XHTML Mobile parsing &cemptyv; 
+PASS XHTML Mobile parsing &cent; 
+PASS XHTML Mobile parsing &centerdot; 
+PASS XHTML Mobile parsing &CenterDot; 
+PASS XHTML Mobile parsing &cfr; 
+PASS XHTML Mobile parsing &Cfr; 
+PASS XHTML Mobile parsing &CHcy; 
+PASS XHTML Mobile parsing &chcy; 
+PASS XHTML Mobile parsing &check; 
+PASS XHTML Mobile parsing &checkmark; 
+PASS XHTML Mobile parsing &Chi; 
+PASS XHTML Mobile parsing &chi; 
+PASS XHTML Mobile parsing &circ; 
+PASS XHTML Mobile parsing &circeq; 
+PASS XHTML Mobile parsing &circlearrowleft; 
+PASS XHTML Mobile parsing &circlearrowright; 
+PASS XHTML Mobile parsing &circledast; 
+PASS XHTML Mobile parsing &circledcirc; 
+PASS XHTML Mobile parsing &circleddash; 
+PASS XHTML Mobile parsing &CircleDot; 
+PASS XHTML Mobile parsing &circledR; 
+PASS XHTML Mobile parsing &circledS; 
+PASS XHTML Mobile parsing &CircleMinus; 
+PASS XHTML Mobile parsing &CirclePlus; 
+PASS XHTML Mobile parsing &CircleTimes; 
+PASS XHTML Mobile parsing &cir; 
+PASS XHTML Mobile parsing &cirE; 
+PASS XHTML Mobile parsing &cire; 
+PASS XHTML Mobile parsing &cirfnint; 
+PASS XHTML Mobile parsing &cirmid; 
+PASS XHTML Mobile parsing &cirscir; 
+PASS XHTML Mobile parsing &ClockwiseContourIntegral; 
+PASS XHTML Mobile parsing &CloseCurlyDoubleQuote; 
+PASS XHTML Mobile parsing &CloseCurlyQuote; 
+PASS XHTML Mobile parsing &clubs; 
+PASS XHTML Mobile parsing &clubsuit; 
+PASS XHTML Mobile parsing &colon; 
+PASS XHTML Mobile parsing &Colon; 
+PASS XHTML Mobile parsing &Colone; 
+PASS XHTML Mobile parsing &colone; 
+PASS XHTML Mobile parsing &coloneq; 
+PASS XHTML Mobile parsing &comma; 
+PASS XHTML Mobile parsing &commat; 
+PASS XHTML Mobile parsing &comp; 
+PASS XHTML Mobile parsing &compfn; 
+PASS XHTML Mobile parsing &complement; 
+PASS XHTML Mobile parsing &complexes; 
+PASS XHTML Mobile parsing &cong; 
+PASS XHTML Mobile parsing &congdot; 
+PASS XHTML Mobile parsing &Congruent; 
+PASS XHTML Mobile parsing &conint; 
+PASS XHTML Mobile parsing &Conint; 
+PASS XHTML Mobile parsing &ContourIntegral; 
+PASS XHTML Mobile parsing &copf; 
+PASS XHTML Mobile parsing &Copf; 
+PASS XHTML Mobile parsing &coprod; 
+PASS XHTML Mobile parsing &Coproduct; 
+PASS XHTML Mobile parsing &copy; 
+PASS XHTML Mobile parsing &COPY; 
+PASS XHTML Mobile parsing &copysr; 
+PASS XHTML Mobile parsing &CounterClockwiseContourIntegral; 
+PASS XHTML Mobile parsing &crarr; 
+PASS XHTML Mobile parsing &cross; 
+PASS XHTML Mobile parsing &Cross; 
+PASS XHTML Mobile parsing &Cscr; 
+PASS XHTML Mobile parsing &cscr; 
+PASS XHTML Mobile parsing &csub; 
+PASS XHTML Mobile parsing &csube; 
+PASS XHTML Mobile parsing &csup; 
+PASS XHTML Mobile parsing &csupe; 
+PASS XHTML Mobile parsing &ctdot; 
+PASS XHTML Mobile parsing &cudarrl; 
+PASS XHTML Mobile parsing &cudarrr; 
+PASS XHTML Mobile parsing &cuepr; 
+PASS XHTML Mobile parsing &cuesc; 
+PASS XHTML Mobile parsing &cularr; 
+PASS XHTML Mobile parsing &cularrp; 
+PASS XHTML Mobile parsing &cupbrcap; 
+PASS XHTML Mobile parsing &cupcap; 
+PASS XHTML Mobile parsing &CupCap; 
+PASS XHTML Mobile parsing &cup; 
+PASS XHTML Mobile parsing &Cup; 
+PASS XHTML Mobile parsing &cupcup; 
+PASS XHTML Mobile parsing &cupdot; 
+PASS XHTML Mobile parsing &cupor; 
+PASS XHTML Mobile parsing &cups; 
+PASS XHTML Mobile parsing &curarr; 
+PASS XHTML Mobile parsing &curarrm; 
+PASS XHTML Mobile parsing &curlyeqprec; 
+PASS XHTML Mobile parsing &curlyeqsucc; 
+PASS XHTML Mobile parsing &curlyvee; 
+PASS XHTML Mobile parsing &curlywedge; 
+PASS XHTML Mobile parsing &curren; 
+PASS XHTML Mobile parsing &curvearrowleft; 
+PASS XHTML Mobile parsing &curvearrowright; 
+PASS XHTML Mobile parsing &cuvee; 
+PASS XHTML Mobile parsing &cuwed; 
+PASS XHTML Mobile parsing &cwconint; 
+PASS XHTML Mobile parsing &cwint; 
+PASS XHTML Mobile parsing &cylcty; 
+PASS XHTML Mobile parsing &dagger; 
+PASS XHTML Mobile parsing &Dagger; 
+PASS XHTML Mobile parsing &daleth; 
+PASS XHTML Mobile parsing &darr; 
+PASS XHTML Mobile parsing &Darr; 
+PASS XHTML Mobile parsing &dArr; 
+PASS XHTML Mobile parsing &dash; 
+PASS XHTML Mobile parsing &Dashv; 
+PASS XHTML Mobile parsing &dashv; 
+PASS XHTML Mobile parsing &dbkarow; 
+PASS XHTML Mobile parsing &dblac; 
+PASS XHTML Mobile parsing &Dcaron; 
+PASS XHTML Mobile parsing &dcaron; 
+PASS XHTML Mobile parsing &Dcy; 
+PASS XHTML Mobile parsing &dcy; 
+PASS XHTML Mobile parsing &ddagger; 
+PASS XHTML Mobile parsing &ddarr; 
+PASS XHTML Mobile parsing &DD; 
+PASS XHTML Mobile parsing &dd; 
+PASS XHTML Mobile parsing &DDotrahd; 
+PASS XHTML Mobile parsing &ddotseq; 
+PASS XHTML Mobile parsing &deg; 
+PASS XHTML Mobile parsing &Del; 
+PASS XHTML Mobile parsing &Delta; 
+PASS XHTML Mobile parsing &delta; 
+PASS XHTML Mobile parsing &demptyv; 
+PASS XHTML Mobile parsing &dfisht; 
+PASS XHTML Mobile parsing &Dfr; 
+PASS XHTML Mobile parsing &dfr; 
+PASS XHTML Mobile parsing &dHar; 
+PASS XHTML Mobile parsing &dharl; 
+PASS XHTML Mobile parsing &dharr; 
+PASS XHTML Mobile parsing &DiacriticalAcute; 
+PASS XHTML Mobile parsing &DiacriticalDot; 
+PASS XHTML Mobile parsing &DiacriticalDoubleAcute; 
+PASS XHTML Mobile parsing &DiacriticalGrave; 
+PASS XHTML Mobile parsing &DiacriticalTilde; 
+PASS XHTML Mobile parsing &diam; 
+PASS XHTML Mobile parsing &diamond; 
+PASS XHTML Mobile parsing &Diamond; 
+PASS XHTML Mobile parsing &diamondsuit; 
+PASS XHTML Mobile parsing &diams; 
+PASS XHTML Mobile parsing &die; 
+PASS XHTML Mobile parsing &DifferentialD; 
+PASS XHTML Mobile parsing &digamma; 
+PASS XHTML Mobile parsing &disin; 
+PASS XHTML Mobile parsing &div; 
+PASS XHTML Mobile parsing &divide; 
+PASS XHTML Mobile parsing &divideontimes; 
+PASS XHTML Mobile parsing &divonx; 
+PASS XHTML Mobile parsing &DJcy; 
+PASS XHTML Mobile parsing &djcy; 
+PASS XHTML Mobile parsing &dlcorn; 
+PASS XHTML Mobile parsing &dlcrop; 
+PASS XHTML Mobile parsing &dollar; 
+PASS XHTML Mobile parsing &Dopf; 
+PASS XHTML Mobile parsing &dopf; 
+PASS XHTML Mobile parsing &Dot; 
+PASS XHTML Mobile parsing &dot; 
+PASS XHTML Mobile parsing &DotDot; 
+PASS XHTML Mobile parsing &doteq; 
+PASS XHTML Mobile parsing &doteqdot; 
+PASS XHTML Mobile parsing &DotEqual; 
+PASS XHTML Mobile parsing &dotminus; 
+PASS XHTML Mobile parsing &dotplus; 
+PASS XHTML Mobile parsing &dotsquare; 
+PASS XHTML Mobile parsing &doublebarwedge; 
+PASS XHTML Mobile parsing &DoubleContourIntegral; 
+PASS XHTML Mobile parsing &DoubleDot; 
+PASS XHTML Mobile parsing &DoubleDownArrow; 
+PASS XHTML Mobile parsing &DoubleLeftArrow; 
+PASS XHTML Mobile parsing &DoubleLeftRightArrow; 
+PASS XHTML Mobile parsing &DoubleLeftTee; 
+PASS XHTML Mobile parsing &DoubleLongLeftArrow; 
+PASS XHTML Mobile parsing &DoubleLongLeftRightArrow; 
+PASS XHTML Mobile parsing &DoubleLongRightArrow; 
+PASS XHTML Mobile parsing &DoubleRightArrow; 
+PASS XHTML Mobile parsing &DoubleRightTee; 
+PASS XHTML Mobile parsing &DoubleUpArrow; 
+PASS XHTML Mobile parsing &DoubleUpDownArrow; 
+PASS XHTML Mobile parsing &DoubleVerticalBar; 
+PASS XHTML Mobile parsing &DownArrowBar; 
+PASS XHTML Mobile parsing &downarrow; 
+PASS XHTML Mobile parsing &DownArrow; 
+PASS XHTML Mobile parsing &Downarrow; 
+PASS XHTML Mobile parsing &DownArrowUpArrow; 
+PASS XHTML Mobile parsing &DownBreve; 
+PASS XHTML Mobile parsing &downdownarrows; 
+PASS XHTML Mobile parsing &downharpoonleft; 
+PASS XHTML Mobile parsing &downharpoonright; 
+PASS XHTML Mobile parsing &DownLeftRightVector; 
+PASS XHTML Mobile parsing &DownLeftTeeVector; 
+PASS XHTML Mobile parsing &DownLeftVectorBar; 
+PASS XHTML Mobile parsing &DownLeftVector; 
+PASS XHTML Mobile parsing &DownRightTeeVector; 
+PASS XHTML Mobile parsing &DownRightVectorBar; 
+PASS XHTML Mobile parsing &DownRightVector; 
+PASS XHTML Mobile parsing &DownTeeArrow; 
+PASS XHTML Mobile parsing &DownTee; 
+PASS XHTML Mobile parsing &drbkarow; 
+PASS XHTML Mobile parsing &drcorn; 
+PASS XHTML Mobile parsing &drcrop; 
+PASS XHTML Mobile parsing &Dscr; 
+PASS XHTML Mobile parsing &dscr; 
+PASS XHTML Mobile parsing &DScy; 
+PASS XHTML Mobile parsing &dscy; 
+PASS XHTML Mobile parsing &dsol; 
+PASS XHTML Mobile parsing &Dstrok; 
+PASS XHTML Mobile parsing &dstrok; 
+PASS XHTML Mobile parsing &dtdot; 
+PASS XHTML Mobile parsing &dtri; 
+PASS XHTML Mobile parsing &dtrif; 
+PASS XHTML Mobile parsing &duarr; 
+PASS XHTML Mobile parsing &duhar; 
+PASS XHTML Mobile parsing &dwangle; 
+PASS XHTML Mobile parsing &DZcy; 
+PASS XHTML Mobile parsing &dzcy; 
+PASS XHTML Mobile parsing &dzigrarr; 
+PASS XHTML Mobile parsing &Eacute; 
+PASS XHTML Mobile parsing &eacute; 
+PASS XHTML Mobile parsing &easter; 
+PASS XHTML Mobile parsing &Ecaron; 
+PASS XHTML Mobile parsing &ecaron; 
+PASS XHTML Mobile parsing &Ecirc; 
+PASS XHTML Mobile parsing &ecirc; 
+PASS XHTML Mobile parsing &ecir; 
+PASS XHTML Mobile parsing &ecolon; 
+PASS XHTML Mobile parsing &Ecy; 
+PASS XHTML Mobile parsing &ecy; 
+PASS XHTML Mobile parsing &eDDot; 
+PASS XHTML Mobile parsing &Edot; 
+PASS XHTML Mobile parsing &edot; 
+PASS XHTML Mobile parsing &eDot; 
+PASS XHTML Mobile parsing &ee; 
+PASS XHTML Mobile parsing &efDot; 
+PASS XHTML Mobile parsing &Efr; 
+PASS XHTML Mobile parsing &efr; 
+PASS XHTML Mobile parsing &eg; 
+PASS XHTML Mobile parsing &Egrave; 
+PASS XHTML Mobile parsing &egrave; 
+PASS XHTML Mobile parsing &egs; 
+PASS XHTML Mobile parsing &egsdot; 
+PASS XHTML Mobile parsing &el; 
+PASS XHTML Mobile parsing &Element; 
+PASS XHTML Mobile parsing &elinters; 
+PASS XHTML Mobile parsing &ell; 
+PASS XHTML Mobile parsing &els; 
+PASS XHTML Mobile parsing &elsdot; 
+PASS XHTML Mobile parsing &Emacr; 
+PASS XHTML Mobile parsing &emacr; 
+PASS XHTML Mobile parsing &empty; 
+PASS XHTML Mobile parsing &emptyset; 
+PASS XHTML Mobile parsing &EmptySmallSquare; 
+PASS XHTML Mobile parsing &emptyv; 
+PASS XHTML Mobile parsing &EmptyVerySmallSquare; 
+PASS XHTML Mobile parsing &emsp13; 
+PASS XHTML Mobile parsing &emsp14; 
+PASS XHTML Mobile parsing &emsp; 
+PASS XHTML Mobile parsing &ENG; 
+PASS XHTML Mobile parsing &eng; 
+PASS XHTML Mobile parsing &ensp; 
+PASS XHTML Mobile parsing &Eogon; 
+PASS XHTML Mobile parsing &eogon; 
+PASS XHTML Mobile parsing &Eopf; 
+PASS XHTML Mobile parsing &eopf; 
+PASS XHTML Mobile parsing &epar; 
+PASS XHTML Mobile parsing &eparsl; 
+PASS XHTML Mobile parsing &eplus; 
+PASS XHTML Mobile parsing &epsi; 
+PASS XHTML Mobile parsing &Epsilon; 
+PASS XHTML Mobile parsing &epsilon; 
+PASS XHTML Mobile parsing &epsiv; 
+PASS XHTML Mobile parsing &eqcirc; 
+PASS XHTML Mobile parsing &eqcolon; 
+PASS XHTML Mobile parsing &eqsim; 
+PASS XHTML Mobile parsing &eqslantgtr; 
+PASS XHTML Mobile parsing &eqslantless; 
+PASS XHTML Mobile parsing &Equal; 
+PASS XHTML Mobile parsing &equals; 
+PASS XHTML Mobile parsing &EqualTilde; 
+PASS XHTML Mobile parsing &equest; 
+PASS XHTML Mobile parsing &Equilibrium; 
+PASS XHTML Mobile parsing &equiv; 
+PASS XHTML Mobile parsing &equivDD; 
+PASS XHTML Mobile parsing &eqvparsl; 
+PASS XHTML Mobile parsing &erarr; 
+PASS XHTML Mobile parsing &erDot; 
+PASS XHTML Mobile parsing &escr; 
+PASS XHTML Mobile parsing &Escr; 
+PASS XHTML Mobile parsing &esdot; 
+PASS XHTML Mobile parsing &Esim; 
+PASS XHTML Mobile parsing &esim; 
+PASS XHTML Mobile parsing &Eta; 
+PASS XHTML Mobile parsing &eta; 
+PASS XHTML Mobile parsing &ETH; 
+PASS XHTML Mobile parsing &eth; 
+PASS XHTML Mobile parsing &Euml; 
+PASS XHTML Mobile parsing &euml; 
+PASS XHTML Mobile parsing &euro; 
+PASS XHTML Mobile parsing &excl; 
+PASS XHTML Mobile parsing &exist; 
+PASS XHTML Mobile parsing &Exists; 
+PASS XHTML Mobile parsing &expectation; 
+PASS XHTML Mobile parsing &exponentiale; 
+PASS XHTML Mobile parsing &ExponentialE; 
+PASS XHTML Mobile parsing &fallingdotseq; 
+PASS XHTML Mobile parsing &Fcy; 
+PASS XHTML Mobile parsing &fcy; 
+PASS XHTML Mobile parsing &female; 
+PASS XHTML Mobile parsing &ffilig; 
+PASS XHTML Mobile parsing &fflig; 
+PASS XHTML Mobile parsing &ffllig; 
+PASS XHTML Mobile parsing &Ffr; 
+PASS XHTML Mobile parsing &ffr; 
+PASS XHTML Mobile parsing &filig; 
+PASS XHTML Mobile parsing &FilledSmallSquare; 
+PASS XHTML Mobile parsing &FilledVerySmallSquare; 
+PASS XHTML Mobile parsing &fjlig; 
+PASS XHTML Mobile parsing &flat; 
+PASS XHTML Mobile parsing &fllig; 
+PASS XHTML Mobile parsing &fltns; 
+PASS XHTML Mobile parsing &fnof; 
+PASS XHTML Mobile parsing &Fopf; 
+PASS XHTML Mobile parsing &fopf; 
+PASS XHTML Mobile parsing &forall; 
+PASS XHTML Mobile parsing &ForAll; 
+PASS XHTML Mobile parsing &fork; 
+PASS XHTML Mobile parsing &forkv; 
+PASS XHTML Mobile parsing &Fouriertrf; 
+PASS XHTML Mobile parsing &fpartint; 
+PASS XHTML Mobile parsing &frac12; 
+PASS XHTML Mobile parsing &frac13; 
+PASS XHTML Mobile parsing &frac14; 
+PASS XHTML Mobile parsing &frac15; 
+PASS XHTML Mobile parsing &frac16; 
+PASS XHTML Mobile parsing &frac18; 
+PASS XHTML Mobile parsing &frac23; 
+PASS XHTML Mobile parsing &frac25; 
+PASS XHTML Mobile parsing &frac34; 
+PASS XHTML Mobile parsing &frac35; 
+PASS XHTML Mobile parsing &frac38; 
+PASS XHTML Mobile parsing &frac45; 
+PASS XHTML Mobile parsing &frac56; 
+PASS XHTML Mobile parsing &frac58; 
+PASS XHTML Mobile parsing &frac78; 
+PASS XHTML Mobile parsing &frasl; 
+PASS XHTML Mobile parsing &frown; 
+PASS XHTML Mobile parsing &fscr; 
+PASS XHTML Mobile parsing &Fscr; 
+PASS XHTML Mobile parsing &gacute; 
+PASS XHTML Mobile parsing &Gamma; 
+PASS XHTML Mobile parsing &gamma; 
+PASS XHTML Mobile parsing &Gammad; 
+PASS XHTML Mobile parsing &gammad; 
+PASS XHTML Mobile parsing &gap; 
+PASS XHTML Mobile parsing &Gbreve; 
+PASS XHTML Mobile parsing &gbreve; 
+PASS XHTML Mobile parsing &Gcedil; 
+PASS XHTML Mobile parsing &Gcirc; 
+PASS XHTML Mobile parsing &gcirc; 
+PASS XHTML Mobile parsing &Gcy; 
+PASS XHTML Mobile parsing &gcy; 
+PASS XHTML Mobile parsing &Gdot; 
+PASS XHTML Mobile parsing &gdot; 
+PASS XHTML Mobile parsing &ge; 
+PASS XHTML Mobile parsing &gE; 
+PASS XHTML Mobile parsing &gEl; 
+PASS XHTML Mobile parsing &gel; 
+PASS XHTML Mobile parsing &geq; 
+PASS XHTML Mobile parsing &geqq; 
+PASS XHTML Mobile parsing &geqslant; 
+PASS XHTML Mobile parsing &gescc; 
+PASS XHTML Mobile parsing &ges; 
+PASS XHTML Mobile parsing &gesdot; 
+PASS XHTML Mobile parsing &gesdoto; 
+PASS XHTML Mobile parsing &gesdotol; 
+PASS XHTML Mobile parsing &gesl; 
+PASS XHTML Mobile parsing &gesles; 
+PASS XHTML Mobile parsing &Gfr; 
+PASS XHTML Mobile parsing &gfr; 
+PASS XHTML Mobile parsing &gg; 
+PASS XHTML Mobile parsing &Gg; 
+PASS XHTML Mobile parsing &ggg; 
+PASS XHTML Mobile parsing &gimel; 
+PASS XHTML Mobile parsing &GJcy; 
+PASS XHTML Mobile parsing &gjcy; 
+PASS XHTML Mobile parsing &gla; 
+PASS XHTML Mobile parsing &gl; 
+PASS XHTML Mobile parsing &glE; 
+PASS XHTML Mobile parsing &glj; 
+PASS XHTML Mobile parsing &gnap; 
+PASS XHTML Mobile parsing &gnapprox; 
+PASS XHTML Mobile parsing &gne; 
+PASS XHTML Mobile parsing &gnE; 
+PASS XHTML Mobile parsing &gneq; 
+PASS XHTML Mobile parsing &gneqq; 
+PASS XHTML Mobile parsing &gnsim; 
+PASS XHTML Mobile parsing &Gopf; 
+PASS XHTML Mobile parsing &gopf; 
+PASS XHTML Mobile parsing &grave; 
+PASS XHTML Mobile parsing &GreaterEqual; 
+PASS XHTML Mobile parsing &GreaterEqualLess; 
+PASS XHTML Mobile parsing &GreaterFullEqual; 
+PASS XHTML Mobile parsing &GreaterGreater; 
+PASS XHTML Mobile parsing &GreaterLess; 
+PASS XHTML Mobile parsing &GreaterSlantEqual; 
+PASS XHTML Mobile parsing &GreaterTilde; 
+PASS XHTML Mobile parsing &Gscr; 
+PASS XHTML Mobile parsing &gscr; 
+PASS XHTML Mobile parsing &gsim; 
+PASS XHTML Mobile parsing &gsime; 
+PASS XHTML Mobile parsing &gsiml; 
+PASS XHTML Mobile parsing &gtcc; 
+PASS XHTML Mobile parsing &gtcir; 
+PASS XHTML Mobile parsing &gt; 
+PASS XHTML Mobile parsing &GT; 
+PASS XHTML Mobile parsing &Gt; 
+PASS XHTML Mobile parsing &gtdot; 
+PASS XHTML Mobile parsing &gtlPar; 
+PASS XHTML Mobile parsing &gtquest; 
+PASS XHTML Mobile parsing &gtrapprox; 
+PASS XHTML Mobile parsing &gtrarr; 
+PASS XHTML Mobile parsing &gtrdot; 
+PASS XHTML Mobile parsing &gtreqless; 
+PASS XHTML Mobile parsing &gtreqqless; 
+PASS XHTML Mobile parsing &gtrless; 
+PASS XHTML Mobile parsing &gtrsim; 
+PASS XHTML Mobile parsing &gvertneqq; 
+PASS XHTML Mobile parsing &gvnE; 
+PASS XHTML Mobile parsing &Hacek; 
+PASS XHTML Mobile parsing &hairsp; 
+PASS XHTML Mobile parsing &half; 
+PASS XHTML Mobile parsing &hamilt; 
+PASS XHTML Mobile parsing &HARDcy; 
+PASS XHTML Mobile parsing &hardcy; 
+PASS XHTML Mobile parsing &harrcir; 
+PASS XHTML Mobile parsing &harr; 
+PASS XHTML Mobile parsing &hArr; 
+PASS XHTML Mobile parsing &harrw; 
+PASS XHTML Mobile parsing &Hat; 
+PASS XHTML Mobile parsing &hbar; 
+PASS XHTML Mobile parsing &Hcirc; 
+PASS XHTML Mobile parsing &hcirc; 
+PASS XHTML Mobile parsing &hearts; 
+PASS XHTML Mobile parsing &heartsuit; 
+PASS XHTML Mobile parsing &hellip; 
+PASS XHTML Mobile parsing &hercon; 
+PASS XHTML Mobile parsing &hfr; 
+PASS XHTML Mobile parsing &Hfr; 
+PASS XHTML Mobile parsing &HilbertSpace; 
+PASS XHTML Mobile parsing &hksearow; 
+PASS XHTML Mobile parsing &hkswarow; 
+PASS XHTML Mobile parsing &hoarr; 
+PASS XHTML Mobile parsing &homtht; 
+PASS XHTML Mobile parsing &hookleftarrow; 
+PASS XHTML Mobile parsing &hookrightarrow; 
+PASS XHTML Mobile parsing &hopf; 
+PASS XHTML Mobile parsing &Hopf; 
+PASS XHTML Mobile parsing &horbar; 
+PASS XHTML Mobile parsing &HorizontalLine; 
+PASS XHTML Mobile parsing &hscr; 
+PASS XHTML Mobile parsing &Hscr; 
+PASS XHTML Mobile parsing &hslash; 
+PASS XHTML Mobile parsing &Hstrok; 
+PASS XHTML Mobile parsing &hstrok; 
+PASS XHTML Mobile parsing &HumpDownHump; 
+PASS XHTML Mobile parsing &HumpEqual; 
+PASS XHTML Mobile parsing &hybull; 
+PASS XHTML Mobile parsing &hyphen; 
+PASS XHTML Mobile parsing &Iacute; 
+PASS XHTML Mobile parsing &iacute; 
+PASS XHTML Mobile parsing &ic; 
+PASS XHTML Mobile parsing &Icirc; 
+PASS XHTML Mobile parsing &icirc; 
+PASS XHTML Mobile parsing &Icy; 
+PASS XHTML Mobile parsing &icy; 
+PASS XHTML Mobile parsing &Idot; 
+PASS XHTML Mobile parsing &IEcy; 
+PASS XHTML Mobile parsing &iecy; 
+PASS XHTML Mobile parsing &iexcl; 
+PASS XHTML Mobile parsing &iff; 
+PASS XHTML Mobile parsing &ifr; 
+PASS XHTML Mobile parsing &Ifr; 
+PASS XHTML Mobile parsing &Igrave; 
+PASS XHTML Mobile parsing &igrave; 
+PASS XHTML Mobile parsing &ii; 
+PASS XHTML Mobile parsing &iiiint; 
+PASS XHTML Mobile parsing &iiint; 
+PASS XHTML Mobile parsing &iinfin; 
+PASS XHTML Mobile parsing &iiota; 
+PASS XHTML Mobile parsing &IJlig; 
+PASS XHTML Mobile parsing &ijlig; 
+PASS XHTML Mobile parsing &Imacr; 
+PASS XHTML Mobile parsing &imacr; 
+PASS XHTML Mobile parsing &image; 
+PASS XHTML Mobile parsing &ImaginaryI; 
+PASS XHTML Mobile parsing &imagline; 
+PASS XHTML Mobile parsing &imagpart; 
+PASS XHTML Mobile parsing &imath; 
+PASS XHTML Mobile parsing &Im; 
+PASS XHTML Mobile parsing &imof; 
+PASS XHTML Mobile parsing &imped; 
+PASS XHTML Mobile parsing &Implies; 
+PASS XHTML Mobile parsing &incare; 
+PASS XHTML Mobile parsing &in; 
+PASS XHTML Mobile parsing &infin; 
+PASS XHTML Mobile parsing &infintie; 
+PASS XHTML Mobile parsing &inodot; 
+PASS XHTML Mobile parsing &intcal; 
+PASS XHTML Mobile parsing &int; 
+PASS XHTML Mobile parsing &Int; 
+PASS XHTML Mobile parsing &integers; 
+PASS XHTML Mobile parsing &Integral; 
+PASS XHTML Mobile parsing &intercal; 
+PASS XHTML Mobile parsing &Intersection; 
+PASS XHTML Mobile parsing &intlarhk; 
+PASS XHTML Mobile parsing &intprod; 
+PASS XHTML Mobile parsing &InvisibleComma; 
+PASS XHTML Mobile parsing &InvisibleTimes; 
+PASS XHTML Mobile parsing &IOcy; 
+PASS XHTML Mobile parsing &iocy; 
+PASS XHTML Mobile parsing &Iogon; 
+PASS XHTML Mobile parsing &iogon; 
+PASS XHTML Mobile parsing &Iopf; 
+PASS XHTML Mobile parsing &iopf; 
+PASS XHTML Mobile parsing &Iota; 
+PASS XHTML Mobile parsing &iota; 
+PASS XHTML Mobile parsing &iprod; 
+PASS XHTML Mobile parsing &iquest; 
+PASS XHTML Mobile parsing &iscr; 
+PASS XHTML Mobile parsing &Iscr; 
+PASS XHTML Mobile parsing &isin; 
+PASS XHTML Mobile parsing &isindot; 
+PASS XHTML Mobile parsing &isinE; 
+PASS XHTML Mobile parsing &isins; 
+PASS XHTML Mobile parsing &isinsv; 
+PASS XHTML Mobile parsing &isinv; 
+PASS XHTML Mobile parsing &it; 
+PASS XHTML Mobile parsing &Itilde; 
+PASS XHTML Mobile parsing &itilde; 
+PASS XHTML Mobile parsing &Iukcy; 
+PASS XHTML Mobile parsing &iukcy; 
+PASS XHTML Mobile parsing &Iuml; 
+PASS XHTML Mobile parsing &iuml; 
+PASS XHTML Mobile parsing &Jcirc; 
+PASS XHTML Mobile parsing &jcirc; 
+PASS XHTML Mobile parsing &Jcy; 
+PASS XHTML Mobile parsing &jcy; 
+PASS XHTML Mobile parsing &Jfr; 
+PASS XHTML Mobile parsing &jfr; 
+PASS XHTML Mobile parsing &jmath; 
+PASS XHTML Mobile parsing &Jopf; 
+PASS XHTML Mobile parsing &jopf; 
+PASS XHTML Mobile parsing &Jscr; 
+PASS XHTML Mobile parsing &jscr; 
+PASS XHTML Mobile parsing &Jsercy; 
+PASS XHTML Mobile parsing &jsercy; 
+PASS XHTML Mobile parsing &Jukcy; 
+PASS XHTML Mobile parsing &jukcy; 
+PASS XHTML Mobile parsing &Kappa; 
+PASS XHTML Mobile parsing &kappa; 
+PASS XHTML Mobile parsing &kappav; 
+PASS XHTML Mobile parsing &Kcedil; 
+PASS XHTML Mobile parsing &kcedil; 
+PASS XHTML Mobile parsing &Kcy; 
+PASS XHTML Mobile parsing &kcy; 
+PASS XHTML Mobile parsing &Kfr; 
+PASS XHTML Mobile parsing &kfr; 
+PASS XHTML Mobile parsing &kgreen; 
+PASS XHTML Mobile parsing &KHcy; 
+PASS XHTML Mobile parsing &khcy; 
+PASS XHTML Mobile parsing &KJcy; 
+PASS XHTML Mobile parsing &kjcy; 
+PASS XHTML Mobile parsing &Kopf; 
+PASS XHTML Mobile parsing &kopf; 
+PASS XHTML Mobile parsing &Kscr; 
+PASS XHTML Mobile parsing &kscr; 
+PASS XHTML Mobile parsing &lAarr; 
+PASS XHTML Mobile parsing &Lacute; 
+PASS XHTML Mobile parsing &lacute; 
+PASS XHTML Mobile parsing &laemptyv; 
+PASS XHTML Mobile parsing &lagran; 
+PASS XHTML Mobile parsing &Lambda; 
+PASS XHTML Mobile parsing &lambda; 
+PASS XHTML Mobile parsing &lang; 
+PASS XHTML Mobile parsing &Lang; 
+PASS XHTML Mobile parsing &langd; 
+PASS XHTML Mobile parsing &langle; 
+PASS XHTML Mobile parsing &lap; 
+PASS XHTML Mobile parsing &Laplacetrf; 
+PASS XHTML Mobile parsing &laquo; 
+PASS XHTML Mobile parsing &larrb; 
+PASS XHTML Mobile parsing &larrbfs; 
+PASS XHTML Mobile parsing &larr; 
+PASS XHTML Mobile parsing &Larr; 
+PASS XHTML Mobile parsing &lArr; 
+PASS XHTML Mobile parsing &larrfs; 
+PASS XHTML Mobile parsing &larrhk; 
+PASS XHTML Mobile parsing &larrlp; 
+PASS XHTML Mobile parsing &larrpl; 
+PASS XHTML Mobile parsing &larrsim; 
+PASS XHTML Mobile parsing &larrtl; 
+PASS XHTML Mobile parsing &latail; 
+PASS XHTML Mobile parsing &lAtail; 
+PASS XHTML Mobile parsing &lat; 
+PASS XHTML Mobile parsing &late; 
+PASS XHTML Mobile parsing &lates; 
+PASS XHTML Mobile parsing &lbarr; 
+PASS XHTML Mobile parsing &lBarr; 
+PASS XHTML Mobile parsing &lbbrk; 
+PASS XHTML Mobile parsing &lbrace; 
+PASS XHTML Mobile parsing &lbrack; 
+PASS XHTML Mobile parsing &lbrke; 
+PASS XHTML Mobile parsing &lbrksld; 
+PASS XHTML Mobile parsing &lbrkslu; 
+PASS XHTML Mobile parsing &Lcaron; 
+PASS XHTML Mobile parsing &lcaron; 
+PASS XHTML Mobile parsing &Lcedil; 
+PASS XHTML Mobile parsing &lcedil; 
+PASS XHTML Mobile parsing &lceil; 
+PASS XHTML Mobile parsing &lcub; 
+PASS XHTML Mobile parsing &Lcy; 
+PASS XHTML Mobile parsing &lcy; 
+PASS XHTML Mobile parsing &ldca; 
+PASS XHTML Mobile parsing &ldquo; 
+PASS XHTML Mobile parsing &ldquor; 
+PASS XHTML Mobile parsing &ldrdhar; 
+PASS XHTML Mobile parsing &ldrushar; 
+PASS XHTML Mobile parsing &ldsh; 
+PASS XHTML Mobile parsing &le; 
+PASS XHTML Mobile parsing &lE; 
+PASS XHTML Mobile parsing &LeftAngleBracket; 
+PASS XHTML Mobile parsing &LeftArrowBar; 
+PASS XHTML Mobile parsing &leftarrow; 
+PASS XHTML Mobile parsing &LeftArrow; 
+PASS XHTML Mobile parsing &Leftarrow; 
+PASS XHTML Mobile parsing &LeftArrowRightArrow; 
+PASS XHTML Mobile parsing &leftarrowtail; 
+PASS XHTML Mobile parsing &LeftCeiling; 
+PASS XHTML Mobile parsing &LeftDoubleBracket; 
+PASS XHTML Mobile parsing &LeftDownTeeVector; 
+PASS XHTML Mobile parsing &LeftDownVectorBar; 
+PASS XHTML Mobile parsing &LeftDownVector; 
+PASS XHTML Mobile parsing &LeftFloor; 
+PASS XHTML Mobile parsing &leftharpoondown; 
+PASS XHTML Mobile parsing &leftharpoonup; 
+PASS XHTML Mobile parsing &leftleftarrows; 
+PASS XHTML Mobile parsing &leftrightarrow; 
+PASS XHTML Mobile parsing &LeftRightArrow; 
+PASS XHTML Mobile parsing &Leftrightarrow; 
+PASS XHTML Mobile parsing &leftrightarrows; 
+PASS XHTML Mobile parsing &leftrightharpoons; 
+PASS XHTML Mobile parsing &leftrightsquigarrow; 
+PASS XHTML Mobile parsing &LeftRightVector; 
+PASS XHTML Mobile parsing &LeftTeeArrow; 
+PASS XHTML Mobile parsing &LeftTee; 
+PASS XHTML Mobile parsing &LeftTeeVector; 
+PASS XHTML Mobile parsing &leftthreetimes; 
+PASS XHTML Mobile parsing &LeftTriangleBar; 
+PASS XHTML Mobile parsing &LeftTriangle; 
+PASS XHTML Mobile parsing &LeftTriangleEqual; 
+PASS XHTML Mobile parsing &LeftUpDownVector; 
+PASS XHTML Mobile parsing &LeftUpTeeVector; 
+PASS XHTML Mobile parsing &LeftUpVectorBar; 
+PASS XHTML Mobile parsing &LeftUpVector; 
+PASS XHTML Mobile parsing &LeftVectorBar; 
+PASS XHTML Mobile parsing &LeftVector; 
+PASS XHTML Mobile parsing &lEg; 
+PASS XHTML Mobile parsing &leg; 
+PASS XHTML Mobile parsing &leq; 
+PASS XHTML Mobile parsing &leqq; 
+PASS XHTML Mobile parsing &leqslant; 
+PASS XHTML Mobile parsing &lescc; 
+PASS XHTML Mobile parsing &les; 
+PASS XHTML Mobile parsing &lesdot; 
+PASS XHTML Mobile parsing &lesdoto; 
+PASS XHTML Mobile parsing &lesdotor; 
+PASS XHTML Mobile parsing &lesg; 
+PASS XHTML Mobile parsing &lesges; 
+PASS XHTML Mobile parsing &lessapprox; 
+PASS XHTML Mobile parsing &lessdot; 
+PASS XHTML Mobile parsing &lesseqgtr; 
+PASS XHTML Mobile parsing &lesseqqgtr; 
+PASS XHTML Mobile parsing &LessEqualGreater; 
+PASS XHTML Mobile parsing &LessFullEqual; 
+PASS XHTML Mobile parsing &LessGreater; 
+PASS XHTML Mobile parsing &lessgtr; 
+PASS XHTML Mobile parsing &LessLess; 
+PASS XHTML Mobile parsing &lesssim; 
+PASS XHTML Mobile parsing &LessSlantEqual; 
+PASS XHTML Mobile parsing &LessTilde; 
+PASS XHTML Mobile parsing &lfisht; 
+PASS XHTML Mobile parsing &lfloor; 
+PASS XHTML Mobile parsing &Lfr; 
+PASS XHTML Mobile parsing &lfr; 
+PASS XHTML Mobile parsing &lg; 
+PASS XHTML Mobile parsing &lgE; 
+PASS XHTML Mobile parsing &lHar; 
+PASS XHTML Mobile parsing &lhard; 
+PASS XHTML Mobile parsing &lharu; 
+PASS XHTML Mobile parsing &lharul; 
+PASS XHTML Mobile parsing &lhblk; 
+PASS XHTML Mobile parsing &LJcy; 
+PASS XHTML Mobile parsing &ljcy; 
+PASS XHTML Mobile parsing &llarr; 
+PASS XHTML Mobile parsing &ll; 
+PASS XHTML Mobile parsing &Ll; 
+PASS XHTML Mobile parsing &llcorner; 
+PASS XHTML Mobile parsing &Lleftarrow; 
+PASS XHTML Mobile parsing &llhard; 
+PASS XHTML Mobile parsing &lltri; 
+PASS XHTML Mobile parsing &Lmidot; 
+PASS XHTML Mobile parsing &lmidot; 
+PASS XHTML Mobile parsing &lmoustache; 
+PASS XHTML Mobile parsing &lmoust; 
+PASS XHTML Mobile parsing &lnap; 
+PASS XHTML Mobile parsing &lnapprox; 
+PASS XHTML Mobile parsing &lne; 
+PASS XHTML Mobile parsing &lnE; 
+PASS XHTML Mobile parsing &lneq; 
+PASS XHTML Mobile parsing &lneqq; 
+PASS XHTML Mobile parsing &lnsim; 
+PASS XHTML Mobile parsing &loang; 
+PASS XHTML Mobile parsing &loarr; 
+PASS XHTML Mobile parsing &lobrk; 
+PASS XHTML Mobile parsing &longleftarrow; 
+PASS XHTML Mobile parsing &LongLeftArrow; 
+PASS XHTML Mobile parsing &Longleftarrow; 
+PASS XHTML Mobile parsing &longleftrightarrow; 
+PASS XHTML Mobile parsing &LongLeftRightArrow; 
+PASS XHTML Mobile parsing &Longleftrightarrow; 
+PASS XHTML Mobile parsing &longmapsto; 
+PASS XHTML Mobile parsing &longrightarrow; 
+PASS XHTML Mobile parsing &LongRightArrow; 
+PASS XHTML Mobile parsing &Longrightarrow; 
+PASS XHTML Mobile parsing &looparrowleft; 
+PASS XHTML Mobile parsing &looparrowright; 
+PASS XHTML Mobile parsing &lopar; 
+PASS XHTML Mobile parsing &Lopf; 
+PASS XHTML Mobile parsing &lopf; 
+PASS XHTML Mobile parsing &loplus; 
+PASS XHTML Mobile parsing &lotimes; 
+PASS XHTML Mobile parsing &lowast; 
+PASS XHTML Mobile parsing &lowbar; 
+PASS XHTML Mobile parsing &LowerLeftArrow; 
+PASS XHTML Mobile parsing &LowerRightArrow; 
+PASS XHTML Mobile parsing &loz; 
+PASS XHTML Mobile parsing &lozenge; 
+PASS XHTML Mobile parsing &lozf; 
+PASS XHTML Mobile parsing &lpar; 
+PASS XHTML Mobile parsing &lparlt; 
+PASS XHTML Mobile parsing &lrarr; 
+PASS XHTML Mobile parsing &lrcorner; 
+PASS XHTML Mobile parsing &lrhar; 
+PASS XHTML Mobile parsing &lrhard; 
+PASS XHTML Mobile parsing &lrm; 
+PASS XHTML Mobile parsing &lrtri; 
+PASS XHTML Mobile parsing &lsaquo; 
+PASS XHTML Mobile parsing &lscr; 
+PASS XHTML Mobile parsing &Lscr; 
+PASS XHTML Mobile parsing &lsh; 
+PASS XHTML Mobile parsing &Lsh; 
+PASS XHTML Mobile parsing &lsim; 
+PASS XHTML Mobile parsing &lsime; 
+PASS XHTML Mobile parsing &lsimg; 
+PASS XHTML Mobile parsing &lsqb; 
+PASS XHTML Mobile parsing &lsquo; 
+PASS XHTML Mobile parsing &lsquor; 
+PASS XHTML Mobile parsing &Lstrok; 
+PASS XHTML Mobile parsing &lstrok; 
+PASS XHTML Mobile parsing &ltcc; 
+PASS XHTML Mobile parsing &ltcir; 
+PASS XHTML Mobile parsing &lt; 
+FAIL XHTML Mobile parsing &LT; assert_true: expected true got false
+PASS XHTML Mobile parsing &Lt; 
+PASS XHTML Mobile parsing &ltdot; 
+PASS XHTML Mobile parsing &lthree; 
+PASS XHTML Mobile parsing &ltimes; 
+PASS XHTML Mobile parsing &ltlarr; 
+PASS XHTML Mobile parsing &ltquest; 
+PASS XHTML Mobile parsing &ltri; 
+PASS XHTML Mobile parsing &ltrie; 
+PASS XHTML Mobile parsing &ltrif; 
+PASS XHTML Mobile parsing &ltrPar; 
+PASS XHTML Mobile parsing &lurdshar; 
+PASS XHTML Mobile parsing &luruhar; 
+PASS XHTML Mobile parsing &lvertneqq; 
+PASS XHTML Mobile parsing &lvnE; 
+PASS XHTML Mobile parsing &macr; 
+PASS XHTML Mobile parsing &male; 
+PASS XHTML Mobile parsing &malt; 
+PASS XHTML Mobile parsing &maltese; 
+PASS XHTML Mobile parsing &Map; 
+PASS XHTML Mobile parsing &map; 
+PASS XHTML Mobile parsing &mapsto; 
+PASS XHTML Mobile parsing &mapstodown; 
+PASS XHTML Mobile parsing &mapstoleft; 
+PASS XHTML Mobile parsing &mapstoup; 
+PASS XHTML Mobile parsing &marker; 
+PASS XHTML Mobile parsing &mcomma; 
+PASS XHTML Mobile parsing &Mcy; 
+PASS XHTML Mobile parsing &mcy; 
+PASS XHTML Mobile parsing &mdash; 
+PASS XHTML Mobile parsing &mDDot; 
+PASS XHTML Mobile parsing &measuredangle; 
+PASS XHTML Mobile parsing &MediumSpace; 
+PASS XHTML Mobile parsing &Mellintrf; 
+PASS XHTML Mobile parsing &Mfr; 
+PASS XHTML Mobile parsing &mfr; 
+PASS XHTML Mobile parsing &mho; 
+PASS XHTML Mobile parsing &micro; 
+PASS XHTML Mobile parsing &midast; 
+PASS XHTML Mobile parsing &midcir; 
+PASS XHTML Mobile parsing &mid; 
+PASS XHTML Mobile parsing &middot; 
+PASS XHTML Mobile parsing &minusb; 
+PASS XHTML Mobile parsing &minus; 
+PASS XHTML Mobile parsing &minusd; 
+PASS XHTML Mobile parsing &minusdu; 
+PASS XHTML Mobile parsing &MinusPlus; 
+PASS XHTML Mobile parsing &mlcp; 
+PASS XHTML Mobile parsing &mldr; 
+PASS XHTML Mobile parsing &mnplus; 
+PASS XHTML Mobile parsing &models; 
+PASS XHTML Mobile parsing &Mopf; 
+PASS XHTML Mobile parsing &mopf; 
+PASS XHTML Mobile parsing &mp; 
+PASS XHTML Mobile parsing &mscr; 
+PASS XHTML Mobile parsing &Mscr; 
+PASS XHTML Mobile parsing &mstpos; 
+PASS XHTML Mobile parsing &Mu; 
+PASS XHTML Mobile parsing &mu; 
+PASS XHTML Mobile parsing &multimap; 
+PASS XHTML Mobile parsing &mumap; 
+PASS XHTML Mobile parsing &nabla; 
+PASS XHTML Mobile parsing &Nacute; 
+PASS XHTML Mobile parsing &nacute; 
+PASS XHTML Mobile parsing &nang; 
+PASS XHTML Mobile parsing &nap; 
+PASS XHTML Mobile parsing &napE; 
+PASS XHTML Mobile parsing &napid; 
+PASS XHTML Mobile parsing &napos; 
+PASS XHTML Mobile parsing &napprox; 
+PASS XHTML Mobile parsing &natural; 
+PASS XHTML Mobile parsing &naturals; 
+PASS XHTML Mobile parsing &natur; 
+PASS XHTML Mobile parsing &nbsp; 
+PASS XHTML Mobile parsing &nbump; 
+PASS XHTML Mobile parsing &nbumpe; 
+PASS XHTML Mobile parsing &ncap; 
+PASS XHTML Mobile parsing &Ncaron; 
+PASS XHTML Mobile parsing &ncaron; 
+PASS XHTML Mobile parsing &Ncedil; 
+PASS XHTML Mobile parsing &ncedil; 
+PASS XHTML Mobile parsing &ncong; 
+PASS XHTML Mobile parsing &ncongdot; 
+PASS XHTML Mobile parsing &ncup; 
+PASS XHTML Mobile parsing &Ncy; 
+PASS XHTML Mobile parsing &ncy; 
+PASS XHTML Mobile parsing &ndash; 
+PASS XHTML Mobile parsing &nearhk; 
+PASS XHTML Mobile parsing &nearr; 
+PASS XHTML Mobile parsing &neArr; 
+PASS XHTML Mobile parsing &nearrow; 
+PASS XHTML Mobile parsing &ne; 
+PASS XHTML Mobile parsing &nedot; 
+PASS XHTML Mobile parsing &NegativeMediumSpace; 
+PASS XHTML Mobile parsing &NegativeThickSpace; 
+PASS XHTML Mobile parsing &NegativeThinSpace; 
+PASS XHTML Mobile parsing &NegativeVeryThinSpace; 
+PASS XHTML Mobile parsing &nequiv; 
+PASS XHTML Mobile parsing &nesear; 
+PASS XHTML Mobile parsing &nesim; 
+PASS XHTML Mobile parsing &NestedGreaterGreater; 
+PASS XHTML Mobile parsing &NestedLessLess; 
+PASS XHTML Mobile parsing &NewLine; 
+PASS XHTML Mobile parsing &nexist; 
+PASS XHTML Mobile parsing &nexists; 
+PASS XHTML Mobile parsing &Nfr; 
+PASS XHTML Mobile parsing &nfr; 
+PASS XHTML Mobile parsing &ngE; 
+PASS XHTML Mobile parsing &nge; 
+PASS XHTML Mobile parsing &ngeq; 
+PASS XHTML Mobile parsing &ngeqq; 
+PASS XHTML Mobile parsing &ngeqslant; 
+PASS XHTML Mobile parsing &nges; 
+PASS XHTML Mobile parsing &nGg; 
+PASS XHTML Mobile parsing &ngsim; 
+PASS XHTML Mobile parsing &nGt; 
+PASS XHTML Mobile parsing &ngt; 
+PASS XHTML Mobile parsing &ngtr; 
+PASS XHTML Mobile parsing &nGtv; 
+PASS XHTML Mobile parsing &nharr; 
+PASS XHTML Mobile parsing &nhArr; 
+PASS XHTML Mobile parsing &nhpar; 
+PASS XHTML Mobile parsing &ni; 
+PASS XHTML Mobile parsing &nis; 
+PASS XHTML Mobile parsing &nisd; 
+PASS XHTML Mobile parsing &niv; 
+PASS XHTML Mobile parsing &NJcy; 
+PASS XHTML Mobile parsing &njcy; 
+PASS XHTML Mobile parsing &nlarr; 
+PASS XHTML Mobile parsing &nlArr; 
+PASS XHTML Mobile parsing &nldr; 
+PASS XHTML Mobile parsing &nlE; 
+PASS XHTML Mobile parsing &nle; 
+PASS XHTML Mobile parsing &nleftarrow; 
+PASS XHTML Mobile parsing &nLeftarrow; 
+PASS XHTML Mobile parsing &nleftrightarrow; 
+PASS XHTML Mobile parsing &nLeftrightarrow; 
+PASS XHTML Mobile parsing &nleq; 
+PASS XHTML Mobile parsing &nleqq; 
+PASS XHTML Mobile parsing &nleqslant; 
+PASS XHTML Mobile parsing &nles; 
+PASS XHTML Mobile parsing &nless; 
+PASS XHTML Mobile parsing &nLl; 
+PASS XHTML Mobile parsing &nlsim; 
+PASS XHTML Mobile parsing &nLt; 
+PASS XHTML Mobile parsing &nlt; 
+PASS XHTML Mobile parsing &nltri; 
+PASS XHTML Mobile parsing &nltrie; 
+PASS XHTML Mobile parsing &nLtv; 
+PASS XHTML Mobile parsing &nmid; 
+PASS XHTML Mobile parsing &NoBreak; 
+PASS XHTML Mobile parsing &NonBreakingSpace; 
+PASS XHTML Mobile parsing &nopf; 
+PASS XHTML Mobile parsing &Nopf; 
+PASS XHTML Mobile parsing &Not; 
+PASS XHTML Mobile parsing &not; 
+PASS XHTML Mobile parsing &NotCongruent; 
+PASS XHTML Mobile parsing &NotCupCap; 
+PASS XHTML Mobile parsing &NotDoubleVerticalBar; 
+PASS XHTML Mobile parsing &NotElement; 
+PASS XHTML Mobile parsing &NotEqual; 
+PASS XHTML Mobile parsing &NotEqualTilde; 
+PASS XHTML Mobile parsing &NotExists; 
+PASS XHTML Mobile parsing &NotGreater; 
+PASS XHTML Mobile parsing &NotGreaterEqual; 
+PASS XHTML Mobile parsing &NotGreaterFullEqual; 
+PASS XHTML Mobile parsing &NotGreaterGreater; 
+PASS XHTML Mobile parsing &NotGreaterLess; 
+PASS XHTML Mobile parsing &NotGreaterSlantEqual; 
+PASS XHTML Mobile parsing &NotGreaterTilde; 
+PASS XHTML Mobile parsing &NotHumpDownHump; 
+PASS XHTML Mobile parsing &NotHumpEqual; 
+PASS XHTML Mobile parsing &notin; 
+PASS XHTML Mobile parsing &notindot; 
+PASS XHTML Mobile parsing &notinE; 
+PASS XHTML Mobile parsing &notinva; 
+PASS XHTML Mobile parsing &notinvb; 
+PASS XHTML Mobile parsing &notinvc; 
+PASS XHTML Mobile parsing &NotLeftTriangleBar; 
+PASS XHTML Mobile parsing &NotLeftTriangle; 
+PASS XHTML Mobile parsing &NotLeftTriangleEqual; 
+PASS XHTML Mobile parsing &NotLess; 
+PASS XHTML Mobile parsing &NotLessEqual; 
+PASS XHTML Mobile parsing &NotLessGreater; 
+PASS XHTML Mobile parsing &NotLessLess; 
+PASS XHTML Mobile parsing &NotLessSlantEqual; 
+PASS XHTML Mobile parsing &NotLessTilde; 
+PASS XHTML Mobile parsing &NotNestedGreaterGreater; 
+PASS XHTML Mobile parsing &NotNestedLessLess; 
+PASS XHTML Mobile parsing &notni; 
+PASS XHTML Mobile parsing &notniva; 
+PASS XHTML Mobile parsing &notnivb; 
+PASS XHTML Mobile parsing &notnivc; 
+PASS XHTML Mobile parsing &NotPrecedes; 
+PASS XHTML Mobile parsing &NotPrecedesEqual; 
+PASS XHTML Mobile parsing &NotPrecedesSlantEqual; 
+PASS XHTML Mobile parsing &NotReverseElement; 
+PASS XHTML Mobile parsing &NotRightTriangleBar; 
+PASS XHTML Mobile parsing &NotRightTriangle; 
+PASS XHTML Mobile parsing &NotRightTriangleEqual; 
+PASS XHTML Mobile parsing &NotSquareSubset; 
+PASS XHTML Mobile parsing &NotSquareSubsetEqual; 
+PASS XHTML Mobile parsing &NotSquareSuperset; 
+PASS XHTML Mobile parsing &NotSquareSupersetEqual; 
+PASS XHTML Mobile parsing &NotSubset; 
+PASS XHTML Mobile parsing &NotSubsetEqual; 
+PASS XHTML Mobile parsing &NotSucceeds; 
+PASS XHTML Mobile parsing &NotSucceedsEqual; 
+PASS XHTML Mobile parsing &NotSucceedsSlantEqual; 
+PASS XHTML Mobile parsing &NotSucceedsTilde; 
+PASS XHTML Mobile parsing &NotSuperset; 
+PASS XHTML Mobile parsing &NotSupersetEqual; 
+PASS XHTML Mobile parsing &NotTilde; 
+PASS XHTML Mobile parsing &NotTildeEqual; 
+PASS XHTML Mobile parsing &NotTildeFullEqual; 
+PASS XHTML Mobile parsing &NotTildeTilde; 
+PASS XHTML Mobile parsing &NotVerticalBar; 
+PASS XHTML Mobile parsing &nparallel; 
+PASS XHTML Mobile parsing &npar; 
+PASS XHTML Mobile parsing &nparsl; 
+PASS XHTML Mobile parsing &npart; 
+PASS XHTML Mobile parsing &npolint; 
+PASS XHTML Mobile parsing &npr; 
+PASS XHTML Mobile parsing &nprcue; 
+PASS XHTML Mobile parsing &nprec; 
+PASS XHTML Mobile parsing &npreceq; 
+PASS XHTML Mobile parsing &npre; 
+PASS XHTML Mobile parsing &nrarrc; 
+PASS XHTML Mobile parsing &nrarr; 
+PASS XHTML Mobile parsing &nrArr; 
+PASS XHTML Mobile parsing &nrarrw; 
+PASS XHTML Mobile parsing &nrightarrow; 
+PASS XHTML Mobile parsing &nRightarrow; 
+PASS XHTML Mobile parsing &nrtri; 
+PASS XHTML Mobile parsing &nrtrie; 
+PASS XHTML Mobile parsing &nsc; 
+PASS XHTML Mobile parsing &nsccue; 
+PASS XHTML Mobile parsing &nsce; 
+PASS XHTML Mobile parsing &Nscr; 
+PASS XHTML Mobile parsing &nscr; 
+PASS XHTML Mobile parsing &nshortmid; 
+PASS XHTML Mobile parsing &nshortparallel; 
+PASS XHTML Mobile parsing &nsim; 
+PASS XHTML Mobile parsing &nsime; 
+PASS XHTML Mobile parsing &nsimeq; 
+PASS XHTML Mobile parsing &nsmid; 
+PASS XHTML Mobile parsing &nspar; 
+PASS XHTML Mobile parsing &nsqsube; 
+PASS XHTML Mobile parsing &nsqsupe; 
+PASS XHTML Mobile parsing &nsub; 
+PASS XHTML Mobile parsing &nsubE; 
+PASS XHTML Mobile parsing &nsube; 
+PASS XHTML Mobile parsing &nsubset; 
+PASS XHTML Mobile parsing &nsubseteq; 
+PASS XHTML Mobile parsing &nsubseteqq; 
+PASS XHTML Mobile parsing &nsucc; 
+PASS XHTML Mobile parsing &nsucceq; 
+PASS XHTML Mobile parsing &nsup; 
+PASS XHTML Mobile parsing &nsupE; 
+PASS XHTML Mobile parsing &nsupe; 
+PASS XHTML Mobile parsing &nsupset; 
+PASS XHTML Mobile parsing &nsupseteq; 
+PASS XHTML Mobile parsing &nsupseteqq; 
+PASS XHTML Mobile parsing &ntgl; 
+PASS XHTML Mobile parsing &Ntilde; 
+PASS XHTML Mobile parsing &ntilde; 
+PASS XHTML Mobile parsing &ntlg; 
+PASS XHTML Mobile parsing &ntriangleleft; 
+PASS XHTML Mobile parsing &ntrianglelefteq; 
+PASS XHTML Mobile parsing &ntriangleright; 
+PASS XHTML Mobile parsing &ntrianglerighteq; 
+PASS XHTML Mobile parsing &Nu; 
+PASS XHTML Mobile parsing &nu; 
+PASS XHTML Mobile parsing &num; 
+PASS XHTML Mobile parsing &numero; 
+PASS XHTML Mobile parsing &numsp; 
+PASS XHTML Mobile parsing &nvap; 
+PASS XHTML Mobile parsing &nvdash; 
+PASS XHTML Mobile parsing &nvDash; 
+PASS XHTML Mobile parsing &nVdash; 
+PASS XHTML Mobile parsing &nVDash; 
+PASS XHTML Mobile parsing &nvge; 
+PASS XHTML Mobile parsing &nvgt; 
+PASS XHTML Mobile parsing &nvHarr; 
+PASS XHTML Mobile parsing &nvinfin; 
+PASS XHTML Mobile parsing &nvlArr; 
+PASS XHTML Mobile parsing &nvle; 
+FAIL XHTML Mobile parsing &nvlt; assert_equals: XHTML Mobile parsing the entity reference caused a parse error; expected 3 but got 1
+PASS XHTML Mobile parsing &nvltrie; 
+PASS XHTML Mobile parsing &nvrArr; 
+PASS XHTML Mobile parsing &nvrtrie; 
+PASS XHTML Mobile parsing &nvsim; 
+PASS XHTML Mobile parsing &nwarhk; 
+PASS XHTML Mobile parsing &nwarr; 
+PASS XHTML Mobile parsing &nwArr; 
+PASS XHTML Mobile parsing &nwarrow; 
+PASS XHTML Mobile parsing &nwnear; 
+PASS XHTML Mobile parsing &Oacute; 
+PASS XHTML Mobile parsing &oacute; 
+PASS XHTML Mobile parsing &oast; 
+PASS XHTML Mobile parsing &Ocirc; 
+PASS XHTML Mobile parsing &ocirc; 
+PASS XHTML Mobile parsing &ocir; 
+PASS XHTML Mobile parsing &Ocy; 
+PASS XHTML Mobile parsing &ocy; 
+PASS XHTML Mobile parsing &odash; 
+PASS XHTML Mobile parsing &Odblac; 
+PASS XHTML Mobile parsing &odblac; 
+PASS XHTML Mobile parsing &odiv; 
+PASS XHTML Mobile parsing &odot; 
+PASS XHTML Mobile parsing &odsold; 
+PASS XHTML Mobile parsing &OElig; 
+PASS XHTML Mobile parsing &oelig; 
+PASS XHTML Mobile parsing &ofcir; 
+PASS XHTML Mobile parsing &Ofr; 
+PASS XHTML Mobile parsing &ofr; 
+PASS XHTML Mobile parsing &ogon; 
+PASS XHTML Mobile parsing &Ograve; 
+PASS XHTML Mobile parsing &ograve; 
+PASS XHTML Mobile parsing &ogt; 
+PASS XHTML Mobile parsing &ohbar; 
+PASS XHTML Mobile parsing &ohm; 
+PASS XHTML Mobile parsing &oint; 
+PASS XHTML Mobile parsing &olarr; 
+PASS XHTML Mobile parsing &olcir; 
+PASS XHTML Mobile parsing &olcross; 
+PASS XHTML Mobile parsing &oline; 
+PASS XHTML Mobile parsing &olt; 
+PASS XHTML Mobile parsing &Omacr; 
+PASS XHTML Mobile parsing &omacr; 
+PASS XHTML Mobile parsing &Omega; 
+PASS XHTML Mobile parsing &omega; 
+PASS XHTML Mobile parsing &Omicron; 
+PASS XHTML Mobile parsing &omicron; 
+PASS XHTML Mobile parsing &omid; 
+PASS XHTML Mobile parsing &ominus; 
+PASS XHTML Mobile parsing &Oopf; 
+PASS XHTML Mobile parsing &oopf; 
+PASS XHTML Mobile parsing &opar; 
+PASS XHTML Mobile parsing &OpenCurlyDoubleQuote; 
+PASS XHTML Mobile parsing &OpenCurlyQuote; 
+PASS XHTML Mobile parsing &operp; 
+PASS XHTML Mobile parsing &oplus; 
+PASS XHTML Mobile parsing &orarr; 
+PASS XHTML Mobile parsing &Or; 
+PASS XHTML Mobile parsing &or; 
+PASS XHTML Mobile parsing &ord; 
+PASS XHTML Mobile parsing &order; 
+PASS XHTML Mobile parsing &orderof; 
+PASS XHTML Mobile parsing &ordf; 
+PASS XHTML Mobile parsing &ordm; 
+PASS XHTML Mobile parsing &origof; 
+PASS XHTML Mobile parsing &oror; 
+PASS XHTML Mobile parsing &orslope; 
+PASS XHTML Mobile parsing &orv; 
+PASS XHTML Mobile parsing &oS; 
+PASS XHTML Mobile parsing &Oscr; 
+PASS XHTML Mobile parsing &oscr; 
+PASS XHTML Mobile parsing &Oslash; 
+PASS XHTML Mobile parsing &oslash; 
+PASS XHTML Mobile parsing &osol; 
+PASS XHTML Mobile parsing &Otilde; 
+PASS XHTML Mobile parsing &otilde; 
+PASS XHTML Mobile parsing &otimesas; 
+PASS XHTML Mobile parsing &Otimes; 
+PASS XHTML Mobile parsing &otimes; 
+PASS XHTML Mobile parsing &Ouml; 
+PASS XHTML Mobile parsing &ouml; 
+PASS XHTML Mobile parsing &ovbar; 
+PASS XHTML Mobile parsing &OverBar; 
+PASS XHTML Mobile parsing &OverBrace; 
+PASS XHTML Mobile parsing &OverBracket; 
+PASS XHTML Mobile parsing &OverParenthesis; 
+PASS XHTML Mobile parsing &para; 
+PASS XHTML Mobile parsing &parallel; 
+PASS XHTML Mobile parsing &par; 
+PASS XHTML Mobile parsing &parsim; 
+PASS XHTML Mobile parsing &parsl; 
+PASS XHTML Mobile parsing &part; 
+PASS XHTML Mobile parsing &PartialD; 
+PASS XHTML Mobile parsing &Pcy; 
+PASS XHTML Mobile parsing &pcy; 
+PASS XHTML Mobile parsing &percnt; 
+PASS XHTML Mobile parsing &period; 
+PASS XHTML Mobile parsing &permil; 
+PASS XHTML Mobile parsing &perp; 
+PASS XHTML Mobile parsing &pertenk; 
+PASS XHTML Mobile parsing &Pfr; 
+PASS XHTML Mobile parsing &pfr; 
+PASS XHTML Mobile parsing &Phi; 
+PASS XHTML Mobile parsing &phi; 
+PASS XHTML Mobile parsing &phiv; 
+PASS XHTML Mobile parsing &phmmat; 
+PASS XHTML Mobile parsing &phone; 
+PASS XHTML Mobile parsing &Pi; 
+PASS XHTML Mobile parsing &pi; 
+PASS XHTML Mobile parsing &pitchfork; 
+PASS XHTML Mobile parsing &piv; 
+PASS XHTML Mobile parsing &planck; 
+PASS XHTML Mobile parsing &planckh; 
+PASS XHTML Mobile parsing &plankv; 
+PASS XHTML Mobile parsing &plusacir; 
+PASS XHTML Mobile parsing &plusb; 
+PASS XHTML Mobile parsing &pluscir; 
+PASS XHTML Mobile parsing &plus; 
+PASS XHTML Mobile parsing &plusdo; 
+PASS XHTML Mobile parsing &plusdu; 
+PASS XHTML Mobile parsing &pluse; 
+PASS XHTML Mobile parsing &PlusMinus; 
+PASS XHTML Mobile parsing &plusmn; 
+PASS XHTML Mobile parsing &plussim; 
+PASS XHTML Mobile parsing &plustwo; 
+PASS XHTML Mobile parsing &pm; 
+PASS XHTML Mobile parsing &Poincareplane; 
+PASS XHTML Mobile parsing &pointint; 
+PASS XHTML Mobile parsing &popf; 
+PASS XHTML Mobile parsing &Popf; 
+PASS XHTML Mobile parsing &pound; 
+PASS XHTML Mobile parsing &prap; 
+PASS XHTML Mobile parsing &Pr; 
+PASS XHTML Mobile parsing &pr; 
+PASS XHTML Mobile parsing &prcue; 
+PASS XHTML Mobile parsing &precapprox; 
+PASS XHTML Mobile parsing &prec; 
+PASS XHTML Mobile parsing &preccurlyeq; 
+PASS XHTML Mobile parsing &Precedes; 
+PASS XHTML Mobile parsing &PrecedesEqual; 
+PASS XHTML Mobile parsing &PrecedesSlantEqual; 
+PASS XHTML Mobile parsing &PrecedesTilde; 
+PASS XHTML Mobile parsing &preceq; 
+PASS XHTML Mobile parsing &precnapprox; 
+PASS XHTML Mobile parsing &precneqq; 
+PASS XHTML Mobile parsing &precnsim; 
+PASS XHTML Mobile parsing &pre; 
+PASS XHTML Mobile parsing &prE; 
+PASS XHTML Mobile parsing &precsim; 
+PASS XHTML Mobile parsing &prime; 
+PASS XHTML Mobile parsing &Prime; 
+PASS XHTML Mobile parsing &primes; 
+PASS XHTML Mobile parsing &prnap; 
+PASS XHTML Mobile parsing &prnE; 
+PASS XHTML Mobile parsing &prnsim; 
+PASS XHTML Mobile parsing &prod; 
+PASS XHTML Mobile parsing &Product; 
+PASS XHTML Mobile parsing &profalar; 
+PASS XHTML Mobile parsing &profline; 
+PASS XHTML Mobile parsing &profsurf; 
+PASS XHTML Mobile parsing &prop; 
+PASS XHTML Mobile parsing &Proportional; 
+PASS XHTML Mobile parsing &Proportion; 
+PASS XHTML Mobile parsing &propto; 
+PASS XHTML Mobile parsing &prsim; 
+PASS XHTML Mobile parsing &prurel; 
+PASS XHTML Mobile parsing &Pscr; 
+PASS XHTML Mobile parsing &pscr; 
+PASS XHTML Mobile parsing &Psi; 
+PASS XHTML Mobile parsing &psi; 
+PASS XHTML Mobile parsing &puncsp; 
+PASS XHTML Mobile parsing &Qfr; 
+PASS XHTML Mobile parsing &qfr; 
+PASS XHTML Mobile parsing &qint; 
+PASS XHTML Mobile parsing &qopf; 
+PASS XHTML Mobile parsing &Qopf; 
+PASS XHTML Mobile parsing &qprime; 
+PASS XHTML Mobile parsing &Qscr; 
+PASS XHTML Mobile parsing &qscr; 
+PASS XHTML Mobile parsing &quaternions; 
+PASS XHTML Mobile parsing &quatint; 
+PASS XHTML Mobile parsing &quest; 
+PASS XHTML Mobile parsing &questeq; 
+PASS XHTML Mobile parsing &quot; 
+PASS XHTML Mobile parsing &QUOT; 
+PASS XHTML Mobile parsing &rAarr; 
+PASS XHTML Mobile parsing &race; 
+PASS XHTML Mobile parsing &Racute; 
+PASS XHTML Mobile parsing &racute; 
+PASS XHTML Mobile parsing &radic; 
+PASS XHTML Mobile parsing &raemptyv; 
+PASS XHTML Mobile parsing &rang; 
+PASS XHTML Mobile parsing &Rang; 
+PASS XHTML Mobile parsing &rangd; 
+PASS XHTML Mobile parsing &range; 
+PASS XHTML Mobile parsing &rangle; 
+PASS XHTML Mobile parsing &raquo; 
+PASS XHTML Mobile parsing &rarrap; 
+PASS XHTML Mobile parsing &rarrb; 
+PASS XHTML Mobile parsing &rarrbfs; 
+PASS XHTML Mobile parsing &rarrc; 
+PASS XHTML Mobile parsing &rarr; 
+PASS XHTML Mobile parsing &Rarr; 
+PASS XHTML Mobile parsing &rArr; 
+PASS XHTML Mobile parsing &rarrfs; 
+PASS XHTML Mobile parsing &rarrhk; 
+PASS XHTML Mobile parsing &rarrlp; 
+PASS XHTML Mobile parsing &rarrpl; 
+PASS XHTML Mobile parsing &rarrsim; 
+PASS XHTML Mobile parsing &Rarrtl; 
+PASS XHTML Mobile parsing &rarrtl; 
+PASS XHTML Mobile parsing &rarrw; 
+PASS XHTML Mobile parsing &ratail; 
+PASS XHTML Mobile parsing &rAtail; 
+PASS XHTML Mobile parsing &ratio; 
+PASS XHTML Mobile parsing &rationals; 
+PASS XHTML Mobile parsing &rbarr; 
+PASS XHTML Mobile parsing &rBarr; 
+PASS XHTML Mobile parsing &RBarr; 
+PASS XHTML Mobile parsing &rbbrk; 
+PASS XHTML Mobile parsing &rbrace; 
+PASS XHTML Mobile parsing &rbrack; 
+PASS XHTML Mobile parsing &rbrke; 
+PASS XHTML Mobile parsing &rbrksld; 
+PASS XHTML Mobile parsing &rbrkslu; 
+PASS XHTML Mobile parsing &Rcaron; 
+PASS XHTML Mobile parsing &rcaron; 
+PASS XHTML Mobile parsing &Rcedil; 
+PASS XHTML Mobile parsing &rcedil; 
+PASS XHTML Mobile parsing &rceil; 
+PASS XHTML Mobile parsing &rcub; 
+PASS XHTML Mobile parsing &Rcy; 
+PASS XHTML Mobile parsing &rcy; 
+PASS XHTML Mobile parsing &rdca; 
+PASS XHTML Mobile parsing &rdldhar; 
+PASS XHTML Mobile parsing &rdquo; 
+PASS XHTML Mobile parsing &rdquor; 
+PASS XHTML Mobile parsing &rdsh; 
+PASS XHTML Mobile parsing &real; 
+PASS XHTML Mobile parsing &realine; 
+PASS XHTML Mobile parsing &realpart; 
+PASS XHTML Mobile parsing &reals; 
+PASS XHTML Mobile parsing &Re; 
+PASS XHTML Mobile parsing &rect; 
+PASS XHTML Mobile parsing &reg; 
+PASS XHTML Mobile parsing &REG; 
+PASS XHTML Mobile parsing &ReverseElement; 
+PASS XHTML Mobile parsing &ReverseEquilibrium; 
+PASS XHTML Mobile parsing &ReverseUpEquilibrium; 
+PASS XHTML Mobile parsing &rfisht; 
+PASS XHTML Mobile parsing &rfloor; 
+PASS XHTML Mobile parsing &rfr; 
+PASS XHTML Mobile parsing &Rfr; 
+PASS XHTML Mobile parsing &rHar; 
+PASS XHTML Mobile parsing &rhard; 
+PASS XHTML Mobile parsing &rharu; 
+PASS XHTML Mobile parsing &rharul; 
+PASS XHTML Mobile parsing &Rho; 
+PASS XHTML Mobile parsing &rho; 
+PASS XHTML Mobile parsing &rhov; 
+PASS XHTML Mobile parsing &RightAngleBracket; 
+PASS XHTML Mobile parsing &RightArrowBar; 
+PASS XHTML Mobile parsing &rightarrow; 
+PASS XHTML Mobile parsing &RightArrow; 
+PASS XHTML Mobile parsing &Rightarrow; 
+PASS XHTML Mobile parsing &RightArrowLeftArrow; 
+PASS XHTML Mobile parsing &rightarrowtail; 
+PASS XHTML Mobile parsing &RightCeiling; 
+PASS XHTML Mobile parsing &RightDoubleBracket; 
+PASS XHTML Mobile parsing &RightDownTeeVector; 
+PASS XHTML Mobile parsing &RightDownVectorBar; 
+PASS XHTML Mobile parsing &RightDownVector; 
+PASS XHTML Mobile parsing &RightFloor; 
+PASS XHTML Mobile parsing &rightharpoondown; 
+PASS XHTML Mobile parsing &rightharpoonup; 
+PASS XHTML Mobile parsing &rightleftarrows; 
+PASS XHTML Mobile parsing &rightleftharpoons; 
+PASS XHTML Mobile parsing &rightrightarrows; 
+PASS XHTML Mobile parsing &rightsquigarrow; 
+PASS XHTML Mobile parsing &RightTeeArrow; 
+PASS XHTML Mobile parsing &RightTee; 
+PASS XHTML Mobile parsing &RightTeeVector; 
+PASS XHTML Mobile parsing &rightthreetimes; 
+PASS XHTML Mobile parsing &RightTriangleBar; 
+PASS XHTML Mobile parsing &RightTriangle; 
+PASS XHTML Mobile parsing &RightTriangleEqual; 
+PASS XHTML Mobile parsing &RightUpDownVector; 
+PASS XHTML Mobile parsing &RightUpTeeVector; 
+PASS XHTML Mobile parsing &RightUpVectorBar; 
+PASS XHTML Mobile parsing &RightUpVector; 
+PASS XHTML Mobile parsing &RightVectorBar; 
+PASS XHTML Mobile parsing &RightVector; 
+PASS XHTML Mobile parsing &ring; 
+PASS XHTML Mobile parsing &risingdotseq; 
+PASS XHTML Mobile parsing &rlarr; 
+PASS XHTML Mobile parsing &rlhar; 
+PASS XHTML Mobile parsing &rlm; 
+PASS XHTML Mobile parsing &rmoustache; 
+PASS XHTML Mobile parsing &rmoust; 
+PASS XHTML Mobile parsing &rnmid; 
+PASS XHTML Mobile parsing &roang; 
+PASS XHTML Mobile parsing &roarr; 
+PASS XHTML Mobile parsing &robrk; 
+PASS XHTML Mobile parsing &ropar; 
+PASS XHTML Mobile parsing &ropf; 
+PASS XHTML Mobile parsing &Ropf; 
+PASS XHTML Mobile parsing &roplus; 
+PASS XHTML Mobile parsing &rotimes; 
+PASS XHTML Mobile parsing &RoundImplies; 
+PASS XHTML Mobile parsing &rpar; 
+PASS XHTML Mobile parsing &rpargt; 
+PASS XHTML Mobile parsing &rppolint; 
+PASS XHTML Mobile parsing &rrarr; 
+PASS XHTML Mobile parsing &Rrightarrow; 
+PASS XHTML Mobile parsing &rsaquo; 
+PASS XHTML Mobile parsing &rscr; 
+PASS XHTML Mobile parsing &Rscr; 
+PASS XHTML Mobile parsing &rsh; 
+PASS XHTML Mobile parsing &Rsh; 
+PASS XHTML Mobile parsing &rsqb; 
+PASS XHTML Mobile parsing &rsquo; 
+PASS XHTML Mobile parsing &rsquor; 
+PASS XHTML Mobile parsing &rthree; 
+PASS XHTML Mobile parsing &rtimes; 
+PASS XHTML Mobile parsing &rtri; 
+PASS XHTML Mobile parsing &rtrie; 
+PASS XHTML Mobile parsing &rtrif; 
+PASS XHTML Mobile parsing &rtriltri; 
+PASS XHTML Mobile parsing &RuleDelayed; 
+PASS XHTML Mobile parsing &ruluhar; 
+PASS XHTML Mobile parsing &rx; 
+PASS XHTML Mobile parsing &Sacute; 
+PASS XHTML Mobile parsing &sacute; 
+PASS XHTML Mobile parsing &sbquo; 
+PASS XHTML Mobile parsing &scap; 
+PASS XHTML Mobile parsing &Scaron; 
+PASS XHTML Mobile parsing &scaron; 
+PASS XHTML Mobile parsing &Sc; 
+PASS XHTML Mobile parsing &sc; 
+PASS XHTML Mobile parsing &sccue; 
+PASS XHTML Mobile parsing &sce; 
+PASS XHTML Mobile parsing &scE; 
+PASS XHTML Mobile parsing &Scedil; 
+PASS XHTML Mobile parsing &scedil; 
+PASS XHTML Mobile parsing &Scirc; 
+PASS XHTML Mobile parsing &scirc; 
+PASS XHTML Mobile parsing &scnap; 
+PASS XHTML Mobile parsing &scnE; 
+PASS XHTML Mobile parsing &scnsim; 
+PASS XHTML Mobile parsing &scpolint; 
+PASS XHTML Mobile parsing &scsim; 
+PASS XHTML Mobile parsing &Scy; 
+PASS XHTML Mobile parsing &scy; 
+PASS XHTML Mobile parsing &sdotb; 
+PASS XHTML Mobile parsing &sdot; 
+PASS XHTML Mobile parsing &sdote; 
+PASS XHTML Mobile parsing &searhk; 
+PASS XHTML Mobile parsing &searr; 
+PASS XHTML Mobile parsing &seArr; 
+PASS XHTML Mobile parsing &searrow; 
+PASS XHTML Mobile parsing &sect; 
+PASS XHTML Mobile parsing &semi; 
+PASS XHTML Mobile parsing &seswar; 
+PASS XHTML Mobile parsing &setminus; 
+PASS XHTML Mobile parsing &setmn; 
+PASS XHTML Mobile parsing &sext; 
+PASS XHTML Mobile parsing &Sfr; 
+PASS XHTML Mobile parsing &sfr; 
+PASS XHTML Mobile parsing &sfrown; 
+PASS XHTML Mobile parsing &sharp; 
+PASS XHTML Mobile parsing &SHCHcy; 
+PASS XHTML Mobile parsing &shchcy; 
+PASS XHTML Mobile parsing &SHcy; 
+PASS XHTML Mobile parsing &shcy; 
+PASS XHTML Mobile parsing &ShortDownArrow; 
+PASS XHTML Mobile parsing &ShortLeftArrow; 
+PASS XHTML Mobile parsing &shortmid; 
+PASS XHTML Mobile parsing &shortparallel; 
+PASS XHTML Mobile parsing &ShortRightArrow; 
+PASS XHTML Mobile parsing &ShortUpArrow; 
+PASS XHTML Mobile parsing &shy; 
+PASS XHTML Mobile parsing &Sigma; 
+PASS XHTML Mobile parsing &sigma; 
+PASS XHTML Mobile parsing &sigmaf; 
+PASS XHTML Mobile parsing &sigmav; 
+PASS XHTML Mobile parsing &sim; 
+PASS XHTML Mobile parsing &simdot; 
+PASS XHTML Mobile parsing &sime; 
+PASS XHTML Mobile parsing &simeq; 
+PASS XHTML Mobile parsing &simg; 
+PASS XHTML Mobile parsing &simgE; 
+PASS XHTML Mobile parsing &siml; 
+PASS XHTML Mobile parsing &simlE; 
+PASS XHTML Mobile parsing &simne; 
+PASS XHTML Mobile parsing &simplus; 
+PASS XHTML Mobile parsing &simrarr; 
+PASS XHTML Mobile parsing &slarr; 
+PASS XHTML Mobile parsing &SmallCircle; 
+PASS XHTML Mobile parsing &smallsetminus; 
+PASS XHTML Mobile parsing &smashp; 
+PASS XHTML Mobile parsing &smeparsl; 
+PASS XHTML Mobile parsing &smid; 
+PASS XHTML Mobile parsing &smile; 
+PASS XHTML Mobile parsing &smt; 
+PASS XHTML Mobile parsing &smte; 
+PASS XHTML Mobile parsing &smtes; 
+PASS XHTML Mobile parsing &SOFTcy; 
+PASS XHTML Mobile parsing &softcy; 
+PASS XHTML Mobile parsing &solbar; 
+PASS XHTML Mobile parsing &solb; 
+PASS XHTML Mobile parsing &sol; 
+PASS XHTML Mobile parsing &Sopf; 
+PASS XHTML Mobile parsing &sopf; 
+PASS XHTML Mobile parsing &spades; 
+PASS XHTML Mobile parsing &spadesuit; 
+PASS XHTML Mobile parsing &spar; 
+PASS XHTML Mobile parsing &sqcap; 
+PASS XHTML Mobile parsing &sqcaps; 
+PASS XHTML Mobile parsing &sqcup; 
+PASS XHTML Mobile parsing &sqcups; 
+PASS XHTML Mobile parsing &Sqrt; 
+PASS XHTML Mobile parsing &sqsub; 
+PASS XHTML Mobile parsing &sqsube; 
+PASS XHTML Mobile parsing &sqsubset; 
+PASS XHTML Mobile parsing &sqsubseteq; 
+PASS XHTML Mobile parsing &sqsup; 
+PASS XHTML Mobile parsing &sqsupe; 
+PASS XHTML Mobile parsing &sqsupset; 
+PASS XHTML Mobile parsing &sqsupseteq; 
+PASS XHTML Mobile parsing &square; 
+PASS XHTML Mobile parsing &Square; 
+PASS XHTML Mobile parsing &SquareIntersection; 
+PASS XHTML Mobile parsing &SquareSubset; 
+PASS XHTML Mobile parsing &SquareSubsetEqual; 
+PASS XHTML Mobile parsing &SquareSuperset; 
+PASS XHTML Mobile parsing &SquareSupersetEqual; 
+PASS XHTML Mobile parsing &SquareUnion; 
+PASS XHTML Mobile parsing &squarf; 
+PASS XHTML Mobile parsing &squ; 
+PASS XHTML Mobile parsing &squf; 
+PASS XHTML Mobile parsing &srarr; 
+PASS XHTML Mobile parsing &Sscr; 
+PASS XHTML Mobile parsing &sscr; 
+PASS XHTML Mobile parsing &ssetmn; 
+PASS XHTML Mobile parsing &ssmile; 
+PASS XHTML Mobile parsing &sstarf; 
+PASS XHTML Mobile parsing &Star; 
+PASS XHTML Mobile parsing &star; 
+PASS XHTML Mobile parsing &starf; 
+PASS XHTML Mobile parsing &straightepsilon; 
+PASS XHTML Mobile parsing &straightphi; 
+PASS XHTML Mobile parsing &strns; 
+PASS XHTML Mobile parsing &sub; 
+PASS XHTML Mobile parsing &Sub; 
+PASS XHTML Mobile parsing &subdot; 
+PASS XHTML Mobile parsing &subE; 
+PASS XHTML Mobile parsing &sube; 
+PASS XHTML Mobile parsing &subedot; 
+PASS XHTML Mobile parsing &submult; 
+PASS XHTML Mobile parsing &subnE; 
+PASS XHTML Mobile parsing &subne; 
+PASS XHTML Mobile parsing &subplus; 
+PASS XHTML Mobile parsing &subrarr; 
+PASS XHTML Mobile parsing &subset; 
+PASS XHTML Mobile parsing &Subset; 
+PASS XHTML Mobile parsing &subseteq; 
+PASS XHTML Mobile parsing &subseteqq; 
+PASS XHTML Mobile parsing &SubsetEqual; 
+PASS XHTML Mobile parsing &subsetneq; 
+PASS XHTML Mobile parsing &subsetneqq; 
+PASS XHTML Mobile parsing &subsim; 
+PASS XHTML Mobile parsing &subsub; 
+PASS XHTML Mobile parsing &subsup; 
+PASS XHTML Mobile parsing &succapprox; 
+PASS XHTML Mobile parsing &succ; 
+PASS XHTML Mobile parsing &succcurlyeq; 
+PASS XHTML Mobile parsing &Succeeds; 
+PASS XHTML Mobile parsing &SucceedsEqual; 
+PASS XHTML Mobile parsing &SucceedsSlantEqual; 
+PASS XHTML Mobile parsing &SucceedsTilde; 
+PASS XHTML Mobile parsing &succeq; 
+PASS XHTML Mobile parsing &succnapprox; 
+PASS XHTML Mobile parsing &succneqq; 
+PASS XHTML Mobile parsing &succnsim; 
+PASS XHTML Mobile parsing &succsim; 
+PASS XHTML Mobile parsing &SuchThat; 
+PASS XHTML Mobile parsing &sum; 
+PASS XHTML Mobile parsing &Sum; 
+PASS XHTML Mobile parsing &sung; 
+PASS XHTML Mobile parsing &sup1; 
+PASS XHTML Mobile parsing &sup2; 
+PASS XHTML Mobile parsing &sup3; 
+PASS XHTML Mobile parsing &sup; 
+PASS XHTML Mobile parsing &Sup; 
+PASS XHTML Mobile parsing &supdot; 
+PASS XHTML Mobile parsing &supdsub; 
+PASS XHTML Mobile parsing &supE; 
+PASS XHTML Mobile parsing &supe; 
+PASS XHTML Mobile parsing &supedot; 
+PASS XHTML Mobile parsing &Superset; 
+PASS XHTML Mobile parsing &SupersetEqual; 
+PASS XHTML Mobile parsing &suphsol; 
+PASS XHTML Mobile parsing &suphsub; 
+PASS XHTML Mobile parsing &suplarr; 
+PASS XHTML Mobile parsing &supmult; 
+PASS XHTML Mobile parsing &supnE; 
+PASS XHTML Mobile parsing &supne; 
+PASS XHTML Mobile parsing &supplus; 
+PASS XHTML Mobile parsing &supset; 
+PASS XHTML Mobile parsing &Supset; 
+PASS XHTML Mobile parsing &supseteq; 
+PASS XHTML Mobile parsing &supseteqq; 
+PASS XHTML Mobile parsing &supsetneq; 
+PASS XHTML Mobile parsing &supsetneqq; 
+PASS XHTML Mobile parsing &supsim; 
+PASS XHTML Mobile parsing &supsub; 
+PASS XHTML Mobile parsing &supsup; 
+PASS XHTML Mobile parsing &swarhk; 
+PASS XHTML Mobile parsing &swarr; 
+PASS XHTML Mobile parsing &swArr; 
+PASS XHTML Mobile parsing &swarrow; 
+PASS XHTML Mobile parsing &swnwar; 
+PASS XHTML Mobile parsing &szlig; 
+PASS XHTML Mobile parsing &Tab; 
+PASS XHTML Mobile parsing &target; 
+PASS XHTML Mobile parsing &Tau; 
+PASS XHTML Mobile parsing &tau; 
+PASS XHTML Mobile parsing &tbrk; 
+PASS XHTML Mobile parsing &Tcaron; 
+PASS XHTML Mobile parsing &tcaron; 
+PASS XHTML Mobile parsing &Tcedil; 
+PASS XHTML Mobile parsing &tcedil; 
+PASS XHTML Mobile parsing &Tcy; 
+PASS XHTML Mobile parsing &tcy; 
+PASS XHTML Mobile parsing &tdot; 
+PASS XHTML Mobile parsing &telrec; 
+PASS XHTML Mobile parsing &Tfr; 
+PASS XHTML Mobile parsing &tfr; 
+PASS XHTML Mobile parsing &there4; 
+PASS XHTML Mobile parsing &therefore; 
+PASS XHTML Mobile parsing &Therefore; 
+PASS XHTML Mobile parsing &Theta; 
+PASS XHTML Mobile parsing &theta; 
+PASS XHTML Mobile parsing &thetasym; 
+PASS XHTML Mobile parsing &thetav; 
+PASS XHTML Mobile parsing &thickapprox; 
+PASS XHTML Mobile parsing &thicksim; 
+PASS XHTML Mobile parsing &ThickSpace; 
+PASS XHTML Mobile parsing &ThinSpace; 
+PASS XHTML Mobile parsing &thinsp; 
+PASS XHTML Mobile parsing &thkap; 
+PASS XHTML Mobile parsing &thksim; 
+PASS XHTML Mobile parsing &THORN; 
+PASS XHTML Mobile parsing &thorn; 
+PASS XHTML Mobile parsing &tilde; 
+PASS XHTML Mobile parsing &Tilde; 
+PASS XHTML Mobile parsing &TildeEqual; 
+PASS XHTML Mobile parsing &TildeFullEqual; 
+PASS XHTML Mobile parsing &TildeTilde; 
+PASS XHTML Mobile parsing &timesbar; 
+PASS XHTML Mobile parsing &timesb; 
+PASS XHTML Mobile parsing &times; 
+PASS XHTML Mobile parsing &timesd; 
+PASS XHTML Mobile parsing &tint; 
+PASS XHTML Mobile parsing &toea; 
+PASS XHTML Mobile parsing &topbot; 
+PASS XHTML Mobile parsing &topcir; 
+PASS XHTML Mobile parsing &top; 
+PASS XHTML Mobile parsing &Topf; 
+PASS XHTML Mobile parsing &topf; 
+PASS XHTML Mobile parsing &topfork; 
+PASS XHTML Mobile parsing &tosa; 
+PASS XHTML Mobile parsing &tprime; 
+PASS XHTML Mobile parsing &trade; 
+PASS XHTML Mobile parsing &TRADE; 
+PASS XHTML Mobile parsing &triangle; 
+PASS XHTML Mobile parsing &triangledown; 
+PASS XHTML Mobile parsing &triangleleft; 
+PASS XHTML Mobile parsing &trianglelefteq; 
+PASS XHTML Mobile parsing &triangleq; 
+PASS XHTML Mobile parsing &triangleright; 
+PASS XHTML Mobile parsing &trianglerighteq; 
+PASS XHTML Mobile parsing &tridot; 
+PASS XHTML Mobile parsing &trie; 
+PASS XHTML Mobile parsing &triminus; 
+PASS XHTML Mobile parsing &TripleDot; 
+PASS XHTML Mobile parsing &triplus; 
+PASS XHTML Mobile parsing &trisb; 
+PASS XHTML Mobile parsing &tritime; 
+PASS XHTML Mobile parsing &trpezium; 
+PASS XHTML Mobile parsing &Tscr; 
+PASS XHTML Mobile parsing &tscr; 
+PASS XHTML Mobile parsing &TScy; 
+PASS XHTML Mobile parsing &tscy; 
+PASS XHTML Mobile parsing &TSHcy; 
+PASS XHTML Mobile parsing &tshcy; 
+PASS XHTML Mobile parsing &Tstrok; 
+PASS XHTML Mobile parsing &tstrok; 
+PASS XHTML Mobile parsing &twixt; 
+PASS XHTML Mobile parsing &twoheadleftarrow; 
+PASS XHTML Mobile parsing &twoheadrightarrow; 
+PASS XHTML Mobile parsing &Uacute; 
+PASS XHTML Mobile parsing &uacute; 
+PASS XHTML Mobile parsing &uarr; 
+PASS XHTML Mobile parsing &Uarr; 
+PASS XHTML Mobile parsing &uArr; 
+PASS XHTML Mobile parsing &Uarrocir; 
+PASS XHTML Mobile parsing &Ubrcy; 
+PASS XHTML Mobile parsing &ubrcy; 
+PASS XHTML Mobile parsing &Ubreve; 
+PASS XHTML Mobile parsing &ubreve; 
+PASS XHTML Mobile parsing &Ucirc; 
+PASS XHTML Mobile parsing &ucirc; 
+PASS XHTML Mobile parsing &Ucy; 
+PASS XHTML Mobile parsing &ucy; 
+PASS XHTML Mobile parsing &udarr; 
+PASS XHTML Mobile parsing &Udblac; 
+PASS XHTML Mobile parsing &udblac; 
+PASS XHTML Mobile parsing &udhar; 
+PASS XHTML Mobile parsing &ufisht; 
+PASS XHTML Mobile parsing &Ufr; 
+PASS XHTML Mobile parsing &ufr; 
+PASS XHTML Mobile parsing &Ugrave; 
+PASS XHTML Mobile parsing &ugrave; 
+PASS XHTML Mobile parsing &uHar; 
+PASS XHTML Mobile parsing &uharl; 
+PASS XHTML Mobile parsing &uharr; 
+PASS XHTML Mobile parsing &uhblk; 
+PASS XHTML Mobile parsing &ulcorn; 
+PASS XHTML Mobile parsing &ulcorner; 
+PASS XHTML Mobile parsing &ulcrop; 
+PASS XHTML Mobile parsing &ultri; 
+PASS XHTML Mobile parsing &Umacr; 
+PASS XHTML Mobile parsing &umacr; 
+PASS XHTML Mobile parsing &uml; 
+PASS XHTML Mobile parsing &UnderBar; 
+PASS XHTML Mobile parsing &UnderBrace; 
+PASS XHTML Mobile parsing &UnderBracket; 
+PASS XHTML Mobile parsing &UnderParenthesis; 
+PASS XHTML Mobile parsing &Union; 
+PASS XHTML Mobile parsing &UnionPlus; 
+PASS XHTML Mobile parsing &Uogon; 
+PASS XHTML Mobile parsing &uogon; 
+PASS XHTML Mobile parsing &Uopf; 
+PASS XHTML Mobile parsing &uopf; 
+PASS XHTML Mobile parsing &UpArrowBar; 
+PASS XHTML Mobile parsing &uparrow; 
+PASS XHTML Mobile parsing &UpArrow; 
+PASS XHTML Mobile parsing &Uparrow; 
+PASS XHTML Mobile parsing &UpArrowDownArrow; 
+PASS XHTML Mobile parsing &updownarrow; 
+PASS XHTML Mobile parsing &UpDownArrow; 
+PASS XHTML Mobile parsing &Updownarrow; 
+PASS XHTML Mobile parsing &UpEquilibrium; 
+PASS XHTML Mobile parsing &upharpoonleft; 
+PASS XHTML Mobile parsing &upharpoonright; 
+PASS XHTML Mobile parsing &uplus; 
+PASS XHTML Mobile parsing &UpperLeftArrow; 
+PASS XHTML Mobile parsing &UpperRightArrow; 
+PASS XHTML Mobile parsing &upsi; 
+PASS XHTML Mobile parsing &Upsi; 
+PASS XHTML Mobile parsing &upsih; 
+PASS XHTML Mobile parsing &Upsilon; 
+PASS XHTML Mobile parsing &upsilon; 
+PASS XHTML Mobile parsing &UpTeeArrow; 
+PASS XHTML Mobile parsing &UpTee; 
+PASS XHTML Mobile parsing &upuparrows; 
+PASS XHTML Mobile parsing &urcorn; 
+PASS XHTML Mobile parsing &urcorner; 
+PASS XHTML Mobile parsing &urcrop; 
+PASS XHTML Mobile parsing &Uring; 
+PASS XHTML Mobile parsing &uring; 
+PASS XHTML Mobile parsing &urtri; 
+PASS XHTML Mobile parsing &Uscr; 
+PASS XHTML Mobile parsing &uscr; 
+PASS XHTML Mobile parsing &utdot; 
+PASS XHTML Mobile parsing &Utilde; 
+PASS XHTML Mobile parsing &utilde; 
+PASS XHTML Mobile parsing &utri; 
+PASS XHTML Mobile parsing &utrif; 
+PASS XHTML Mobile parsing &uuarr; 
+PASS XHTML Mobile parsing &Uuml; 
+PASS XHTML Mobile parsing &uuml; 
+PASS XHTML Mobile parsing &uwangle; 
+PASS XHTML Mobile parsing &vangrt; 
+PASS XHTML Mobile parsing &varepsilon; 
+PASS XHTML Mobile parsing &varkappa; 
+PASS XHTML Mobile parsing &varnothing; 
+PASS XHTML Mobile parsing &varphi; 
+PASS XHTML Mobile parsing &varpi; 
+PASS XHTML Mobile parsing &varpropto; 
+PASS XHTML Mobile parsing &varr; 
+PASS XHTML Mobile parsing &vArr; 
+PASS XHTML Mobile parsing &varrho; 
+PASS XHTML Mobile parsing &varsigma; 
+PASS XHTML Mobile parsing &varsubsetneq; 
+PASS XHTML Mobile parsing &varsubsetneqq; 
+PASS XHTML Mobile parsing &varsupsetneq; 
+PASS XHTML Mobile parsing &varsupsetneqq; 
+PASS XHTML Mobile parsing &vartheta; 
+PASS XHTML Mobile parsing &vartriangleleft; 
+PASS XHTML Mobile parsing &vartriangleright; 
+PASS XHTML Mobile parsing &vBar; 
+PASS XHTML Mobile parsing &Vbar; 
+PASS XHTML Mobile parsing &vBarv; 
+PASS XHTML Mobile parsing &Vcy; 
+PASS XHTML Mobile parsing &vcy; 
+PASS XHTML Mobile parsing &vdash; 
+PASS XHTML Mobile parsing &vDash; 
+PASS XHTML Mobile parsing &Vdash; 
+PASS XHTML Mobile parsing &VDash; 
+PASS XHTML Mobile parsing &Vdashl; 
+PASS XHTML Mobile parsing &veebar; 
+PASS XHTML Mobile parsing &vee; 
+PASS XHTML Mobile parsing &Vee; 
+PASS XHTML Mobile parsing &veeeq; 
+PASS XHTML Mobile parsing &vellip; 
+PASS XHTML Mobile parsing &verbar; 
+PASS XHTML Mobile parsing &Verbar; 
+PASS XHTML Mobile parsing &vert; 
+PASS XHTML Mobile parsing &Vert; 
+PASS XHTML Mobile parsing &VerticalBar; 
+PASS XHTML Mobile parsing &VerticalLine; 
+PASS XHTML Mobile parsing &VerticalSeparator; 
+PASS XHTML Mobile parsing &VerticalTilde; 
+PASS XHTML Mobile parsing &VeryThinSpace; 
+PASS XHTML Mobile parsing &Vfr; 
+PASS XHTML Mobile parsing &vfr; 
+PASS XHTML Mobile parsing &vltri; 
+PASS XHTML Mobile parsing &vnsub; 
+PASS XHTML Mobile parsing &vnsup; 
+PASS XHTML Mobile parsing &Vopf; 
+PASS XHTML Mobile parsing &vopf; 
+PASS XHTML Mobile parsing &vprop; 
+PASS XHTML Mobile parsing &vrtri; 
+PASS XHTML Mobile parsing &Vscr; 
+PASS XHTML Mobile parsing &vscr; 
+PASS XHTML Mobile parsing &vsubnE; 
+PASS XHTML Mobile parsing &vsubne; 
+PASS XHTML Mobile parsing &vsupnE; 
+PASS XHTML Mobile parsing &vsupne; 
+PASS XHTML Mobile parsing &Vvdash; 
+PASS XHTML Mobile parsing &vzigzag; 
+PASS XHTML Mobile parsing &Wcirc; 
+PASS XHTML Mobile parsing &wcirc; 
+PASS XHTML Mobile parsing &wedbar; 
+PASS XHTML Mobile parsing &wedge; 
+PASS XHTML Mobile parsing &Wedge; 
+PASS XHTML Mobile parsing &wedgeq; 
+PASS XHTML Mobile parsing &weierp; 
+PASS XHTML Mobile parsing &Wfr; 
+PASS XHTML Mobile parsing &wfr; 
+PASS XHTML Mobile parsing &Wopf; 
+PASS XHTML Mobile parsing &wopf; 
+PASS XHTML Mobile parsing &wp; 
+PASS XHTML Mobile parsing &wr; 
+PASS XHTML Mobile parsing &wreath; 
+PASS XHTML Mobile parsing &Wscr; 
+PASS XHTML Mobile parsing &wscr; 
+PASS XHTML Mobile parsing &xcap; 
+PASS XHTML Mobile parsing &xcirc; 
+PASS XHTML Mobile parsing &xcup; 
+PASS XHTML Mobile parsing &xdtri; 
+PASS XHTML Mobile parsing &Xfr; 
+PASS XHTML Mobile parsing &xfr; 
+PASS XHTML Mobile parsing &xharr; 
+PASS XHTML Mobile parsing &xhArr; 
+PASS XHTML Mobile parsing &Xi; 
+PASS XHTML Mobile parsing &xi; 
+PASS XHTML Mobile parsing &xlarr; 
+PASS XHTML Mobile parsing &xlArr; 
+PASS XHTML Mobile parsing &xmap; 
+PASS XHTML Mobile parsing &xnis; 
+PASS XHTML Mobile parsing &xodot; 
+PASS XHTML Mobile parsing &Xopf; 
+PASS XHTML Mobile parsing &xopf; 
+PASS XHTML Mobile parsing &xoplus; 
+PASS XHTML Mobile parsing &xotime; 
+PASS XHTML Mobile parsing &xrarr; 
+PASS XHTML Mobile parsing &xrArr; 
+PASS XHTML Mobile parsing &Xscr; 
+PASS XHTML Mobile parsing &xscr; 
+PASS XHTML Mobile parsing &xsqcup; 
+PASS XHTML Mobile parsing &xuplus; 
+PASS XHTML Mobile parsing &xutri; 
+PASS XHTML Mobile parsing &xvee; 
+PASS XHTML Mobile parsing &xwedge; 
+PASS XHTML Mobile parsing &Yacute; 
+PASS XHTML Mobile parsing &yacute; 
+PASS XHTML Mobile parsing &YAcy; 
+PASS XHTML Mobile parsing &yacy; 
+PASS XHTML Mobile parsing &Ycirc; 
+PASS XHTML Mobile parsing &ycirc; 
+PASS XHTML Mobile parsing &Ycy; 
+PASS XHTML Mobile parsing &ycy; 
+PASS XHTML Mobile parsing &yen; 
+PASS XHTML Mobile parsing &Yfr; 
+PASS XHTML Mobile parsing &yfr; 
+PASS XHTML Mobile parsing &YIcy; 
+PASS XHTML Mobile parsing &yicy; 
+PASS XHTML Mobile parsing &Yopf; 
+PASS XHTML Mobile parsing &yopf; 
+PASS XHTML Mobile parsing &Yscr; 
+PASS XHTML Mobile parsing &yscr; 
+PASS XHTML Mobile parsing &YUcy; 
+PASS XHTML Mobile parsing &yucy; 
+PASS XHTML Mobile parsing &yuml; 
+PASS XHTML Mobile parsing &Yuml; 
+PASS XHTML Mobile parsing &Zacute; 
+PASS XHTML Mobile parsing &zacute; 
+PASS XHTML Mobile parsing &Zcaron; 
+PASS XHTML Mobile parsing &zcaron; 
+PASS XHTML Mobile parsing &Zcy; 
+PASS XHTML Mobile parsing &zcy; 
+PASS XHTML Mobile parsing &Zdot; 
+PASS XHTML Mobile parsing &zdot; 
+PASS XHTML Mobile parsing &zeetrf; 
+PASS XHTML Mobile parsing &ZeroWidthSpace; 
+PASS XHTML Mobile parsing &Zeta; 
+PASS XHTML Mobile parsing &zeta; 
+PASS XHTML Mobile parsing &zfr; 
+PASS XHTML Mobile parsing &Zfr; 
+PASS XHTML Mobile parsing &ZHcy; 
+PASS XHTML Mobile parsing &zhcy; 
+PASS XHTML Mobile parsing &zigrarr; 
+PASS XHTML Mobile parsing &zopf; 
+PASS XHTML Mobile parsing &Zopf; 
+PASS XHTML Mobile parsing &Zscr; 
+PASS XHTML Mobile parsing &zscr; 
+PASS XHTML Mobile parsing &zwj; 
+PASS XHTML Mobile parsing &zwnj; 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-9.htm b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-9.htm
new file mode 100644
index 0000000..ec4d200
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-9.htm
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta name=timeout content=long>
+<title>HTML entities for various XHTML Doctype</title>
+<link rel=help href="http://w3c.github.io/html/xhtml.html#parsing-xhtml-documents">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe id="test" src="xhtml-mathml-dtd-entity-support.htm"></iframe>
+
+<script>
+onload = () => document.getElementById("test").contentWindow.run(
+["application/xhtml+xml", "-//WAPFORUM//DTD XHTML Mobile 1.0//EN", "foo", "XHTML Mobile"]);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm
index 8460f5f..76165509 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm
@@ -1,10 +1,5 @@
 <!DOCTYPE html>
 <meta charset=utf-8>
-<title>HTML entities for various XHTML Doctype variants</title>
-<link rel=help href="http://w3c.github.io/html/xhtml.html#parsing-xhtml-documents">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<div id="log"></div>
 <script>
   var parser = new DOMParser();
   var parse = parser.parseFromString.bind(parser);
@@ -20,13 +15,13 @@
         doctypeString += '>';
       var doc = parse(doctypeString + "<html><head></head><body id='test'>"+entitystring+"</body></html>", mimeType);
       var root = doc.getElementById('test');
-      assert_not_equals(root, null, friendlyMime + " parsing the entity reference caused a parse error;");
-      assert_true(!!root.firstChild);
+      parent.assert_not_equals(root, null, friendlyMime + " parsing the entity reference caused a parse error;");
+      parent.assert_true(!!root.firstChild);
       // Next line because some browsers include the partial parsed result in the parser error returned document.
-      assert_equals(root.firstChild.nodeType, 3/*Text*/, friendlyMime + " parsing the entity reference caused a parse error;");
+      parent.assert_equals(root.firstChild.nodeType, 3/*Text*/, friendlyMime + " parsing the entity reference caused a parse error;");
       var text = root.firstChild.data;
       for (var i = 0, len = expectedString.length; i < len; i++) {
-        assert_equals(text.charCodeAt(i),expectedString.charCodeAt(i));
+        parent.assert_equals(text.charCodeAt(i),expectedString.charCodeAt(i));
       }
     }
   }
@@ -34,34 +29,21 @@
   function setupTests(jsonEntities, publicId, systemId, mimeType, friendlyMime) {
     for (entityName in jsonEntities) {
       if ((mimeType == "text/html") || /;$/.test(entityName)) {
-        test(generateTestFunction(entityName, jsonEntities[entityName].characters, publicId, systemId, mimeType, friendlyMime), friendlyMime + " parsing " + entityName);
+        parent.test(generateTestFunction(entityName, jsonEntities[entityName].characters, publicId, systemId, mimeType, friendlyMime), friendlyMime + " parsing " + entityName);
       }
     }
   }
 
-  setup(function() {}, {explicit_done: true});
+  parent.setup(function() {}, {explicit_done: true});
 
-  var xhr = new XMLHttpRequest();
-  xhr.open("GET", "/common/entities.json");
-  xhr.onload = function () {
-    var entitiesJSON = JSON.parse(xhr.response);
-    [
-      ["application/xhtml+xml", "-//W3C//DTD XHTML 1.0 Transitional//EN", "foo", "XHTML1.0 Transitional"],
-      ["application/xhtml+xml", "-//W3C//DTD XHTML 1.1//EN", "foo", "XHTML1.1"],
-      ["application/xhtml+xml", "-//W3C//DTD XHTML 1.0 Strict//EN", "foo", "XHTML1.0 Strict"],
-      ["application/xhtml+xml", "-//W3C//DTD XHTML 1.0 Frameset//EN", "foo", "XHTML1.0 Frameset"],
-      ["application/xhtml+xml", "-//W3C//DTD XHTML Basic 1.0//EN", "foo", "XHTML Basic"],
-      ["application/xhtml+xml", "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN", "foo", "XHTML1.1+MathML"],
-      ["application/xhtml+xml", "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN", "foo", "XHTML1.1+MathML+SVG"],
-      ["application/xhtml+xml", "-//W3C//DTD MathML 2.0//EN", "foo", "MathML"],
-      ["application/xhtml+xml", "-//WAPFORUM//DTD XHTML Mobile 1.0//EN", "foo", "XHTML Mobile"],
-//      ["application/xhtml+xml", null, "mathml.dtd", "SYSTEM MathML"], // Experimental
-      ["text/html", null, null, "HTML"]
-    ].forEach(function (row) {
+  function run(row) {
+    var xhr = new XMLHttpRequest();
+    xhr.open("GET", "/common/entities.json");
+    xhr.onload = function () {
+      var entitiesJSON = JSON.parse(xhr.response);
       setupTests(entitiesJSON, row[1], row[2], row[0], row[3]);
-    });
-    done();
+      parent.done();
+    }
+    xhr.send();
   }
-  xhr.send();
-
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/webappapis/idle-callbacks/callback-multiple-calls.html b/third_party/WebKit/LayoutTests/external/wpt/html/webappapis/idle-callbacks/callback-multiple-calls.html
index 8584c71..7bb524b 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/html/webappapis/idle-callbacks/callback-multiple-calls.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/webappapis/idle-callbacks/callback-multiple-calls.html
@@ -5,12 +5,14 @@
 <script src=/resources/testharnessreport.js></script>
 <div id="log"></div>
 <script>
+  let option = {timeout: 50};
+
   async_test(function (t) {
     assert_false(document.hidden, "document.hidden must exist and be false to run this test properly");
     var counter = 0;
     function f(c) {
       assert_equals(counter, c);
-      if (counter === 99) {
+      if (counter === 49) {
         t.done();
       }
 
@@ -18,7 +20,7 @@
     }
     for (var i = 0; i < 100; ++i) {
       let j = i;
-      window.requestIdleCallback(t.step_func(function () { f(j) }));
+      window.requestIdleCallback(t.step_func(function () { f(j) }), option);
     }
   }, "requestIdleCallback callbacks should be invoked in order (called iteratively)");
 
@@ -28,14 +30,17 @@
 
     function f(c) {
       assert_equals(counter, c);
-      if (counter === 99) {
+      if (counter === 49) {
         t.done();
       }
 
       ++counter;
-      window.requestIdleCallback(t.step_func(function () { f(c + 1) }));
+      window.requestIdleCallback(t.step_func(function () { f(c + 1) }), option);
     }
 
-    window.requestIdleCallback(t.step_func(function () { f(0) }));
+    window.requestIdleCallback(t.step_func(function () { f(0) }), option);
   }, "requestIdleCallback callbacks should be invoked in order (called recursively)");
+
+  let generateIdlePeriods = _ => requestAnimationFrame(generateIdlePeriods);
+  generateIdlePeriods();
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/http/basic-auth-cache-test-ref.html b/third_party/WebKit/LayoutTests/external/wpt/http/basic-auth-cache-test-ref.html
new file mode 100644
index 0000000..905facd
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/http/basic-auth-cache-test-ref.html
@@ -0,0 +1,6 @@
+<!doctype html>
+<html>
+  <meta charset="utf-8">
+  <img src="/images/green.png">
+  <img src="/images/green.png">
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/http/basic-auth-cache-test.html b/third_party/WebKit/LayoutTests/external/wpt/http/basic-auth-cache-test.html
new file mode 100644
index 0000000..0d3895b8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/http/basic-auth-cache-test.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html id="doc" class="reftest-wait">
+  <meta charset="utf-8">
+  <link rel="match" href="basic-auth-cache-test-ref.html">
+
+  <img id="auth" onload="loadNoAuth()">
+  <img id="noauth" onload="removeWait()">
+
+
+  <script type="text/javascript">
+    function loadAuth() {
+        var authUrl = 'http://testuser:testpass@' + window.location.host + '/http/resources/securedimage.py';
+        document.getElementById('auth').src = authUrl;
+    }
+
+    function loadNoAuth() {
+        var noAuthUrl = 'http://' + window.location.host + '/http/resources/securedimage.py';
+        document.getElementById('noauth').src = noAuthUrl;
+    }
+
+    function removeWait() {
+        document.getElementById('doc').className = "";
+    }
+
+    window.onload = loadAuth;
+  </script>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/http/content_length.html b/third_party/WebKit/LayoutTests/external/wpt/http/content_length.html
new file mode 100644
index 0000000..af8ea44
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/http/content_length.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<!-- CAUTION: if updating this test also update the expected content-length in the .headers file -->
+<title>Content-Length Test</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+onload = function() {
+  assert_equals(document.body.textContent, "PASS");
+  done();
+}
+</script>
+<body>PASS
+but FAIL if this is in the body.
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/http/content_length.html.headers b/third_party/WebKit/LayoutTests/external/wpt/http/content_length.html.headers
new file mode 100644
index 0000000..385ea55
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/http/content_length.html.headers
@@ -0,0 +1 @@
+Content-Length: 373
diff --git a/third_party/WebKit/LayoutTests/external/wpt/http/resources/securedimage.py b/third_party/WebKit/LayoutTests/external/wpt/http/resources/securedimage.py
new file mode 100644
index 0000000..311b0c5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/http/resources/securedimage.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -
+
+def main(request, response):
+    image_url = str.replace(request.url, "http/resources/securedimage.py", "images/green.png")
+
+    if "authorization" not in request.headers:
+        response.status = 401
+        response.headers.set("WWW-Authenticate", "Basic")
+        return response
+    else:
+        auth = request.headers.get("Authorization")
+        if auth != "Basic dGVzdHVzZXI6dGVzdHBhc3M=":
+            response.set_error(403, "Invalid username or password - " + auth)
+            return response
+
+    response.status = 301
+    response.headers.set("Location", image_url)
diff --git a/third_party/WebKit/LayoutTests/external/wpt/interfaces/webrtc-pc.idl b/third_party/WebKit/LayoutTests/external/wpt/interfaces/webrtc-pc.idl
new file mode 100644
index 0000000..133524a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/interfaces/webrtc-pc.idl
@@ -0,0 +1,657 @@
+dictionary RTCConfiguration {
+    sequence<RTCIceServer>   iceServers;
+    RTCIceTransportPolicy    iceTransportPolicy = "all";
+    RTCBundlePolicy          bundlePolicy = "balanced";
+    RTCRtcpMuxPolicy         rtcpMuxPolicy = "require";
+    DOMString                peerIdentity;
+    sequence<RTCCertificate> certificates;
+    [EnforceRange]
+    octet                    iceCandidatePoolSize = 0;
+};
+
+enum RTCIceCredentialType {
+    "password",
+    "token"
+};
+
+dictionary RTCIceServer {
+    required (DOMString or sequence<DOMString>) urls;
+             DOMString                          username;
+             DOMString                          credential;
+             RTCIceCredentialType               credentialType = "password";
+};
+
+enum RTCIceTransportPolicy {
+    "relay",
+    "all"
+};
+
+enum RTCBundlePolicy {
+    "balanced",
+    "max-compat",
+    "max-bundle"
+};
+
+enum RTCRtcpMuxPolicy {
+    // At risk due to lack of implementers' interest.
+    "negotiate",
+    "require"
+};
+
+dictionary RTCOfferAnswerOptions {
+    boolean voiceActivityDetection = true;
+};
+
+dictionary RTCOfferOptions : RTCOfferAnswerOptions {
+    boolean iceRestart = false;
+    boolean offerToReceiveAudio;
+    boolean offerToReceiveVideo;
+};
+
+dictionary RTCAnswerOptions : RTCOfferAnswerOptions {
+};
+
+[Constructor(optional RTCConfiguration configuration)]
+interface RTCPeerConnection : EventTarget {
+    Promise<RTCSessionDescriptionInit> createOffer(optional RTCOfferOptions options);
+    Promise<RTCSessionDescriptionInit> createAnswer(optional RTCAnswerOptions options);
+    Promise<void>                      setLocalDescription(RTCSessionDescriptionInit description);
+    readonly        attribute RTCSessionDescription?    localDescription;
+    readonly        attribute RTCSessionDescription?    currentLocalDescription;
+    readonly        attribute RTCSessionDescription?    pendingLocalDescription;
+    Promise<void>                      setRemoteDescription(RTCSessionDescriptionInit description);
+    readonly        attribute RTCSessionDescription?    remoteDescription;
+    readonly        attribute RTCSessionDescription?    currentRemoteDescription;
+    readonly        attribute RTCSessionDescription?    pendingRemoteDescription;
+    Promise<void>                      addIceCandidate((RTCIceCandidateInit or RTCIceCandidate) candidate);
+    readonly        attribute RTCSignalingState         signalingState;
+    readonly        attribute RTCIceGatheringState      iceGatheringState;
+    readonly        attribute RTCIceConnectionState     iceConnectionState;
+    readonly        attribute RTCPeerConnectionState    connectionState;
+    readonly        attribute boolean?                  canTrickleIceCandidates;
+    static readonly attribute FrozenArray<RTCIceServer> defaultIceServers;
+    RTCConfiguration                   getConfiguration();
+    void                               setConfiguration(RTCConfiguration configuration);
+    void                               close();
+                    attribute EventHandler              onnegotiationneeded;
+                    attribute EventHandler              onicecandidate;
+                    attribute EventHandler              onicecandidateerror;
+                    attribute EventHandler              onsignalingstatechange;
+                    attribute EventHandler              oniceconnectionstatechange;
+                    attribute EventHandler              onicegatheringstatechange;
+                    attribute EventHandler              onconnectionstatechange;
+                    attribute EventHandler              onfingerprintfailure;
+};
+
+partial interface RTCPeerConnection {
+    Promise<void> createOffer(RTCSessionDescriptionCallback successCallback,
+                              RTCPeerConnectionErrorCallback failureCallback,
+                              optional RTCOfferOptions options);
+    Promise<void> setLocalDescription(RTCSessionDescriptionInit description,
+                                      VoidFunction successCallback,
+                                      RTCPeerConnectionErrorCallback failureCallback);
+    Promise<void> createAnswer(RTCSessionDescriptionCallback successCallback,
+                               RTCPeerConnectionErrorCallback failureCallback);
+    Promise<void> setRemoteDescription(RTCSessionDescriptionInit description,
+                                       VoidFunction successCallback,
+                                       RTCPeerConnectionErrorCallback failureCallback);
+    Promise<void> addIceCandidate((RTCIceCandidateInit or RTCIceCandidate) candidate,
+                                  VoidFunction successCallback,
+                                  RTCPeerConnectionErrorCallback failureCallback);
+};
+
+enum RTCSignalingState {
+    "stable",
+    "have-local-offer",
+    "have-remote-offer",
+    "have-local-pranswer",
+    "have-remote-pranswer"
+};
+
+enum RTCIceGatheringState {
+    "new",
+    "gathering",
+    "complete"
+};
+
+enum RTCPeerConnectionState {
+    "new",
+    "connecting",
+    "connected",
+    "disconnected",
+    "failed",
+    "closed"
+};
+
+enum RTCIceConnectionState {
+    "new",
+    "checking",
+    "connected",
+    "completed",
+    "failed",
+    "disconnected",
+    "closed"
+};
+
+callback RTCPeerConnectionErrorCallback = void (DOMException error);
+
+callback RTCSessionDescriptionCallback = void (RTCSessionDescriptionInit description);
+
+callback RTCStatsCallback = void (RTCStatsReport report);
+
+enum RTCSdpType {
+    "offer",
+    "pranswer",
+    "answer",
+    "rollback"
+};
+
+[Constructor(RTCSessionDescriptionInit descriptionInitDict)]
+interface RTCSessionDescription {
+    readonly attribute RTCSdpType type;
+    readonly attribute DOMString  sdp;
+    serializer = {attribute};
+};
+
+dictionary RTCSessionDescriptionInit {
+    required RTCSdpType type;
+             DOMString  sdp = "";
+};
+
+[Constructor(RTCIceCandidateInit candidateInitDict)]
+interface RTCIceCandidate {
+    readonly attribute DOMString               candidate;
+    readonly attribute DOMString?              sdpMid;
+    readonly attribute unsigned short?         sdpMLineIndex;
+    readonly attribute DOMString?              foundation;
+    readonly attribute unsigned long?          priority;
+    readonly attribute DOMString?              ip;
+    readonly attribute RTCIceProtocol?         protocol;
+    readonly attribute unsigned short?         port;
+    readonly attribute RTCIceCandidateType?    type;
+    readonly attribute RTCIceTcpCandidateType? tcpType;
+    readonly attribute DOMString?              relatedAddress;
+    readonly attribute unsigned short?         relatedPort;
+    readonly attribute DOMString?              ufrag;
+    serializer = {candidate, sdpMid, sdpMLineIndex, ufrag};
+};
+
+dictionary RTCIceCandidateInit {
+    DOMString       candidate = "";
+    DOMString?      sdpMid = null;
+    unsigned short? sdpMLineIndex = null;
+    DOMString       ufrag;
+};
+
+enum RTCIceProtocol {
+    "udp",
+    "tcp"
+};
+
+enum RTCIceTcpCandidateType {
+    "active",
+    "passive",
+    "so"
+};
+
+enum RTCIceCandidateType {
+    "host",
+    "srflx",
+    "prflx",
+    "relay"
+};
+
+[Constructor(DOMString type, optional RTCPeerConnectionIceEventInit eventInitDict)]
+interface RTCPeerConnectionIceEvent : Event {
+    readonly attribute RTCIceCandidate? candidate;
+    readonly attribute DOMString?       url;
+};
+
+dictionary RTCPeerConnectionIceEventInit : EventInit {
+    RTCIceCandidate? candidate;
+    DOMString?       url;
+};
+
+[Constructor(DOMString type, RTCPeerConnectionIceErrorEventInit eventInitDict)]
+interface RTCPeerConnectionIceErrorEvent : Event {
+    readonly attribute DOMString      hostCandidate;
+    readonly attribute DOMString      url;
+    readonly attribute unsigned short errorCode;
+    readonly attribute USVString      errorText;
+};
+
+dictionary RTCPeerConnectionIceErrorEventInit : EventInit {
+             DOMString      hostCandidate;
+             DOMString      url;
+    required unsigned short errorCode;
+             USVString      statusText;
+};
+
+enum RTCPriorityType {
+    "very-low",
+    "low",
+    "medium",
+    "high"
+};
+
+partial interface RTCPeerConnection {
+    static Promise<RTCCertificate> generateCertificate(AlgorithmIdentifier keygenAlgorithm);
+};
+
+dictionary RTCCertificateExpiration {
+    [EnforceRange]
+    DOMTimeStamp expires;
+};
+
+interface RTCCertificate {
+    readonly attribute DOMTimeStamp                    expires;
+    readonly attribute FrozenArray<RTCDtlsFingerprint> fingerprints;
+    AlgorithmIdentifier getAlgorithm();
+};
+
+partial interface RTCPeerConnection {
+    sequence<RTCRtpSender>      getSenders();
+    sequence<RTCRtpReceiver>    getReceivers();
+    sequence<RTCRtpTransceiver> getTransceivers();
+    RTCRtpSender                addTrack(MediaStreamTrack track,
+                                         MediaStream... streams);
+    void                        removeTrack(RTCRtpSender sender);
+    RTCRtpTransceiver           addTransceiver((MediaStreamTrack or DOMString) trackOrKind,
+                                               optional RTCRtpTransceiverInit init);
+    attribute EventHandler ontrack;
+};
+
+dictionary RTCRtpTransceiverInit {
+    RTCRtpTransceiverDirection         direction = "sendrecv";
+    sequence<MediaStream>              streams;
+    sequence<RTCRtpEncodingParameters> sendEncodings;
+};
+
+enum RTCRtpTransceiverDirection {
+    "sendrecv",
+    "sendonly",
+    "recvonly",
+    "inactive"
+};
+
+interface RTCRtpSender {
+    readonly attribute MediaStreamTrack? track;
+    readonly attribute RTCDtlsTransport? transport;
+    readonly attribute RTCDtlsTransport? rtcpTransport;
+    static RTCRtpCapabilities getCapabilities(DOMString kind);
+    Promise<void>      setParameters(optional RTCRtpParameters parameters);
+    RTCRtpParameters   getParameters();
+    Promise<void>      replaceTrack(MediaStreamTrack withTrack);
+};
+
+dictionary RTCRtpParameters {
+    DOMString                                 transactionId;
+    sequence<RTCRtpEncodingParameters>        encodings;
+    sequence<RTCRtpHeaderExtensionParameters> headerExtensions;
+    RTCRtcpParameters                         rtcp;
+    sequence<RTCRtpCodecParameters>           codecs;
+    RTCDegradationPreference                  degradationPreference = "balanced";
+};
+
+dictionary RTCRtpEncodingParameters {
+    unsigned long       ssrc;
+    RTCRtpRtxParameters rtx;
+    RTCRtpFecParameters fec;
+    RTCDtxStatus        dtx;
+    boolean             active;
+    RTCPriorityType     priority;
+    unsigned long       maxBitrate;
+    unsigned long       maxFramerate;
+    DOMString           rid;
+    double              scaleResolutionDownBy = 1;
+};
+
+enum RTCDtxStatus {
+    "disabled",
+    "enabled"
+};
+
+enum RTCDegradationPreference {
+    "maintain-framerate",
+    "maintain-resolution",
+    "balanced"
+};
+
+dictionary RTCRtpRtxParameters {
+    unsigned long ssrc;
+};
+
+dictionary RTCRtpFecParameters {
+    unsigned long ssrc;
+};
+
+dictionary RTCRtcpParameters {
+    DOMString cname;
+    boolean   reducedSize;
+};
+
+dictionary RTCRtpHeaderExtensionParameters {
+    DOMString      uri;
+    unsigned short id;
+    boolean        encrypted;
+};
+
+dictionary RTCRtpCodecParameters {
+    unsigned short payloadType;
+    DOMString      mimeType;
+    unsigned long  clockRate;
+    unsigned short channels = 1;
+    DOMString      sdpFmtpLine;
+};
+
+dictionary RTCRtpCapabilities {
+    sequence<RTCRtpCodecCapability>           codecs;
+    sequence<RTCRtpHeaderExtensionCapability> headerExtensions;
+};
+
+dictionary RTCRtpCodecCapability {
+    DOMString      mimeType;
+    unsigned long  clockRate;
+    unsigned short channels = 1;
+    DOMString      sdpFmtpLine;
+};
+
+dictionary RTCRtpHeaderExtensionCapability {
+    DOMString uri;
+};
+
+interface RTCRtpReceiver {
+    readonly attribute MediaStreamTrack  track;
+    readonly attribute RTCDtlsTransport? transport;
+    readonly attribute RTCDtlsTransport? rtcpTransport;
+    static RTCRtpCapabilities          getCapabilities(DOMString kind);
+    RTCRtpParameters                   getParameters();
+    sequence<RTCRtpContributingSource> getContributingSources();
+};
+
+interface RTCRtpContributingSource {
+    readonly attribute DOMHighResTimeStamp timestamp;
+    readonly attribute unsigned long       source;
+    readonly attribute byte?               audioLevel;
+    readonly attribute boolean?            voiceActivityFlag;
+};
+
+interface RTCRtpTransceiver {
+    readonly attribute DOMString?                  mid;
+    [SameObject]
+    readonly attribute RTCRtpSender                sender;
+    [SameObject]
+    readonly attribute RTCRtpReceiver              receiver;
+    readonly attribute boolean                     stopped;
+    readonly attribute RTCRtpTransceiverDirection  direction;
+    readonly attribute RTCRtpTransceiverDirection? currentDirection;
+    void setDirection(RTCRtpTransceiverDirection direction);
+    void stop();
+    void setCodecPreferences(sequence<RTCRtpCodecCapability> codecs);
+};
+
+interface RTCDtlsTransport {
+    readonly attribute RTCIceTransport       transport;
+    readonly attribute RTCDtlsTransportState state;
+    sequence<ArrayBuffer> getRemoteCertificates();
+             attribute EventHandler          onstatechange;
+};
+
+enum RTCDtlsTransportState {
+    "new",
+    "connecting",
+    "connected",
+    "closed",
+    "failed"
+};
+
+dictionary RTCDtlsFingerprint {
+    DOMString algorithm;
+    DOMString value;
+};
+
+interface RTCIceTransport {
+    readonly attribute RTCIceRole           role;
+    readonly attribute RTCIceComponent      component;
+    readonly attribute RTCIceTransportState state;
+    readonly attribute RTCIceGathererState  gatheringState;
+    sequence<RTCIceCandidate> getLocalCandidates();
+    sequence<RTCIceCandidate> getRemoteCandidates();
+    RTCIceCandidatePair?      getSelectedCandidatePair();
+    RTCIceParameters?         getLocalParameters();
+    RTCIceParameters?         getRemoteParameters();
+             attribute EventHandler         onstatechange;
+             attribute EventHandler         ongatheringstatechange;
+             attribute EventHandler         onselectedcandidatepairchange;
+};
+
+dictionary RTCIceParameters {
+    DOMString usernameFragment;
+    DOMString password;
+};
+
+dictionary RTCIceCandidatePair {
+    RTCIceCandidate local;
+    RTCIceCandidate remote;
+};
+
+enum RTCIceGathererState {
+    "new",
+    "gathering",
+    "complete"
+};
+
+enum RTCIceTransportState {
+    "new",
+    "checking",
+    "connected",
+    "completed",
+    "failed",
+    "disconnected",
+    "closed"
+};
+
+enum RTCIceRole {
+    "controlling",
+    "controlled"
+};
+
+enum RTCIceComponent {
+    "rtp",
+    "rtcp"
+};
+
+[Constructor(DOMString type, RTCTrackEventInit eventInitDict)]
+interface RTCTrackEvent : Event {
+    readonly attribute RTCRtpReceiver           receiver;
+    readonly attribute MediaStreamTrack         track;
+    readonly attribute FrozenArray<MediaStream> streams;
+    readonly attribute RTCRtpTransceiver        transceiver;
+};
+
+dictionary RTCTrackEventInit : EventInit {
+    required RTCRtpReceiver        receiver;
+    required MediaStreamTrack      track;
+             sequence<MediaStream> streams = [];
+    required RTCRtpTransceiver     transceiver;
+};
+
+partial interface RTCPeerConnection {
+    readonly attribute RTCSctpTransport? sctp;
+    RTCDataChannel createDataChannel([TreatNullAs=EmptyString] USVString label,
+                                     optional RTCDataChannelInit dataChannelDict);
+             attribute EventHandler      ondatachannel;
+};
+
+interface RTCSctpTransport {
+    readonly attribute RTCDtlsTransport transport;
+    readonly attribute unsigned long    maxMessageSize;
+};
+
+interface RTCDataChannel : EventTarget {
+    readonly attribute USVString           label;
+    readonly attribute boolean             ordered;
+    readonly attribute unsigned short?     maxPacketLifeTime;
+    readonly attribute unsigned short?     maxRetransmits;
+    readonly attribute USVString           protocol;
+    readonly attribute boolean             negotiated;
+    readonly attribute unsigned short?     id;
+    readonly attribute RTCPriorityType     priority;
+    readonly attribute RTCDataChannelState readyState;
+    readonly attribute unsigned long       bufferedAmount;
+             attribute unsigned long       bufferedAmountLowThreshold;
+             attribute EventHandler        onopen;
+             attribute EventHandler        onbufferedamountlow;
+             attribute EventHandler        onerror;
+             attribute EventHandler        onclose;
+    void close();
+             attribute EventHandler        onmessage;
+             attribute DOMString           binaryType;
+    void send(USVString data);
+    void send(Blob data);
+    void send(ArrayBuffer data);
+    void send(ArrayBufferView data);
+};
+
+dictionary RTCDataChannelInit {
+    boolean         ordered = true;
+    unsigned short  maxPacketLifeTime;
+    unsigned short  maxRetransmits;
+    USVString       protocol = "";
+    boolean         negotiated = false;
+    [EnforceRange]
+    unsigned short  id;
+    RTCPriorityType priority = "low";
+};
+
+enum RTCDataChannelState {
+    "connecting",
+    "open",
+    "closing",
+    "closed"
+};
+
+[Constructor(DOMString type, RTCDataChannelEventInit eventInitDict)]
+interface RTCDataChannelEvent : Event {
+    readonly attribute RTCDataChannel channel;
+};
+
+dictionary RTCDataChannelEventInit : EventInit {
+    required RTCDataChannel channel;
+};
+
+partial interface RTCRtpSender {
+    readonly attribute RTCDTMFSender? dtmf;
+};
+
+interface RTCDTMFSender : EventTarget {
+    void insertDTMF(DOMString tones,
+                    optional unsigned long duration = 100,
+                    optional unsigned long interToneGap = 70);
+             attribute EventHandler ontonechange;
+    readonly attribute DOMString    toneBuffer;
+};
+
+[Constructor(DOMString type, RTCDTMFToneChangeEventInit eventInitDict)]
+interface RTCDTMFToneChangeEvent : Event {
+    readonly attribute DOMString tone;
+};
+
+dictionary RTCDTMFToneChangeEventInit : EventInit {
+    required DOMString tone;
+};
+
+partial interface RTCPeerConnection {
+    Promise<RTCStatsReport> getStats(optional MediaStreamTrack? selector = null);
+};
+
+interface RTCStatsReport {
+    readonly maplike<DOMString, object>;
+};
+
+dictionary RTCStats {
+    DOMHighResTimeStamp timestamp;
+    RTCStatsType        type;
+    DOMString           id;
+};
+
+enum RTCStatsType {
+};
+
+[Global,
+ Exposed=RTCIdentityProviderGlobalScope]
+interface RTCIdentityProviderGlobalScope : WorkerGlobalScope {
+    readonly attribute RTCIdentityProviderRegistrar rtcIdentityProvider;
+};
+
+[Exposed=RTCIdentityProviderGlobalScope]
+interface RTCIdentityProviderRegistrar {
+    void register(RTCIdentityProvider idp);
+};
+
+dictionary RTCIdentityProvider {
+    required GenerateAssertionCallback generateAssertion;
+    required ValidateAssertionCallback validateAssertion;
+};
+
+callback GenerateAssertionCallback = Promise<RTCIdentityAssertionResult> (DOMString contents,
+                                                                          DOMString origin,
+                                                                          RTCIdentityProviderOptions options);
+
+callback ValidateAssertionCallback = Promise<RTCIdentityValidationResult> (DOMString assertion,
+                                                                           DOMString origin);
+
+dictionary RTCIdentityAssertionResult {
+    required RTCIdentityProviderDetails idp;
+    required DOMString                  assertion;
+};
+
+dictionary RTCIdentityProviderDetails {
+    required DOMString domain;
+             DOMString protocol = "default";
+};
+
+dictionary RTCIdentityValidationResult {
+    required DOMString identity;
+    required DOMString contents;
+};
+
+partial interface RTCPeerConnection {
+    void               setIdentityProvider(DOMString provider,
+                                           optional RTCIdentityProviderOptions options);
+    Promise<DOMString> getIdentityAssertion();
+    readonly attribute Promise<RTCIdentityAssertion> peerIdentity;
+    readonly attribute DOMString?                    idpLoginUrl;
+    readonly attribute DOMString?                    idpErrorInfo;
+};
+
+dictionary RTCIdentityProviderOptions {
+    DOMString protocol = "default";
+    DOMString usernameHint;
+    DOMString peerIdentity;
+};
+
+[Constructor(DOMString idp, DOMString name)]
+interface RTCIdentityAssertion {
+    attribute DOMString idp;
+    attribute DOMString name;
+};
+
+partial dictionary MediaStreamConstraints {
+    DOMString peerIdentity;
+};
+
+partial interface MediaStreamTrack {
+    readonly attribute boolean      isolated;
+             attribute EventHandler onisolationchange;
+};
+
+[Exposed=Window,
+ Constructor(DOMString type, RTCErrorEventInit eventInitDict)]
+interface RTCErrorEvent : Event {
+    readonly attribute RTCError? error;
+};
+
+dictionary RTCErrorEventInit : EventInit {
+    RTCError? error = null;
+};
diff --git a/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/idlharness.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/idlharness.https-expected.txt
deleted file mode 100644
index cea6321..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/idlharness.https-expected.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-This is a testharness.js-based test.
-FAIL Navigator interface: operation requestKeyboardLock(sequence) assert_throws: calling operation with this = null didn't throw TypeError function "function () {
-            fn.apply(obj, args);
-        }" did not throw
-PASS Navigator interface: operation cancelKeyboardLock() 
-PASS Navigator must be primary interface of navigator 
-PASS Stringification of navigator 
-PASS Navigator interface: navigator must inherit property "requestKeyboardLock" with the proper type (0) 
-PASS Navigator interface: calling requestKeyboardLock(sequence) on navigator with too few arguments must throw TypeError 
-PASS Navigator interface: navigator must inherit property "cancelKeyboardLock" with the proper type (1) 
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/idlharness.https.html b/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/idlharness.https.html
deleted file mode 100644
index 6fabb411..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/idlharness.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<title>Keyboard Lock IDL tests</title>
-<link rel="help" href="https://github.com/w3c/keyboard-lock"/>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/WebIDLParser.js"></script>
-<script src="/resources/idlharness.js"></script>
-</head>
-<body>
-<pre id="untested_idl" style="display: none">
-interface Navigator {
-};
-</pre>
-<!--
-  The reason of the failure of requestKeyboardLock test looks like a code defect in
-  idlharness.js. media-capabilities/idlharness.html is also impacted by this
-  issue. See https://codereview.chromium.org/2805763004/#ps620001, which
-  includes a potential fix.
-  TODO(zijiehe): Submit the fix.
--->
-<pre id="idl" style="display: none">
-partial interface Navigator {
-  [SecureContext] Promise<void> requestKeyboardLock(optional sequence<DOMString> keyCodes = []);
-  [SecureContext] void cancelKeyboardLock();
-};
-</pre>
-<script>
-var idl_array = new IdlArray();
-idl_array.add_untested_idls(
-    document.getElementById("untested_idl").textContent);
-idl_array.add_idls(document.getElementById("idl").textContent);
-idl_array.add_objects({
-  Navigator: ["navigator"]
-});
-idl_array.test();
-</script>
-<div id="log"></div>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/navigator-cancelKeyboardLock.https.html b/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/navigator-cancelKeyboardLock.https.html
deleted file mode 100644
index 10fd50d3..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/navigator-cancelKeyboardLock.https.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script>
-'use strict';
-
-test(() => {
-  assert_equals(navigator.cancelKeyboardLock(),
-                undefined);
-}, 'Keyboard Lock cancelKeyboardLock');
-
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/navigator-requestKeyboardLock-two-parallel-requests.https.html b/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/navigator-requestKeyboardLock-two-parallel-requests.https.html
deleted file mode 100644
index 8e84d14..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/navigator-requestKeyboardLock-two-parallel-requests.https.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script>
-'use strict';
-
-promise_test((t) => {
-  const p1 = navigator.requestKeyboardLock(['a', 'b']);
-  const p2 = navigator.requestKeyboardLock(['c', 'd']);
-  return promise_rejects(t, null, p2,
-      'requestKeyboardLock() should only be ' +
-      'executed if another request has finished.');
-}, 'Keyboard Lock requestKeyboardLock twice in parallel');
-
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/navigator-requestKeyboardLock-two-sequential-requests.https.html b/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/navigator-requestKeyboardLock-two-sequential-requests.https.html
deleted file mode 100644
index 30f4905..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/navigator-requestKeyboardLock-two-sequential-requests.https.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script>
-'use strict';
-
-promise_test(() => {
-  return navigator.requestKeyboardLock(['a', 'b'])
-      .then(() => {
-        return navigator.requestKeyboardLock(['c', 'd']);
-      });
-}, 'Keyboard Lock requestKeyboardLock twice sequentially');
-
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/navigator-requestKeyboardLock.https.html b/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/navigator-requestKeyboardLock.https.html
deleted file mode 100644
index e6e0121..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/keyboard-lock/navigator-requestKeyboardLock.https.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script>
-'use strict';
-
-promise_test(() => {
-  const p = navigator.requestKeyboardLock(['a', 'b']);
-  assert_true(p instanceof Promise);
-  return p;
-}, 'Keyboard Lock requestKeyboardLock');
-
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/lint.whitelist b/third_party/WebKit/LayoutTests/external/wpt/lint.whitelist
index 906736a..e26431f 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/lint.whitelist
+++ b/third_party/WebKit/LayoutTests/external/wpt/lint.whitelist
@@ -769,6 +769,10 @@
 CSS-COLLIDING-SUPPORT-NAME: css/CSS2/normal-flow/support/replaced-min-max-1.png
 CSS-COLLIDING-SUPPORT-NAME: css/vendor-imports/mozilla/mozilla-central-reftests/ui3/support/replaced-min-max-1.png
 
+# TODO https://github.com/w3c/web-platform-tests/issues/5770
+MISSING-LINK: css/geometry-1/DOMMatrix-css-string.worker.js
+MISSING-LINK: css/geometry-1/WebKitCSSMatrix.worker.js
+
 WEBIDL2.JS:.gitmodules
 
 # Manual test that uses console.logs for feedback
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer.https.html b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer.https.html
new file mode 100644
index 0000000..bad18f1d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer.https.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Magnetometer Test</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<link rel="help" href="https://www.w3.org/TR/magnetometer/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/generic-sensor/generic-sensor-tests.js"></script>
+<div id="log"></div>
+<iframe src="support-iframe.html" id="frame" style="display:none" sandbox="allow-scripts">
+</iframe>
+<script>
+
+runGenericSensorTests(Magnetometer);
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_insecure_context.html b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_insecure_context.html
new file mode 100644
index 0000000..452bfc1c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_insecure_context.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Magnetometer Test: insecure context</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<link rel="help" href="https://www.w3.org/TR/magnetometer/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/generic-sensor/generic-sensor-tests.js"></script>
+<div id="log"></div>
+<h2>Precondition</h2>
+<ol>
+  <li>
+    Run test in an insecure context, e.g. http://example.com/.
+  </li>
+</ol>
+<script>
+
+runGenericSensorInsecureContext(Magnetometer);
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_onerror-manual.https.html b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_onerror-manual.https.html
new file mode 100644
index 0000000..3cd62db
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/Magnetometer_onerror-manual.https.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Magnetometer Test: onerror</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<link rel="help" href="https://www.w3.org/TR/magnetometer/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/generic-sensor/generic-sensor-tests.js"></script>
+<div id="log"></div>
+<h2>Precondition</h2>
+<ol>
+  <li>
+    Disable the Magnetometer Sensor or run test on a device without Magnetometer Sensor.
+  </li>
+</ol>
+<script>
+
+runGenericSensorOnerror(Magnetometer);
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/magnetometer/support-iframe.html b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/support-iframe.html
new file mode 100644
index 0000000..5328f62
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/magnetometer/support-iframe.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML>
+<meta charset="utf-8">
+<script>
+try {
+  let sensor = new Magnetometer();
+  parent.postMessage("sensor.start() can be fired within iframes", '*');
+} catch (e) {
+  parent.postMessage(e.name, '*');
+}
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/pointerlock/constructor.html b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/constructor.html
new file mode 100644
index 0000000..8c43cf6da
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/constructor.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>Pointer Lock event constructor</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <link rel="help" href="http://www.w3.org/TR/pointerlock/#pointerlockchange-and-pointerlockerror-events">
+    <link rel="help" href="http://www.w3.org/TR/dom/#interface-event">
+  </head>
+  <body>
+    <p>Create Pointer Lock events and check each default value.</p>
+    <div id='log'></div>
+    <script>
+test(function() {
+  var ev = new MouseEvent("pointerlockchange");
+  assert_equals(ev.type, "pointerlockchange");
+  assert_equals(ev.target, null);
+  assert_equals(ev.currentTarget, null);
+  assert_equals(ev.bubbles, false);
+  assert_equals(ev.eventPhase, Event.NONE);
+  assert_equals(ev.cancelable, false);
+  assert_true("preventDefault" in ev);
+  assert_equals(ev.defaultPrevented, false);
+  assert_true(ev.timeStamp > 0);
+  assert_true("initEvent" in ev);
+  assert_true("movementX" in ev, "movementX exists");
+  assert_true("movementY" in ev, "movementY exists");
+  assert_equals(ev.movementX, 0);
+  assert_equals(ev.movementY, 0);
+}, "Default event values for mouse event interface and its pointer lock extensions.");
+test(function() {
+  var ev = new MouseEvent("pointerlockerror",
+                            { type: "trololol",
+                              bubbles: true,
+                              cancelable: false,
+                              get defaultPrevented() {
+                                  assert_unreached("Should not look at the defaultPrevented property.");
+                               },
+                              movementX: 10,
+                              movementY: 10});
+  assert_equals(ev.type, "pointerlockerror");
+  assert_equals(ev.bubbles, true); // this is synthetic event, so follow the dictionary
+  assert_equals(ev.cancelable, false);
+  assert_equals(ev.defaultPrevented, false);
+  assert_equals(ev.movementX, 10); // this is synthetic event, so follow the dictionary
+  assert_equals(ev.movementY, 10); // this is synthetic event, so follow the dictionary
+}, "Default event values for pointerlockerror using a dictionary");
+   </script>
+
+</body>
+
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/pointerlock/idlharness-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/idlharness-expected.txt
new file mode 100644
index 0000000..89e0565
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/idlharness-expected.txt
@@ -0,0 +1,27 @@
+This is a testharness.js-based test.
+PASS Element interface: operation requestPointerLock() 
+FAIL Element must be primary interface of window.document.documentElement assert_equals: window.document.documentElement's prototype is not Element.prototype expected object "[object Element]" but got object "[object HTMLHtmlElement]"
+FAIL Stringification of window.document.documentElement assert_equals: class string of window.document.documentElement expected "[object Element]" but got "[object HTMLHtmlElement]"
+PASS Element interface: window.document.documentElement must inherit property "requestPointerLock" with the proper type (0) 
+PASS Document interface: attribute onpointerlockchange 
+PASS Document interface: attribute onpointerlockerror 
+PASS Document interface: attribute pointerLockElement 
+PASS Document interface: operation exitPointerLock() 
+FAIL Document must be primary interface of window.document assert_equals: window.document's prototype is not Document.prototype expected object "[object Document]" but got object "[object HTMLDocument]"
+FAIL Stringification of window.document assert_equals: class string of window.document expected "[object Document]" but got "[object HTMLDocument]"
+FAIL Document interface: window.document must inherit property "onpointerlockchange" with the proper type (0) Unrecognized type EventHandler
+FAIL Document interface: window.document must inherit property "onpointerlockerror" with the proper type (1) Unrecognized type EventHandler
+PASS Document interface: window.document must inherit property "pointerLockElement" with the proper type (2) 
+PASS Document interface: window.document must inherit property "exitPointerLock" with the proper type (3) 
+PASS MouseEvent interface: attribute movementX 
+PASS MouseEvent interface: attribute movementY 
+PASS MouseEvent must be primary interface of new MouseEvent('mousemove') 
+PASS Stringification of new MouseEvent('mousemove') 
+PASS MouseEvent interface: new MouseEvent('mousemove') must inherit property "movementX" with the proper type (0) 
+PASS MouseEvent interface: new MouseEvent('mousemove') must inherit property "movementY" with the proper type (1) 
+PASS MouseEvent must be primary interface of new MouseEvent('pointerlockchange') 
+PASS Stringification of new MouseEvent('pointerlockchange') 
+PASS MouseEvent interface: new MouseEvent('pointerlockchange') must inherit property "movementX" with the proper type (0) 
+PASS MouseEvent interface: new MouseEvent('pointerlockchange') must inherit property "movementY" with the proper type (1) 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/pointerlock/idlharness.html b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/idlharness.html
new file mode 100644
index 0000000..aa876f5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/idlharness.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Pointer Lock IDL tests</title>
+<link rel="author" title="W3C" href="http://www.w3.org/" />
+<link rel="help" href="http://www.w3.org/TR/pointerlock/#element-interface"/>
+<link rel="help" href="http://www.w3.org/TR/pointerlock/#extensions-to-the-document-interface">
+<link rel="help" href="http://www.w3.org/TR/pointerlock/#extensions-to-the-mouseevent-interface">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/WebIDLParser.js"></script>
+<script src="/resources/idlharness.js"></script>
+</head>
+
+<body>
+<h1>Pointer Lock IDL tests</h1>
+
+<pre id='untested_idl' style='display:none'>
+
+interface EventTarget {
+};
+
+interface Node : EventTarget {
+};
+
+interface Element : Node {
+};
+
+interface Document : Node {
+};
+
+interface Event {
+};
+
+interface MouseEvent : Event {
+};
+</pre>
+
+<pre id='idl'>
+
+partial interface Element {
+    void requestPointerLock ();
+};
+
+partial interface Document {
+                attribute EventHandler onpointerlockchange;
+                attribute EventHandler onpointerlockerror;
+    readonly    attribute Element?     pointerLockElement;
+    void exitPointerLock ();
+};
+
+partial interface MouseEvent {
+    readonly    attribute long movementX;
+    readonly    attribute long movementY;
+};
+
+partial dictionary MouseEventInit {
+        long movementX = 0;
+        long movementY = 0;
+};
+
+
+</pre>
+
+<div id="log"></div>
+
+<script>
+
+var idl_array = new IdlArray();
+
+setup(function() {
+	idl_array.add_untested_idls(document.getElementById("untested_idl").textContent);
+	idl_array.add_idls(document.getElementById("idl").textContent);
+
+	idl_array.add_objects({ Document: ["window.document"],
+                            Element: ["window.document.documentElement"],
+                            MouseEvent: ["new MouseEvent('mousemove')", "new MouseEvent('pointerlockchange')"] });
+});
+
+idl_array.test();
+
+</script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/pointerlock/movementX_Y_basic-manual.html b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/movementX_Y_basic-manual.html
new file mode 100644
index 0000000..1e8fc1f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/movementX_Y_basic-manual.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<meta name='flags' content='interact'>
+<meta name="timeout" content="long">
+<style type="text/css">
+    #status-log {
+        margin: 10px 0;
+        color: green;
+        color: green;
+    }
+</style>
+</head>
+<body>
+    <h2>Description</h2>
+    <p>This test if movementX/Y can provide the change in position of the pointer, as if movementX/Y = eNow.screenX/Y-ePrevious.screenX/Y</p>
+    <hr/>
+
+    <h2>Manual Test Steps:</h2>
+    <p>
+        <ol>
+            <li>Click to start Test1.</li>
+            <li>Move the mouse within the window, slow and fast, like a scribble.</li>
+            <li>Click again to end test.</li>
+        </ol>
+    </p>
+    <hr/>
+
+    <div id="status-log">Waiting... Click to start loging.</div>
+    <div class="data-log">
+	    <table>
+	    	<tr><td></td><td>X</td><td>Y</td></tr>
+	    	<tr><td>client_init:</td><td id="clientX_init-log">X</td><td id="clientY_init-log">Y</td></tr>
+	    	<tr><td>client_last:</td><td id="clientX_last-log">X</td><td id="clientY_last-log">Y</td></tr>
+	    	<tr><td>client_delta:</td><td id="clientX_delta-log">X</td><td id="clientY_delta-log">Y</td></tr>
+	    	<tr><td>movement_sum:</td><td id="movementX_sum-log">X</td><td id="movementY_sum-log">Y</td></tr>
+	    	<tr><td>movement:</td><td id="movementX-log">X</td><td id="movementY-log">Y</td></tr>
+	    </table>
+    </div>
+    <hr/>
+
+    <div id="log"></div>
+
+    <script type="text/javascript" >
+        var status_log = document.querySelector('#status-log'),
+            movementX_log = document.querySelector('#movementX-log'),
+            movementY_log = document.querySelector('#movementY-log'),
+            movementX_sum_log = document.querySelector('#movementX_sum-log'),
+            movementY_sum_log = document.querySelector('#movementY_sum-log'),
+            clientX_init_log = document.querySelector('#clientX_init-log'),
+            clientY_init_log = document.querySelector('#clientY_init-log'),
+            clientX_last_log = document.querySelector('#clientX_last-log'),
+            clientY_last_log = document.querySelector('#clientY_last-log');
+            clientX_delta_log = document.querySelector('#clientX_delta-log'),
+            clientY_delta_log = document.querySelector('#clientY_delta-log');
+
+        var click_counter = 0;
+
+        var clientX_init, clientY_init, movementX, movementY, movementX_sum, movementY_sum, clientX_last, clientY_last;
+
+        var movementX_Y_inside_window_Test = async_test("Test that movementX/Y = eNow.screenX/Y-ePrevious.screenX/Y.");
+
+        document.addEventListener("click", function (e) {
+            click_counter++;
+
+            switch(click_counter) {
+                case 1:
+                    status_log.innerHTML = "inside window: logging...";
+                break;
+                case 2:
+                    status_log.innerHTML = "inside window: done";
+
+                    // approximately(+/- 10)
+                    // a little drift should be tollerated
+                    movementX_Y_inside_window_Test.step(function() {
+                        assert_equals(movementX_sum, clientX_last - clientX_init, "sum of movementX = clientX_init - clientX_last");
+                        assert_equals(movementY_sum, clientY_last - clientY_init, "sum of movementY = clientY_init - clientY_last");
+                    });
+                    movementX_Y_inside_window_Test.done();
+                break;
+            }
+        });
+
+        document.addEventListener("mousemove", function (e) {
+            movementX = e.movementX;
+            movementY = e.movementY;
+
+            if(click_counter === 1) {
+                if(!clientX_init) {
+                    clientX_init = e.clientX;
+                    clientY_init = e.clientY;
+                    movementX_sum = movementX;
+                    movementY_sum = movementY;
+                }
+
+                movementX_sum += movementX;
+                movementY_sum += movementY;
+
+                clientX_last = e.clientX;
+                clientY_last = e.clientY;
+                clientX_delta = clientX_last - clientX_init;
+                clientY_delta = clientY_last - clientY_init;
+
+                updateData();
+            }
+        });
+
+        function updateData() {
+            clientX_init_log.innerHTML = clientX_init;
+            clientY_init_log.innerHTML = clientY_init;
+            clientX_last_log.innerHTML = clientX_last;
+            clientY_last_log.innerHTML = clientY_last;
+            clientX_delta_log.innerHTML = clientX_delta;
+            clientY_delta_log.innerHTML = clientY_delta;
+            movementX_log.innerHTML = movementX;
+            movementY_log.innerHTML = movementY;
+            movementX_sum_log.innerHTML = movementX_sum;
+            movementY_sum_log.innerHTML = movementY_sum;
+        }
+        </script>
+    </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/pointerlock/movementX_Y_no-jumps-manual.html b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/movementX_Y_no-jumps-manual.html
new file mode 100644
index 0000000..9c8fabd
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/movementX_Y_no-jumps-manual.html
@@ -0,0 +1,140 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<meta name='flags' content='interact'>
+<meta name="timeout" content="long">
+<style type="text/css">
+    #status-log {
+        margin: 10px 0;
+        color: green;
+        color: green;
+    }
+</style>
+</head>
+<body>
+    <h2>Description</h2>
+    <p>This test that movementX/Y do not jump by a large value when exiting and re-entering the window.</p>
+    <hr/>
+
+    <h2>Manual Test Steps:</h2>
+    <p>
+        <ol>
+            <li>Make sure the window is not maximized.</li>
+            <li>Click to start Test.</li>
+            <li>Move the mouse slowly out of the window.
+            <li>Move as fast as needed to a different location outside the window at least 100 pixels away</li>
+            <li>Slowly re-enter the window.</li>
+            <li>Click again to end tests.</li>
+        </ol>
+    </p>
+    <hr/>
+
+    <div id="status-log">Waiting... Click to start loging.</div>
+    <div class="data-log">
+	    <table>
+	    	<tr><td></td><td>X</td><td>Y</td></tr>
+	    	<tr><td>client_init:</td><td id="clientX_init-log">X</td><td id="clientY_init-log">Y</td></tr>
+	    	<tr><td>client_last:</td><td id="clientX_last-log">X</td><td id="clientY_last-log">Y</td></tr>
+	    	<tr><td>client_delta:</td><td id="clientX_delta-log">X</td><td id="clientY_delta-log">Y</td></tr>
+	    	<tr><td>movement_sum:</td><td id="movementX_sum-log">X</td><td id="movementY_sum-log">Y</td></tr>
+	    	<tr><td>movement:</td><td id="movementX-log">X</td><td id="movementY-log">Y</td></tr>
+	    </table>
+    </div>
+    <hr/>
+
+    <div id="log"></div>
+
+    <script type="text/javascript" >
+        var status_log = document.querySelector('#status-log'),
+            movementX_log = document.querySelector('#movementX-log'),
+            movementY_log = document.querySelector('#movementY-log'),
+            movementX_sum_log = document.querySelector('#movementX_sum-log'),
+            movementY_sum_log = document.querySelector('#movementY_sum-log'),
+            clientX_init_log = document.querySelector('#clientX_init-log'),
+            clientY_init_log = document.querySelector('#clientY_init-log'),
+            clientX_last_log = document.querySelector('#clientX_last-log'),
+            clientY_last_log = document.querySelector('#clientY_last-log');
+            clientX_delta_log = document.querySelector('#clientX_delta-log'),
+            clientY_delta_log = document.querySelector('#clientY_delta-log');
+
+        var click_counter = 0;
+
+        var clientX_init, clientY_init, movementX, movementY, movementX_sum, movementY_sum, clientX_last, clientY_last;
+
+        var movementX_Y_outside_window_Test = async_test("Test that movementX/Y do not have large values when re-entering from outside the window.");
+
+        document.addEventListener("click", function (e) {
+            click_counter++;
+
+            switch(click_counter) {
+                case 1:
+                    status_log.innerHTML = "logging...";
+                break;
+                case 2:
+                    status_log.innerHTML = "done";
+
+                    // approximately(+/- 10)
+                    // a little drift should be tollerated
+                    movementX_Y_outside_window_Test.step(function() {
+                        assert_equals(movementX_sum, clientX_last - clientX_init, "sum of movementX = clientX_init - clientX_last");
+                        assert_equals(movementY_sum, clientY_last - clientY_init, "sum of movementY = clientY_init - clientY_last");
+                    });
+                    movementX_Y_outside_window_Test.done();
+                break;
+            }
+        });
+
+        document.addEventListener("mousemove", function (e) {
+            movementX = e.movementX;
+            movementY = e.movementY;
+
+            if(click_counter === 1) {
+                if(!clientX_init) {
+                    clientX_init = e.clientX;
+                    clientY_init = e.clientY;
+                    movementX_sum = movementX;
+                    movementY_sum = movementY;
+                }
+
+	            movementX_Y_outside_window_Test.step(function() {
+	            	assert_less_than(Math.abs(movementX), 50, "movementX should not have large jumps in value.");
+	            	assert_less_than(Math.abs(movementY), 50, "movementY should not have large jumps in value.");
+	            });
+
+                movementX_sum += movementX;
+                movementY_sum += movementY;
+
+                clientX_last = e.clientX;
+                clientY_last = e.clientY;
+                clientX_delta = clientX_last - clientX_init;
+                clientY_delta = clientY_last - clientY_init;
+
+                updateData();
+            }
+        });
+
+        document.addEventListener("mouseenter", function (e) {
+            if(click_counter === 1) {
+	            movementX_Y_outside_window_Test.step(function() {
+                    assert_greater_than(Math.abs(e.clientX-clientX_last) + Math.abs(e.clientY-clientY_last), 100, "Test requires mouse to be moved at least 100 pixels outside of window.");
+	            });
+	        }
+        });
+
+        function updateData() {
+            clientX_init_log.innerHTML = clientX_init;
+            clientY_init_log.innerHTML = clientY_init;
+            clientX_last_log.innerHTML = clientX_last;
+            clientY_last_log.innerHTML = clientY_last;
+            clientX_delta_log.innerHTML = clientX_delta;
+            clientY_delta_log.innerHTML = clientY_delta;
+            movementX_log.innerHTML = movementX;
+            movementY_log.innerHTML = movementY;
+            movementX_sum_log.innerHTML = movementX_sum;
+            movementY_sum_log.innerHTML = movementY_sum;
+        }
+        </script>
+    </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_basic-manual.html b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_basic-manual.html
new file mode 100644
index 0000000..d926318a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_basic-manual.html
@@ -0,0 +1,149 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<meta name='flags' content='interact'>
+<meta name="timeout" content="long">
+<style type="text/css">
+    button {
+        color: blue;
+    }
+
+    #locktarget {
+        position: relative;
+        background-color: grey;
+        width: 50px;
+        color: white;
+        line-height: 30px;
+        height: 30px;
+    }
+
+    #basic-log {
+        margin: 10px 0;
+        color: green;
+    }
+</style>
+</head>
+<body>
+    <h2>Description</h2>
+    <p>This test validates that the pointer properly be locked in a DOM element, and exit afterwards.</p>
+    <hr/>
+
+    <h2>Manual Test Steps:</h2>
+    <p>
+        <ol>
+            <li>Click the "Lock Target" to test if requestPointerLock() and exitPointerLock() causing a pointerlockchange event.</li>
+            <li>Confirm the lock with a user action (in Firefox).</li>
+            <li>Exit the pointer lock with a user action (usually 'esc'), to test if the cursor is at the same location.</li>
+            <li>Click the "ReEnterLock" to test that no engagement gesture is required to reenter pointer lock if pointer lock is exited via exitPointerLock.</li>
+            <li>Exit the pointer lock with a user action (usually 'esc').</li>
+            <li>Click the "RepeatLock" to validate that each requestPointerLock() will fire a pointerlockchange event.</li>
+            <li>Exit the pointer lock with a user action (usually 'esc').</li>
+        </ol>
+    </p>
+    <hr/>
+
+    <button onclick="LockTarget();">Lock Target</button>
+    <button onclick="ReEnterLock();">ReEnter Lock</button>
+    <button onclick="RepeatLock();">Repeat Lock</button>
+    <div id="basic-log">Waiting... Please click the "Lock Target" button.</div>
+    <div id="locktarget">Target</div>
+    <hr/>
+
+    <div id="log"></div>
+
+    <script type="text/javascript" >
+        var locktarget = document.querySelector('#locktarget'),
+            lock_log = document.querySelector('#basic-log');
+
+        var pointerlockchangeIsFiredonRequest = false;
+        var posX = posY = 0;
+        var event_counter = 0;
+        var request_counter = 0;
+
+        var requestPointerLockTest = async_test("Test that the pointer properly be locked in a DOM element.");
+        var exitPointerLockTest = async_test("Test that the pointer lock properly be exited, the cursor is at the same location when exited.");
+        var reenterPointerLockTest = async_test("Test that no engagement gesture is required to reenter pointer lock if pointer lock is exited via exitPointerLock.");
+        var repeatLockPointerTest = async_test("Test validates that each requestPointerLock() will fire a pointerlockchange event.");
+
+        document.addEventListener("pointerlockchange", function() {
+            event_counter ++;
+
+            if(event_counter === 1) {
+                pointerlockchangeIsFiredonRequest = true;
+                runRequestPointerLockTest();
+            } else if(event_counter === 2) {
+                runExitPointerLockTest();
+            } else if(event_counter === 3) {
+                runReEnterPointerLockTest()
+            } else if(event_counter > 104) {
+                runRepeatLockPointerTest();
+            }
+        });
+
+        function runRequestPointerLockTest() {
+            posX = window.screenX;
+            posY = window.screenY;
+
+            requestPointerLockTest.step(function() {
+                assert_true(pointerlockchangeIsFiredonRequest === true, "pointerlockchange is fired when requesting pointerlock");
+                assert_true(document.pointerLockElement === locktarget, "pointer is locked at the target element");
+            });
+
+            lock_log.innerHTML = "Pointer is locked on the target element;";
+
+            requestPointerLockTest.done();
+        }
+
+        function runExitPointerLockTest() {
+            locktarget.requestPointerLock(); // To re-enter pointer lock
+
+            exitPointerLockTest.step(function() {
+                assert_true(document.pointerLockElement === null, "pointer is unlocked");
+                assert_equals(posX, window.screenX, "mouse cursor X is at the same location that it was when pointer lock was entered");
+                assert_equals(posY, window.screenY, "mouse cursor Y is at the same location that it was when pointer lock was entered");
+            });
+
+            lock_log.innerHTML = "Status: Exited pointer lock; Please click the 'Re-enter Lock' button and exit the lock.";
+
+            exitPointerLockTest.done();
+        }
+
+        function runReEnterPointerLockTest() {
+            reenterPointerLockTest.step(function() {
+                assert_true(document.pointerLockElement === locktarget, "Pointer is locked again without engagement gesture");
+            });
+
+            lock_log.innerHTML = "Status: Exited pointer lock; Please click the 'Repeat Lock' button and exit the lock.";
+
+            reenterPointerLockTest.done();
+        }
+
+        function runRepeatLockPointerTest() {
+            repeatLockPointerTest.step(function() {
+                assert_equals(request_counter + 5, event_counter, "Each requestPointerLock() will fire a pointerlockchange event");
+            });
+
+            lock_log.innerHTML = "Status: Test over.";
+
+            repeatLockPointerTest.done();
+        }
+
+        function LockTarget() {
+            locktarget.requestPointerLock();
+        }
+
+        function ReEnterLock() {
+            locktarget.requestPointerLock();
+        }
+
+        function RepeatLock() {
+            for(var i = 0; i < 100; i++) {
+                request_counter++;
+                locktarget.requestPointerLock();
+            }
+        }
+        </script>
+    </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_fullscreen-manual.html b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_fullscreen-manual.html
new file mode 100644
index 0000000..7ce91ad
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_fullscreen-manual.html
@@ -0,0 +1,173 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<meta name='flags' content='interact'>
+<meta name="timeout" content="long">
+<style type="text/css">
+    button {
+        color: blue;
+    }
+
+    #test-element-wrap {
+        position: relative;
+        background-color: lightgrey;
+        width: 400px;
+        height: 200px;
+        border: grey 1px solid;
+    }
+
+    #test-element {
+        position: relative;
+        background-color: lightyellow;
+        width: 100px;
+        height: 30px;
+        border: yellow 1px solid;
+    }
+
+    #status-log {
+        margin: 10px 0;
+        color: green;
+    }
+</style>
+</head>
+<body>
+    <h2>Description</h2>
+    <p>This test validates that pointer lock won't be exited when fullscreen is entered or exited, unless fullscreen is exited with the same user gesture as pointer lock.</p>
+    <hr/>
+
+    <h2>Manual Test Steps:</h2>
+    <p>
+        <ol>
+            <li>Click the "scriptExitFullscreen" button.</li>
+            <li>If the exitFullscreen doesn't work, use the menu (or any other interaction except for the "esc" key) to exit fullscreen.</li>
+            <li>First test case done.</li>
+            <li>Click the "gestureExitFullscreen" button.</li>
+            <li>Use the "esc" key to exit fullscreen.</li>
+            <li>Second test case done.</li>
+        </ol>
+    </p>
+    <hr/>
+
+    <button onclick="scriptExitFullscreen();">scriptExitFullscreen</button>
+    <button onclick="gestureExitFullscreen();">gestureExitFullscreen</button>
+
+    <div id="test-element-wrap">
+        <div id="status-log">Waiting... Please click the "scriptExitFullscreen" button.</div>
+        <div id="test-element">Target</div>
+    </div>
+    <hr/>
+
+    <div id="log"></div>
+
+    <script type="text/javascript" >
+        var test_element = document.querySelector('#test-element'),
+            test_element_wrap = document.querySelector('#test-element-wrap')
+            status_log = document.querySelector('#status-log');
+        var enable_gestureExitFullscreen = false;
+        var gestureExit_pl = false;
+        var gestureExit_fs = false;
+        var gestureLock = false;
+
+        var scriptExitFullscreenTest = async_test("Test that pointer lock won't be exited when fullscreen is entered or exited with script.");
+        var gestureExitFullscreenTest = async_test("Test that pointer lock is exited when fullscreen is entered or exited with the same user gesture.");
+
+    function RequestFullscreen(element) {
+        var requestFullscreen = element.requestFullscreen || element.webkitRequestFullscreen || element.mozRequestFullscreen || element.msRequestFullscreen;
+        requestFullscreen.call(element);
+    }
+
+    function ExitFullscreen() {
+        var exitFullscreen = document.exitFullscreen || document.webkitExitFullscreen || document.mozExitFullscreen || document.msExitFullscreen;
+        exitFullscreen.call(document);
+    }
+
+    function FullscreenElement() {
+        var fullscreenElement = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullscreenElement || document.msFullscreenElement;
+        return fullscreenElement ? fullscreenElement : null;
+    }
+
+    document.addEventListener("pointerlockchange", function() {
+        if(!enable_gestureExitFullscreen) {
+            // first test, enable fullscreen and pointer lock
+            if(document.pointerLockElement) {
+                ExitFullscreen();
+                logStatus();
+
+                scriptExitFullscreenTest.step(function() {
+                    assert_true(FullscreenElement() === null, "fullscreen is sucessfully exited");
+                    assert_true(document.pointerLockElement === test_element, "pointer is still locked at the target element");
+                });
+                scriptExitFullscreenTest.done();
+                document.exitPointerLock();
+            } else{
+            // first test, fullscreen and pointer lock are exited
+                enable_gestureExitFullscreen = true;
+            }
+        } else {
+            gestureLock = true;
+            if(!document.pointerLockElement) {
+            // second test, pointer lock exited
+                gestureExit_pl = true;
+
+                if(gestureExit_fs) {
+                // second test, fullscreen and pointer lock both exited
+                    gestureExitFullscreenTest.step(function() {
+                        assert_true(document.pointerLockElement === null, "pointer is sucessfully exited");
+                        assert_true(FullscreenElement() === null, "fullscreen is sucessfully exited");
+                });
+                gestureExitFullscreenTest.done();
+                }
+            }
+        }
+    });
+
+    document.addEventListener("fullscreenchange", fullscreenChangeHandler);
+
+    document.addEventListener("webkitfullscreenchange",fullscreenChangeHandler);
+
+    function fullscreenChangeHandler() {
+        if(enable_gestureExitFullscreen && gestureLock && !FullscreenElement()) {
+            if(gestureExit_pl) {
+            // second test, fullscreen and pointer lock both exited
+                gestureExitFullscreenTest.step(function() {
+                    assert_true(document.pointerLockElement === null, "pointer is sucessfully exited");
+                    assert_true(FullscreenElement() === null, "fullscreen is sucessfully exited");
+                });
+
+            gestureExitFullscreenTest.done();
+        } else {
+                gestureExit_fs = true;
+            }
+        }
+    }
+
+        function logStatus() {
+            var status = "";
+            if(document.pointerLockElement) {
+                status = "<p>Pointer is Locked.</p>"
+            } else {
+                status = "<p>Pointer Lock exited.</p>"
+            }
+            if(FullscreenElement()) {
+                status += "<p>Fullscreen is on now.</p>"
+            } else {
+                status += "<p>Fullscreen exited.</p>"
+            }
+
+            status_log.innerHTML = status;
+        }
+
+        function scriptExitFullscreen() {
+            test_element.requestPointerLock();
+            RequestFullscreen(test_element_wrap);
+        }
+
+        function gestureExitFullscreen() {
+            RequestFullscreen(test_element_wrap);
+            test_element.requestPointerLock();
+        }
+        </script>
+    </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_indefinite-manual.html b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_indefinite-manual.html
new file mode 100644
index 0000000..0db1227a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_indefinite-manual.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<meta name='flags' content='interact'>
+<meta name="timeout" content="long">
+<style type="text/css">
+    button {
+        color: blue;
+    }
+
+    #target-wrap {
+        position: relative;
+        background-color: lightgrey;
+        width: 400px;
+        height: 150px;
+        border: grey 1px solid;
+    }
+
+    #target-wrap span, #status-log {
+        color: green;
+    }
+</style>
+</head>
+<body>
+    <h2>Description</h2>
+    <p>This test validates that movementX/Y provided indefinitely even when the mouse cursor would have otherwise hit the edge of a screen.</p>
+    <hr/>
+
+    <h2>Manual Test Steps:</h2>
+    <p>
+        <ol>
+            <li>Click the "lockTarget" button to request a pointer lock.</li>
+            <li>Move the pointer constantly in a diagonal direction (e.g. up and right).</li>
+            <li>Test is done.</li>
+        </ol>
+    </p>
+    <hr/>
+
+    <button onclick="lockTarget();">lockTarget</button>
+
+    <div id="target-wrap">
+        <div id="status-log">Click the "lockTarget" button.</div>
+        <p>screenSize: <span id="screenSize-log">NaN</span></p>
+        <p>movementX_sum: <span id="movementX_sum-log">NaN</span></p>
+        <p>movementY_sum: <span id="movementY_sum-log">NaN</span></p>
+    </div>
+    <hr/>
+
+    <div id="log"></div>
+
+    <script type="text/javascript" >
+        var screenSize_log = document.querySelector('#screenSize-log'),
+            movementX_sum_log = document.querySelector('#movementX_sum-log'),
+            movementY_sum_log = document.querySelector('#movementY_sum-log'),
+            status_log = document.querySelector('#status-log'),
+            target = document.querySelector('#target-wrap');
+        var movementX_sum = 0,
+            movementY_sum = 0;
+        var screenWidth = screen.width,
+            screenHeight = screen.height;
+
+        var enable_logging = false;
+
+        screenSize_log.innerHTML = "width: " + screenWidth + " px, " + "height: " + screenHeight + " px"
+
+        var movementXYIndefiniteTest = async_test("Test that movementX/Y provided indefinitely even when the mouse cursor would have otherwise hit the edge of a screen.");
+
+    document.addEventListener("pointerlockchange", function() {
+        if(document.pointerLockElement) {
+            status_log.innerHTML = "Keep moving...";
+            enable_logging = true;
+        }
+    });
+
+    document.addEventListener("mousemove", function (e) {
+        if(enable_logging) {
+            movementX_sum += Math.abs(e.movementX);
+            movementY_sum += Math.abs(e.movementY);
+
+            movementX_sum_log.innerHTML = movementX_sum + "px";
+            movementY_sum_log.innerHTML = movementY_sum + "px";
+
+            if(movementX_sum > 2 * screen.width && movementY_sum > 2 * screen.height) {
+                movementXYIndefiniteTest.step(function() {
+                    assert_greater_than(movementX_sum, 2 * screenWidth, "Sum of movementX is greater than 2 times of screen width");
+                    assert_greater_than(movementY_sum, 2 * screenHeight, "Sum of movementY is greater than 2 times of screen height");
+                });
+
+                movementXYIndefiniteTest.done();
+
+                status_log.innerHTML = "Test succeeds...";
+
+                enable_logging = false;
+
+                document.exitPointerLock();
+            }
+        }
+        });
+
+    function lockTarget() {
+        target.requestPointerLock();
+    }
+    </script>
+    </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_leave_Tab-manual.html b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_leave_Tab-manual.html
new file mode 100644
index 0000000..198e2fe
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_leave_Tab-manual.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<meta name='flags' content='interact'>
+<meta name="timeout" content="long">
+<style type="text/css">
+    button {
+        color: blue;
+    }
+
+    #target-wrap {
+        position: relative;
+        background-color: lightgrey;
+        width: 200px;
+        height: 100px;
+        border: grey 1px solid;
+    }
+
+    #target {
+        position: relative;
+        background-color: lightyellow;
+        width: 100px;
+        height: 30px;
+        border: yellow 1px solid;
+    }
+
+    #status-log {
+        margin: 10px 0;
+        color: green;
+    }
+</style>
+</head>
+<body>
+    <h2>Description</h2>
+    <p>This test validates that pointer lock will be lost the user agent / window loses focus.</p>
+    <hr/>
+
+    <h2>Manual Test Steps:</h2>
+    <p>
+        <ol>
+            <li>Click the "lockTarget" button to request a pointer lock.</li>
+            <li>Focus to another tab with keyboard (Ctrl-TAB).</li>
+            <li>Test is done.</li>
+        </ol>
+    </p>
+    <hr/>
+
+    <button onclick="lockTarget();">lockTarget</button>
+
+    <div id="target-wrap">
+        <div id="status-log">Click the "lockTarget" button.</div>
+        <div id="target">Target</div>
+    </div>
+    <hr/>
+
+    <div id="log"></div>
+
+    <script type="text/javascript" >
+        var target = document.querySelector('#target'),
+            status_log = document.querySelector('#status-log');
+
+        var leaveTabTest = async_test("Test that pointer lock will be lost when the current Tab loses focus.");
+
+    document.addEventListener("pointerlockchange", function() {
+        if(document.pointerLockElement) {
+            status_log.innerHTML = "Please leave the current tab.";
+        } else {
+            status_log.innerHTML = "Pointer lock exited!";
+
+            leaveTabTest.step(function() {
+                assert_true(document.pointerLockElement === null, "Pointer lock exited!");
+            });
+
+            leaveTabTest.done();
+        }
+    });
+
+    function lockTarget() {
+        target.requestPointerLock();
+    }
+    </script>
+    </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_leave_UA-manual.html b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_leave_UA-manual.html
new file mode 100644
index 0000000..e1440084
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_leave_UA-manual.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<meta name='flags' content='interact'>
+<meta name="timeout" content="long">
+<style type="text/css">
+    button {
+        color: blue;
+    }
+
+    #target-wrap {
+        position: relative;
+        background-color: lightgrey;
+        width: 200px;
+        height: 100px;
+        border: grey 1px solid;
+    }
+
+    #target {
+        position: relative;
+        background-color: lightyellow;
+        width: 100px;
+        height: 30px;
+        border: yellow 1px solid;
+    }
+
+    #status-log {
+        margin: 10px 0;
+        color: green;
+    }
+</style>
+</head>
+<body>
+    <h2>Description</h2>
+    <p>This test validates that pointer lock will be lost the user agent / window loses focus.</p>
+    <hr/>
+
+    <h2>Manual Test Steps:</h2>
+    <p>
+        <ol>
+            <li>Click the "lockTarget" button to request a pointer lock.</li>
+            <li>Focus to another window with keyboard (ALT-TAB).</li>
+            <li>Test is done.</li>
+        </ol>
+    </p>
+    <hr/>
+
+    <button onclick="lockTarget();">lockTarget</button>
+
+    <div id="target-wrap">
+        <div id="status-log">Click the "lockTarget" button.</div>
+        <div id="target">Target</div>
+    </div>
+    <hr/>
+
+    <div id="log"></div>
+
+    <script type="text/javascript" >
+        var target = document.querySelector('#target'),
+            status_log = document.querySelector('#status-log');
+
+        var leaveUATest = async_test("Test that pointer lock will be lost when the user agent / window loses focus.");
+
+    document.addEventListener("pointerlockchange", function() {
+        if(document.pointerLockElement) {
+            status_log.innerHTML = "Please leave the current window.";
+        } else {
+            status_log.innerHTML = "Pointer lock exited!";
+
+            leaveUATest.step(function() {
+                assert_true(document.pointerLockElement === null, "Pointer lock exited!");
+            });
+
+            leaveUATest.done();
+        }
+    });
+
+    function lockTarget() {
+        target.requestPointerLock();
+    }
+    </script>
+    </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_remove_target-manual.html b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_remove_target-manual.html
new file mode 100644
index 0000000..2103650
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_remove_target-manual.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<meta name='flags' content='interact'>
+<meta name="timeout" content="long">
+<style type="text/css">
+    button {
+        color: blue;
+    }
+
+    #target-wrap {
+        position: relative;
+        background-color: lightgrey;
+        width: 200px;
+        height: 100px;
+        border: grey 1px solid;
+    }
+
+    #target {
+        position: relative;
+        background-color: lightyellow;
+        width: 100px;
+        height: 30px;
+        border: yellow 1px solid;
+    }
+
+    #status-log {
+        margin: 10px 0;
+        color: green;
+    }
+</style>
+</head>
+<body>
+    <h2>Description</h2>
+    <p>This test validates that pointer lock will be lost when the target is disconnected.</p>
+    <hr/>
+
+    <h2>Manual Test Steps:</h2>
+    <p>
+        <ol>
+            <li>Click the "lockTarget" button to request a pointer lock.</li>
+            <li>Test is done.</li>
+        </ol>
+    </p>
+    <hr/>
+
+    <button onclick="lockTarget();">lockTarget</button>
+
+    <div id="target-wrap">
+        <div id="status-log">Click the "lockTarget" button.</div>
+        <div id="target">Target</div>
+    </div>
+    <hr/>
+
+    <div id="log"></div>
+
+    <script type="text/javascript" >
+        var target = document.querySelector('#target'),
+            target_wrap = document.querySelector('#target-wrap')
+            status_log = document.querySelector('#status-log');
+
+        var removeTargetTest = async_test("Test that pointer lock will be lost when taking the target element out of the DOM.");
+
+    document.addEventListener("pointerlockchange", function() {
+        if(document.pointerLockElement) {
+            status_log.innerHTML = "Target is locked!";
+
+            target_wrap.removeChild(target);
+        } else {
+            status_log.innerHTML = "Pointer lock exited!";
+
+            removeTargetTest.step(function() {
+                assert_true(document.pointerLockElement === null, "Pointer lock exited!");
+            });
+
+            removeTargetTest.done();
+        }
+    });
+
+    function lockTarget() {
+        target.requestPointerLock();
+    }
+    </script>
+    </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_shadow-manual.html b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_shadow-manual.html
new file mode 100644
index 0000000..8e70915b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/pointerlock/pointerlock_shadow-manual.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name='author' title='Takayoshi Kochi' href='mailto:kochi@chromium.org'>
+<meta name='assert' content='Test for DocumentOrShadowRoot.pointerLockElement.'>
+<link rel='help' href='https://w3c.github.io/pointerlock/#widl-DocumentOrShadowRoot-pointerLockElement'>
+<meta name='flags' content='interact'>
+<meta name='timeout' content='long'>
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src='../shadow-dom/resources/shadow-dom.js'></script>
+</head>
+<body>
+<div id='host'>
+  <template data-mode='open' id='root'>
+    <slot></slot>
+  </template>
+  <div id='host2'>
+    <template data-mode='open' id='root2'>
+      <div id='host3'>
+        <template data-mode='open' id='root3'>
+          <canvas id='canvas'></canvas>
+          <div id='host4'>
+            <template data-mode='open' id='root4'>
+              <div></div>
+            </template>
+          </div>
+        </template>
+      </div>
+      <div id='host5'>
+        <template data-mode='open' id='root5'>
+          <div></div>
+        </template>
+      </div>
+    </template>
+  </div>
+</div>
+
+<script>
+function run_test() {
+    async_test((test) => {
+        document.onpointerlockerror = test.unreached_func('onpointerlockerror is not expected.');
+
+        document.onpointerlockchange = test.step_func(() => {
+            // Not interested in handling before or after exitPointerLock.
+            if (document.pointerLockElement === null)
+                return;
+
+            assert_equals(document.pointerLockElement, ids.host2, 'document.pointerLockElement should be shadow #host2.');
+            assert_equals(ids.root.pointerLockElement, null, '#root\'s shadowRoot.pointerLockElement should be null.');
+            assert_equals(ids.root2.pointerLockElement, ids.host3, '#root2\'s shadowRoot.pointerLockElement should be host3.');
+            assert_equals(ids.root3.pointerLockElement, ids.canvas, '#root3\'s shadowRoot.pointerLockElement should be canvas element.');
+            assert_equals(ids.root4.pointerLockElement, null, '#root4\'s shadowRoot.pointerLockElement should be null.');
+            assert_equals(ids.root5.pointerLockElement, null, '#root5\'s shadowRoot.pointerLockElement should be null.');
+
+            document.exitPointerLock();
+            test.done();
+        });
+
+        var ids = createTestTree(host);
+        document.body.appendChild(ids.host);
+
+        // All pointerLockElement should default to null.
+        test.step(() => {
+            assert_equals(document.pointerLockElement, null);
+            assert_equals(ids.root.pointerLockElement, null);
+            assert_equals(ids.root2.pointerLockElement, null);
+            assert_equals(ids.root3.pointerLockElement, null);
+            assert_equals(ids.root4.pointerLockElement, null);
+            assert_equals(ids.root5.pointerLockElement, null);
+        });
+
+        var canvas = ids.canvas;
+        canvas.requestPointerLock();
+    }, 'Test for pointerLockElement adjustment for Shadow DOM.');
+}
+</script>
+<div>
+  <h2>Description</h2>
+  <p>Click the button below to trigger pointer lock on an element in a shadow root.</p>
+  <button onclick="run_test()">Click Me!</button>
+</div>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/progress-events/Status.html b/third_party/WebKit/LayoutTests/external/wpt/progress-events/Status.html
new file mode 100644
index 0000000..f2aee75
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/progress-events/Status.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html>
+<head>
+ <title>Progress Events Test Status</title>
+</head>
+<body>
+
+<h2>Progress Events Test Suite Status</h2>
+
+<p>This test suite is part of the 
+<a href="http://www.w3.org/2008/webapps/wiki/">Web Application WG's</a> 
+Test Repository as described in WebApps' 
+<a href="http://www.w3.org/2008/webapps/wiki/Testing">Testing Wiki</a>.
+</p>
+
+<p>The test suite is for the 
+<a href="http://dev.w3.org/2006/webapi/progress/">Progress Events</a> specification.
+</p>
+
+<ul>
+ <li>Test suite status: The group has reviewed and approved all tests in the approved folder.</li>
+ <li>Test suite Facilitator: Jungkee Song</li>
+</ul>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/progress-events/constructor.html b/third_party/WebKit/LayoutTests/external/wpt/progress-events/constructor.html
new file mode 100644
index 0000000..19d77f94
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/progress-events/constructor.html
@@ -0,0 +1,47 @@
+<!doctype html>
+<title>ProgressEvent constructor</title>
+<link rel="help" href="https://www.w3.org/TR/progress-events/#interface-progressevent">
+<link rel="help" href="https://dom.spec.whatwg.org/#concept-event-constructor">
+<link rel="help" href="https://dom.spec.whatwg.org/#interface-event">
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id=log></div>
+<script>
+test(function() {
+  var ev = new ProgressEvent("test")
+  assert_equals(ev.type, "test")
+  assert_equals(ev.target, null)
+  assert_equals(ev.currentTarget, null)
+  assert_equals(ev.eventPhase, Event.NONE)
+  assert_equals(ev.bubbles, false)
+  assert_equals(ev.cancelable, false)
+  assert_equals(ev.defaultPrevented, false)
+  assert_equals(ev.isTrusted, false)
+  assert_true(ev.timeStamp > 0)
+  assert_true("initEvent" in ev)
+  assert_equals(ev.lengthComputable, false)
+  assert_equals(ev.loaded, 0)
+  assert_equals(ev.total, 0)
+}, "Default event values.")
+test(function() {
+  var ev = new ProgressEvent("test")
+  assert_equals(ev["initProgressEvent"], undefined)
+}, "There must not be a initProgressEvent().")
+test(function() {
+  var ev = new ProgressEvent("I am an event", { type: "trololol", bubbles: true, cancelable: false})
+  assert_equals(ev.type, "I am an event")
+  assert_equals(ev.bubbles, true)
+  assert_equals(ev.cancelable, false)
+}, "Basic test.")
+test(function() {
+  var ev = new ProgressEvent(null, { lengthComputable: "hah", loaded: "2" })
+  assert_equals(ev.type, "null")
+  assert_equals(ev.lengthComputable, true)
+  assert_equals(ev.loaded, 2)
+}, "ECMAScript value conversion test.")
+test(function() {
+  var ev = new ProgressEvent("Xx", { lengthcomputable: true})
+  assert_equals(ev.type, "Xx")
+  assert_equals(ev.lengthComputable, false)
+}, "ProgressEventInit members must be matched case-sensitively.")
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/progress-events/interface.html b/third_party/WebKit/LayoutTests/external/wpt/progress-events/interface.html
new file mode 100644
index 0000000..850d1b23
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/progress-events/interface.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<title>The ProgressEvent interface</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+test(function() {
+  assert_equals(typeof ProgressEvent, "function")
+  assert_equals(ProgressEvent.length, 1)
+})
+test(function() {
+  var desc = Object.getOwnPropertyDescriptor(ProgressEvent, "prototype")
+  assert_equals(desc.value, ProgressEvent.prototype)
+  assert_equals(desc.writable, false)
+  assert_equals(desc.enumerable, false)
+  assert_equals(desc.configurable, false)
+  assert_throws(new TypeError(), function() {
+    "use strict";
+    delete ProgressEvent.prototype;
+  })
+  assert_equals(ProgressEvent.prototype.constructor, ProgressEvent)
+  assert_equals(Object.getPrototypeOf(ProgressEvent.prototype), Event.prototype)
+}, "interface prototype object")
+var attributes = [
+  ["boolean", "lengthComputable"],
+  ["unsigned long long", "loaded"],
+  ["unsigned long long", "total"]
+];
+attributes.forEach(function(a) {
+  test(function() {
+    var desc = Object.getOwnPropertyDescriptor(ProgressEvent.prototype, a[1])
+    assert_equals(desc.enumerable, true)
+    assert_equals(desc.configurable, true)
+    assert_throws(new TypeError(), function() {
+      ProgressEvent.prototype[a[1]]
+    })
+  })
+})
+test(function() {
+  for (var p in window) {
+    assert_not_equals(p, "ProgressEvent")
+  }
+}, "Interface objects properties should not be Enumerable")
+test(function() {
+  assert_true(!!window.ProgressEvent, "Interface should exist.")
+  assert_true(delete window.ProgressEvent, "The delete operator should return true.")
+  assert_equals(window.ProgressEvent, undefined, "Interface should be gone.")
+}, "Should be able to delete ProgressEvent.")
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/progress-events/tests/submissions/Samsung/firing-events-http-content-length.html b/third_party/WebKit/LayoutTests/external/wpt/progress-events/tests/submissions/Samsung/firing-events-http-content-length.html
new file mode 100644
index 0000000..d897a71
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/progress-events/tests/submissions/Samsung/firing-events-http-content-length.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html>
+  <head>
+    <title>ProgressEvent: firing events for HTTP with Content-Length</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <link rel="help" href="http://dvcs.w3.org/hg/progress/raw-file/tip/Overview.html#firing-events-using-the-progressevent-interface-for-http" data-tested-assertations="/following-sibling::ol/li[1] /following-sibling::ol/li[2]" />
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test();
+
+      test.step(function() {
+        var xhr = new XMLHttpRequest();
+
+        xhr.onprogress = function(pe) {
+          test.step(function() {
+            if(pe.type == "progress") {
+              assert_true(pe.loaded >= 0, "loaded is initialize to the number of HTTP entity body bytes transferred.");
+              assert_true(pe.lengthComputable, "lengthComputable is true.");
+              assert_not_equals(pe.total, 0, "total is not zero.");
+            }
+          }, "Check lengthComputed, loaded, total when Content-Length is given.");
+        }
+
+        // "loadstart", "error", "abort", "load" tests are out of scope.
+        // They SHOULD be tested in each spec that implement ProgressEvent.
+        
+        xhr.onloadend = function(pe) {
+          test.done();
+        }
+        xhr.open("GET", "resources/img.jpg", true);
+        xhr.send(null);
+      })
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/progress-events/tests/submissions/Samsung/firing-events-http-no-content-length.html b/third_party/WebKit/LayoutTests/external/wpt/progress-events/tests/submissions/Samsung/firing-events-http-no-content-length.html
new file mode 100644
index 0000000..b30b03af
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/progress-events/tests/submissions/Samsung/firing-events-http-no-content-length.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html>
+  <head>
+    <title>ProgressEvent: firing events for HTTP with no Content-Length</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <link rel="help" href="http://dvcs.w3.org/hg/progress/raw-file/tip/Overview.html#firing-events-using-the-progressevent-interface-for-http" data-tested-assertations="/following-sibling::ol/li[1] /following-sibling::ol/li[2]" />
+  </head>
+  <body>
+    <div id="log"></div>
+    <script>
+      var test = async_test();
+
+      test.step(function() {
+        var xhr = new XMLHttpRequest();
+
+        xhr.onprogress = function(pe) {
+          test.step(function() {
+            if(pe.type == "progress") {
+              assert_true(pe.loaded >= 0, "loaded is initialize to the number of HTTP entity body bytes transferred.");
+              assert_false(pe.lengthComputable, "lengthComputable is false.");
+              assert_equals(pe.total, 0, "total is zero.");
+            }
+          }, "Check lengthComputed, loaded, total when Content-Length is NOT given.");
+        }
+
+        // "loadstart", "error", "abort", "load" tests are out of scope.
+        // They SHOULD be tested in each spec that implement ProgressEvent.
+
+        xhr.onloadend = function(pe) {
+          test.done();
+        }
+        xhr.open("GET", "resources/no-content-length.py", true);
+        xhr.send(null);
+      })
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/progress-events/tests/submissions/Samsung/resources/no-content-length.py b/third_party/WebKit/LayoutTests/external/wpt/progress-events/tests/submissions/Samsung/resources/no-content-length.py
new file mode 100644
index 0000000..0b47ff1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/progress-events/tests/submissions/Samsung/resources/no-content-length.py
@@ -0,0 +1,15 @@
+def main(request, response):
+    response.headers.update([('Transfer-Encoding', 'chunked'),
+                             ('Content-Type', 'text/html'),
+                             ('Connection', 'keep-alive')])
+    response.write_status_headers()
+    response.explicit_flush = True
+
+    string = "W3C"
+    for i in xrange(1000):
+        response.writer.write("%s\r\n%s\r\n" % (len(string), string))
+        response.writer.flush();
+
+    response.writer.write("0\r\n\r\n")
+    response.writer.flush();
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-dedicated-worker.html b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-dedicated-worker.html
new file mode 100644
index 0000000..737f31b1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-dedicated-worker.html
@@ -0,0 +1,83 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset=utf-8>
+    <title>Test WorkerGlobalScope.isSecureContext for HTTP creator</title>
+    <meta name="help" href="https://w3c.github.io/webappsec-secure-contexts/#monkey-patching-global-object">
+    <script src=/resources/testharness.js></script>
+    <script src=/resources/testharnessreport.js></script>
+    <script src="server-locations.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      var t1 = async_test("HTTP worker");
+      var t2 = async_test("HTTPS worker");
+      var t3 = async_test("HTTP nested worker");
+      var t4 = async_test("HTTPS nested worker");
+      var t5 = async_test("HTTP worker from HTTPS subframe");
+      var t6 = async_test("HTTPS worker from HTTPS subframe");
+
+      var w1 = new Worker(http_dir + "support/dedicated-worker-script.js");
+      w1.onmessage = t1.step_func_done(function(e) {
+        assert_false(e.data);
+      });
+      w1.onerror = t1.step_func_done(function(e) {
+        assert_unreached("isSecureContext should be supported");
+      });
+
+      var w2 = new Worker(https_dir + "support/dedicated-worker-script.js");
+      w2.onmessage = t2.step_func_done(function(e) {
+        assert_unreached("cross-origin workers should not be loaded");
+      });
+      w2.onerror = t2.step_func_done(function(e) {
+        e.preventDefault();
+      });
+
+      var w3 = new Worker(http_dir + "support/parent-dedicated-worker-script.js");
+      w3.onmessage = t3.step_func_done(function(e) {
+        assert_false(e.data);
+      });
+      w3.onerror = t3.step_func_done(function(e) {
+        assert_unreached("isSecureContext should be supported");
+      });
+
+      var w4 = new Worker(https_dir + "support/parent-dedicated-worker-script.js");
+      w4.onmessage = t4.step_func_done(function(e) {
+        assert_unreached("cross-origin workers should not be loaded");
+      });
+      w4.onerror = t4.step_func_done(function(e) {
+        e.preventDefault();
+      });
+
+      onmessage = function(e) {
+        var data = e.data;
+        if (data.type == "http") {
+          t5.step(function() {
+            assert_true(data.error);
+          });
+          t5.done();
+        } else if (data.type == "https") {
+          t6.step(function() {
+            assert_false(data.error);
+            assert_false(data.isSecureContext);
+          });
+          t6.done();
+        } else {
+          t5.step(function() {
+            assert_unreached("Unknown message");
+          });
+          t5.done();
+          t6.step(function() {
+            assert_unreached("Unknown message");
+          });
+          t6.done();
+        }
+      }
+
+      var ifr = document.createElement("iframe");
+      ifr.src = https_dir + "support/https-subframe-dedicated.html";
+      document.body.appendChild(ifr);
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-dedicated-worker.https.html b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-dedicated-worker.https.html
new file mode 100644
index 0000000..012c7b1d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-dedicated-worker.https.html
@@ -0,0 +1,83 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset=utf-8>
+    <title>Test WorkerGlobalScope.isSecureContext for HTTPS creator</title>
+    <meta name="help" href="https://w3c.github.io/webappsec-secure-contexts/#monkey-patching-global-object">
+    <script src=/resources/testharness.js></script>
+    <script src=/resources/testharnessreport.js></script>
+    <script src="server-locations.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      var t1 = async_test("HTTP worker");
+      var t2 = async_test("HTTPS worker");
+      var t3 = async_test("HTTP nested worker");
+      var t4 = async_test("HTTPS nested worker");
+      var t5 = async_test("HTTP worker from HTTPS subframe");
+      var t6 = async_test("HTTPS worker from HTTPS subframe");
+
+      var w1 = new Worker(http_dir + "support/dedicated-worker-script.js");
+      w1.onmessage = t1.step_func_done(function(e) {
+        assert_unreached("cross-origin workers should not be loaded");
+      });
+      w1.onerror = t1.step_func_done(function(e) {
+        e.preventDefault();
+      });
+
+      var w2 = new Worker(https_dir + "support/dedicated-worker-script.js");
+      w2.onmessage = t2.step_func_done(function(e) {
+        assert_true(e.data);
+      });
+      w2.onerror = t2.step_func_done(function(e) {
+        assert_unreached("isSecureContext should be supported");
+      });
+
+      var w3 = new Worker(http_dir + "support/parent-dedicated-worker-script.js");
+      w3.onmessage = t3.step_func_done(function(e) {
+        assert_unreached("cross-origin workers should not be loaded");
+      });
+      w3.onerror = t3.step_func_done(function(e) {
+        e.preventDefault();
+      });
+
+      var w4 = new Worker(https_dir + "support/parent-dedicated-worker-script.js");
+      w4.onmessage = t4.step_func_done(function(e) {
+        assert_true(e.data);
+      });
+      w4.onerror = t4.step_func_done(function(e) {
+        assert_unreached("isSecureContext should be supported");
+      });
+
+      onmessage = function(e) {
+        var data = e.data;
+        if (data.type == "http") {
+          t5.step(function() {
+            assert_true(data.error);
+          });
+          t5.done();
+        } else if (data.type == "https") {
+          t6.step(function() {
+            assert_false(data.error);
+            assert_true(data.isSecureContext);
+          });
+          t6.done();
+        } else {
+          t5.step(function() {
+            assert_unreached("Unknown message");
+          });
+          t5.done();
+          t6.step(function() {
+            assert_unreached("Unknown message");
+          });
+          t6.done();
+        }
+      }
+
+      var ifr = document.createElement("iframe");
+      ifr.src = https_dir + "support/https-subframe-dedicated.html";
+      document.body.appendChild(ifr);
+    </script>
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-popup-and-iframe-tests.html b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-popup-and-iframe-tests.html
new file mode 100644
index 0000000..ab3c443
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-popup-and-iframe-tests.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset=utf-8>
+    <title>Test Window.isSecureContext for HTTP creator</title>
+    <meta name="help" href="https://w3c.github.io/webappsec-secure-contexts/#monkey-patching-global-object">
+    <meta name="author" title="Jonathan Watt" href="https://jwatt.org/">
+    <script src=/resources/testharness.js></script>
+    <script src=/resources/testharnessreport.js></script>
+    <script src="server-locations.sub.js"></script>
+    <script>
+
+// This file is the equivasent of the https version, but rather than
+// having a copy of its script file we figure out the URI of the script on the
+// https server and load it here.
+let script = document.createElement("script");
+script.setAttribute("src", https_dir + "basic-popup-and-iframe-tests.https.js");
+document.head.appendChild(script);
+
+    </script>
+  </head>
+  <body onload="begin();">
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-popup-and-iframe-tests.https.html b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-popup-and-iframe-tests.https.html
new file mode 100644
index 0000000..a9c7f3c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-popup-and-iframe-tests.https.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset=utf-8>
+    <title>Test Window.isSecureContext for HTTPS creator</title>
+    <meta name="help" href="https://w3c.github.io/webappsec-secure-contexts/#monkey-patching-global-object">
+    <meta name="author" title="Jonathan Watt" href="https://jwatt.org/">
+    <script src=/resources/testharness.js></script>
+    <script src=/resources/testharnessreport.js></script>
+    <script src="server-locations.sub.js"></script>
+    <script src="basic-popup-and-iframe-tests.https.js"></script>
+  </head>
+  <body onload="begin();">
+  </body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-popup-and-iframe-tests.https.js b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-popup-and-iframe-tests.https.js
new file mode 100644
index 0000000..93b5e2b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-popup-and-iframe-tests.https.js
@@ -0,0 +1,279 @@
+
+/**
+ * This test checks the Secure Context state of documents for various
+ * permutations of document URI types and loading methods.
+ *
+ * The hierarchy that is tested is:
+ *
+ *   creator-doc > createe-doc
+ *
+ * The creator-doc is one of:
+ *
+ *   http:
+ *   https:
+ *
+ * The createe-doc is loaded as either a:
+ *
+ *   popup
+ *   iframe
+ *   sandboxed-iframe
+ *
+ * into which we load and test:
+ *
+ *   http:
+ *   https:
+ *   blob:
+ *   javascript:
+ *   about:blank
+ *   initial about:blank
+ *   srcdoc
+ *
+ * TODO once web-platform-tests supports it:
+ *   - test http://localhost
+ *   - test file:
+ *
+ * TODO once https://github.com/w3c/webappsec-secure-contexts/issues/26 is resolved
+ *   - test data:
+ */
+
+
+setup({explicit_done:true});
+
+
+const host_and_dirname = location.host +
+                         location.pathname.substr(0, location.pathname.lastIndexOf("/") + 1);
+
+
+// Flags to indicate where document types should be loaded for testing:
+const eLoadInPopup             = (1 << 0);
+const eLoadInUnsandboxedIframe = (1 << 1);
+const eLoadInSandboxedIframe   = (1 << 2);
+const eLoadInEverything        = eLoadInPopup | eLoadInUnsandboxedIframe | eLoadInSandboxedIframe;
+
+// Flags indicating if a document type is expected to be a Secure Context:
+const eSecureNo              = 1;
+const eSecureIfCreatorSecure = 2;
+
+// Flags indicating how the result of a test is obtained:
+const eResultFromPostMessage       = 1;
+const eResultFromExaminationOnLoad = 2;
+const eResultFromExaminationSync   = 3;
+
+
+const loadTypes = [
+  new LoadType("an http: URI",
+               eLoadInEverything,
+               http_dir + "postMessage-helper.html",
+               eSecureNo,
+               eResultFromPostMessage),
+  new LoadType("an https: URI",
+               eLoadInEverything,
+               https_dir + "postMessage-helper.https.html",
+               eSecureIfCreatorSecure,
+               eResultFromPostMessage),
+  new LoadType("a blob: URI",
+               eLoadInEverything,
+               URL.createObjectURL(new Blob(["<script>(opener||parent).postMessage(isSecureContext, '*')</script>"])),
+               eSecureIfCreatorSecure,
+               eResultFromPostMessage),
+  new LoadType("a srcdoc",
+               // popup not relevant:
+               eLoadInUnsandboxedIframe | eLoadInSandboxedIframe,
+               "<script>(opener||parent).postMessage(isSecureContext, '*')</script>",
+               eSecureIfCreatorSecure,
+               eResultFromPostMessage),
+  new LoadType("a javascript: URI",
+               // can't load in sandbox:
+               eLoadInUnsandboxedIframe | eLoadInPopup,
+               "javascript:(opener||parent).postMessage(isSecureContext, '*')",
+               eSecureIfCreatorSecure,
+               eResultFromPostMessage),
+  new LoadType("about:blank",
+               // can't obtain state if sandboxed:
+               eLoadInUnsandboxedIframe | eLoadInPopup,
+               "about:blank",
+               eSecureIfCreatorSecure,
+               eResultFromExaminationOnLoad),
+  new LoadType("initial about:blank",
+               // can't obtain state if sandboxed:
+               eLoadInUnsandboxedIframe | eLoadInPopup,
+               "about:blank", // we don't wait for this to load, so whatever
+               eSecureIfCreatorSecure,
+               eResultFromExaminationSync),
+];
+
+const loadTargets = [
+  new LoadTarget("an iframe",          eLoadInUnsandboxedIframe),
+  new LoadTarget("a sandboxed iframe", eLoadInSandboxedIframe),
+  new LoadTarget("a popup",            eLoadInPopup),
+];
+
+
+function LoadType(description, loadInFlags, uri, expectedSecureFlag, resultFrom) {
+  this.desc = description;
+  this.loadInFlags = loadInFlags;
+  this.uri = uri;
+  this.expectedSecureFlag = expectedSecureFlag;
+  this.resultFrom = resultFrom;
+}
+
+
+function LoadTarget(description, loadInFlag) {
+  this.desc = description;
+  this.loadInFlag = loadInFlag;
+}
+
+LoadTarget.prototype.open = function(loadType) {
+  let loadTarget = this;
+  this.currentTest.step(function() {
+    assert_true((loadTarget.loadInFlag & loadType.loadInFlags) != 0,
+                loadType.desc + " cannot be tested in " + loadTarget.desc);
+  });
+  if (this.loadInFlag == eLoadInUnsandboxedIframe) {
+    let iframe = document.createElement("iframe");
+    document.body.appendChild(iframe);
+    iframe[loadType.desc == "a srcdoc" ? "srcdoc" : "src"] = loadType.uri;
+    return iframe;
+  }
+  if (this.loadInFlag == eLoadInSandboxedIframe) {
+    let iframe = document.body.appendChild(document.createElement("iframe"));
+    iframe.setAttribute("sandbox", "allow-scripts");
+    iframe[loadType.desc == "a srcdoc" ? "srcdoc" : "src"] = loadType.uri;
+    return iframe;
+  }
+  if (this.loadInFlag == eLoadInPopup) {
+    return window.open(loadType.uri);
+  }
+  this.currentTest.step(function() {
+    assert_unreached("Unknown load type flag: " + loadInFlags);
+  });
+  return null;
+}
+
+LoadTarget.prototype.close = function(domTarget) {
+  if (this.loadInFlag == eLoadInUnsandboxedIframe ||
+      this.loadInFlag == eLoadInSandboxedIframe) {
+    domTarget.remove();
+    return;
+  }
+  if (this.loadInFlag == eLoadInPopup) {
+    domTarget.close();
+    return;
+  }
+  this.currentTest.step(function() {
+    assert_unreached("Unknown load type flag: " + loadInFlags);
+  });
+}
+
+LoadTarget.prototype.load_and_get_result_for = function(loadType) {
+  if (!(loadType.loadInFlags & this.loadInFlag)) {
+    return Promise.reject("not applicable");
+  }
+  if (!(this.loadInFlag & eLoadInPopup) &&
+      location.protocol == "https:" &&
+      loadType.uri.substr(0,5) == "http:") {
+    // Mixed content blocker will prevent this load
+    return Promise.reject("not applicable");
+  }
+  this.currentTest = async_test("Test Window.isSecureContext in " + this.desc +
+                                " loading " + loadType.desc)
+  if (loadType.resultFrom == eResultFromExaminationSync) {
+    let domTarget = this.open(loadType);
+    let result = domTarget instanceof Window ?
+          domTarget.isSecureContext : domTarget.contentWindow.isSecureContext;
+    this.close(domTarget);
+    return Promise.resolve(result);
+  }
+  let target = this;
+  if (loadType.resultFrom == eResultFromExaminationOnLoad) {
+    return new Promise(function(resolve, reject) {
+      function handleLoad(event) {
+        let result = domTarget instanceof Window ?
+              domTarget.isSecureContext : domTarget.contentWindow.isSecureContext;
+        domTarget.removeEventListener("load", handleLoad);
+        target.close(domTarget);
+        resolve(result);
+      }
+      let domTarget = target.open(loadType);
+      domTarget.addEventListener("load", handleLoad, false);
+    });
+  }
+  if (loadType.resultFrom == eResultFromPostMessage) {
+    return new Promise(function(resolve, reject) {
+      function handleMessage(event) {
+        window.removeEventListener("message", handleMessage);
+        target.close(domTarget);
+        resolve(event.data);
+      }
+      window.addEventListener("message", handleMessage, false);
+      let domTarget = target.open(loadType);
+   });
+  }
+  return Promise.reject("unexpected 'result from' type");
+}
+
+
+let current_type_index = -1;
+let current_target_index = 0;
+
+function run_next_test() {
+  current_type_index++;
+  if (current_type_index >= loadTypes.length) {
+    current_type_index = 0;
+    current_target_index++;
+    if (current_target_index >= loadTargets.length) {
+      done();
+      return; // all test permutations complete
+    }
+  }
+  let loadTarget = loadTargets[current_target_index];
+  let loadType = loadTypes[current_type_index];
+  loadTarget.load_and_get_result_for(loadType).then(
+    function(value) {
+      run_next_test_soon();
+      loadTarget.currentTest.step(function() {
+        if (loadType.expectedSecureFlag == eSecureNo) {
+          assert_false(value, loadType.desc + " in " + loadTarget.desc + " should not create a Secure Context");
+        } else if (loadType.expectedSecureFlag == eSecureIfCreatorSecure) {
+          if (!window.isSecureContext) {
+            assert_false(value, loadType.desc + " in " + loadTarget.desc + " should not create a Secure Context when its creator is not a Secure Context.");
+          } else {
+            assert_true(value, loadType.desc + " in " + loadTarget.desc + " should create a Secure Context when its creator is a Secure Context");
+          }
+        } else {
+          assert_unreached(loadType.desc + " - unknown expected secure flag: " + expectedSecureFlag);
+        }
+        loadTarget.currentTest.done();
+      });
+    },
+    function(failReason) {
+      run_next_test_soon();
+      if (failReason == "not applicable") {
+        return;
+      }
+      loadTarget.currentTest.step(function() {
+        assert_unreached(loadType.desc + " - got unexpected rejected promise");
+      });
+    }
+  );
+}
+
+function run_next_test_soon() {
+  setTimeout(run_next_test, 0);
+}
+
+function begin() {
+  test(function() {
+    if (location.protocol == "http:") {
+      assert_false(isSecureContext,
+                   "http: creator should not be a Secure Context");
+    } else if (location.protocol == "https:") {
+      assert_true(isSecureContext,
+                  "https: creator should be a Secure Context");
+    } else {
+      assert_unreached("Unknown location.protocol");
+    }
+  });
+  run_next_test();
+}
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-shared-worker.html b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-shared-worker.html
new file mode 100644
index 0000000..76c28a36
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-shared-worker.html
@@ -0,0 +1,69 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset=utf-8>
+    <title>Test SharedWorkerGlobalScope.isSecureContext for HTTP creator</title>
+    <meta name="help" href="https://w3c.github.io/webappsec-secure-contexts/#monkey-patching-global-object">
+    <script src=/resources/testharness.js></script>
+    <script src=/resources/testharnessreport.js></script>
+    <script src="server-locations.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      var t1 = async_test("Shared worker");
+      var t2 = async_test("Nested worker in shared worker");
+      var t3 = async_test("Shared worker from https subframe");
+      var t4 = async_test("Nested worker from shared worker from https subframe");
+      // Tests for SharedWorkers used from other workers (not supported right
+      // now) would go here.
+
+      t1.step(function() {
+        var w = new SharedWorker("support/shared-worker-script.js");
+        w.port.onmessage = t1.step_func_done(function(e) {
+          assert_false(e.data);
+        });
+        w.port.start();
+      });
+
+      t2.step(function() {
+        var w = new SharedWorker("support/parent-shared-worker-script.js");
+        w.port.onmessage = t2.step_func_done(function(e) {
+          assert_false(e.data);
+        });
+        w.port.start();
+      });
+
+      onmessage = function(e) {
+        var data = e.data;
+        if (data.type == "shared") {
+          t3.step(function() {
+            assert_false(data.exception);
+            assert_false(data.error);
+            assert_false(data.isSecureContext);
+          });
+          t3.done();
+        } else if (data.type == "nested") {
+          t4.step(function() {
+            assert_false(data.exception);
+            assert_false(data.error);
+            assert_false(data.isSecureContext);
+          });
+          t4.done();
+        } else {
+          t3.step(function() {
+            assert_unreached("Unknown message");
+          });
+          t3.done();
+          t4.step(function() {
+            assert_unreached("Unknown message");
+          });
+          t4.done();
+        }
+      }
+
+      var ifr = document.createElement("iframe");
+      ifr.src = https_dir2 + "support/https-subframe-shared.html";
+      document.body.appendChild(ifr);
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-shared-worker.https.html b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-shared-worker.https.html
new file mode 100644
index 0000000..e7c78383
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/basic-shared-worker.https.html
@@ -0,0 +1,67 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset=utf-8>
+    <title>Test SharedWorkerGlobalScope.isSecureContext for HTTP creator</title>
+    <meta name="help" href="https://w3c.github.io/webappsec-secure-contexts/#monkey-patching-global-object">
+    <script src=/resources/testharness.js></script>
+    <script src=/resources/testharnessreport.js></script>
+    <script src="server-locations.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      var t1 = async_test("Shared worker");
+      var t2 = async_test("Nested worker in shared worker");
+      var t3 = async_test("Shared worker from https subframe");
+      var t4 = async_test("Nested worker from shared worker from https subframe");
+
+      t1.step(function() {
+        var w = new SharedWorker("support/shared-worker-script.js");
+        w.port.onmessage = t1.step_func_done(function(e) {
+          assert_true(e.data);
+        });
+        w.port.start();
+      });
+
+      t2.step(function() {
+        var w = new SharedWorker("support/parent-shared-worker-script.js");
+        w.port.onmessage = t2.step_func_done(function(e) {
+          assert_true(e.data);
+        });
+        w.port.start();
+      });
+
+      onmessage = function(e) {
+        var data = e.data;
+        if (data.type == "shared") {
+          t3.step(function() {
+            assert_false(data.exception);
+            assert_false(data.error);
+            assert_true(data.isSecureContext);
+          });
+          t3.done();
+        } else if (data.type == "nested") {
+          t4.step(function() {
+            assert_false(data.exception);
+            assert_false(data.error);
+            assert_true(data.isSecureContext);
+          });
+          t4.done();
+        } else {
+          t3.step(function() {
+            assert_unreached("Unknown message");
+          });
+          t3.done();
+          t4.step(function() {
+            assert_unreached("Unknown message");
+          });
+          t4.done();
+        }
+      }
+
+      var ifr = document.createElement("iframe");
+      ifr.src = https_dir3 + "support/https-subframe-shared.html";
+      document.body.appendChild(ifr);
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/postMessage-helper.html b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/postMessage-helper.html
new file mode 100644
index 0000000..8971c86
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/postMessage-helper.html
@@ -0,0 +1 @@
+<script>(opener||parent).postMessage(isSecureContext, '*')</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/postMessage-helper.https.html b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/postMessage-helper.https.html
new file mode 100644
index 0000000..8971c86
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/postMessage-helper.https.html
@@ -0,0 +1 @@
+<script>(opener||parent).postMessage(isSecureContext, '*')</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/server-locations.sub.js b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/server-locations.sub.js
new file mode 100644
index 0000000..6b29c53
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/server-locations.sub.js
@@ -0,0 +1,17 @@
+var https_dir = "https://{{location[hostname]}}:{{ports[https][0]}}{{location[path]}}";
+https_dir = https_dir.substr(0, https_dir.lastIndexOf("/") + 1);
+
+var http_dir = "http://{{location[hostname]}}:{{ports[http][0]}}{{location[path]}}";
+http_dir = http_dir.substr(0, http_dir.lastIndexOf("/") + 1);
+
+var https_dir2 = "https://{{domains[www]}}:{{ports[https][0]}}{{location[path]}}";
+https_dir2 = https_dir2.substr(0, https_dir2.lastIndexOf("/") + 1);
+
+var https_dir3 = "https://{{domains[www1]}}:{{ports[https][0]}}{{location[path]}}";
+https_dir3 = https_dir3.substr(0, https_dir3.lastIndexOf("/") + 1);
+
+var https_dir4 = "https://{{domains[www2]}}:{{ports[https][0]}}{{location[path]}}";
+https_dir4 = https_dir4.substr(0, https_dir4.lastIndexOf("/") + 1);
+
+var https_dir5 = "https://{{domains[élève]}}:{{ports[https][0]}}{{location[path]}}";
+https_dir5 = https_dir5.substr(0, https_dir5.lastIndexOf("/") + 1);
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/shared-worker-insecure-first.https.html b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/shared-worker-insecure-first.https.html
new file mode 100644
index 0000000..074b21c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/shared-worker-insecure-first.https.html
@@ -0,0 +1,111 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset=utf-8>
+    <title>Test SharedWorkerGlobalScope.isSecureContext for HTTP creator</title>
+    <meta name="help" href="https://w3c.github.io/webappsec-secure-contexts/#monkey-patching-global-object">
+    <script src=/resources/testharness.js></script>
+    <script src=/resources/testharnessreport.js></script>
+    <script src="server-locations.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      /*
+       * The goal of this test is to check that we do the right thing if the
+       * same SharedWorker is used first from an insecure context and then from
+       * a secure context.
+       *
+       * To do this, we first open an insecure (http) popup, which loads a
+       * subframe that is same-origin with us but not a secure context, since
+       * its parent is http, not https.  Then this subframe loads a SharedWorker
+       * and communicates back to us whether that worker and a child dedicated
+       * worker it spawns think they are secure contexts.  Async tests t3 and t4
+       * track these two workers.
+       *
+       * After we have heard from both workers in the popup, we directly load
+       * the same exact subframe ourselves and see what the workers in it
+       * report.  Async tests t1 and t2 track these two workers.
+       */
+      var t1 = async_test("Shared worker in subframe");
+      var t2 = async_test("Nested worker in shared worker in subframe");
+      var t3 = async_test("Shared worker in popup");
+      var t4 = async_test("Nested worker from shared worker in popup");
+
+      var messageCount = 0;
+      var popup = null;
+      onmessage = function(e) {
+        ++messageCount;
+        // Make sure to not close the popup until we've run the iframe part of
+        // the test!  We need to keep those shared workers alive.
+        if (messageCount == 4 && popup) {
+          popup.close();
+        }
+        var data = e.data;
+        if (data.type == "shared") {
+          // This is a message from our shared worker; check whether it's the
+          // one in the popup or in our subframe.
+          if (data.fromPopup) {
+            t3.step(function() {
+              assert_false(data.exception);
+              assert_false(data.error);
+              assert_false(data.isSecureContext);
+            });
+            t3.done();
+          } else {
+            t1.step(function() {
+              assert_false(data.exception);
+              assert_true(data.error);
+            });
+            t1.done();
+          }
+        } else if (data.type == "nested") {
+          // This is a message from our shared worker's nested dedicated worker;
+          // check whether it's the one in the popup or in our subframe.
+          if (data.fromPopup) {
+            t4.step(function() {
+              assert_false(data.exception);
+              assert_false(data.error);
+              assert_false(data.isSecureContext);
+            });
+            t4.done();
+          } else {
+            t2.step(function() {
+              assert_false(data.exception);
+              assert_true(data.error);
+            });
+            t2.done();
+          }
+        } else {
+          if (popup) {
+            popup.close();
+          }
+          t1.step(function() {
+            assert_unreached("Unknown message");
+          });
+          t1.done();
+          t2.step(function() {
+            assert_unreached("Unknown message");
+          });
+          t2.done();
+          t3.step(function() {
+            assert_unreached("Unknown message");
+          });
+          t3.done();
+          t4.step(function() {
+            assert_unreached("Unknown message");
+          });
+          t4.done();
+        }
+
+        if (messageCount == 2) {
+          // Got both messages from our popup; time to create our child.
+          var ifr = document.createElement("iframe");
+          ifr.src = https_dir5 + "support/https-subframe-shared.html";
+          document.body.appendChild(ifr);
+        }
+      }
+
+      popup = window.open(http_dir + "support/shared-worker-insecure-popup.html?https_dir5");
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/shared-worker-secure-first.https.html b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/shared-worker-secure-first.https.html
new file mode 100644
index 0000000..27697d6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/shared-worker-secure-first.https.html
@@ -0,0 +1,111 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset=utf-8>
+    <title>Test SharedWorkerGlobalScope.isSecureContext for HTTP creator</title>
+    <meta name="help" href="https://w3c.github.io/webappsec-secure-contexts/#monkey-patching-global-object">
+    <script src=/resources/testharness.js></script>
+    <script src=/resources/testharnessreport.js></script>
+    <script src="server-locations.sub.js"></script>
+  </head>
+  <body>
+    <script>
+      /*
+       * The goal of this test is to check that we do the right thing if the
+       * same SharedWorker is used first from an secure context and then from
+       * an insecure context.
+       *
+       * To do this, we load a subframe which loads a SharedWorker
+       * and communicates back to us whether that worker and a child dedicated
+       * worker it spawns think they are secure contexts. Async tests t1 and t2
+       * track these two workers.
+       *
+       * After we have heard from both workers in the subframe, we open an
+       * insecure (http) popup, which loads the same exact subframe.  This
+       * subframe is still is same-origin with
+       * us but not a secure context, since its parent is http, not https.  Then
+       * we wait to hear about the status of the workers in the popup's
+       * subframe.  Async tests t3 and t4 track these two workers.
+       *
+       */
+      var t1 = async_test("Shared worker in subframe");
+      var t2 = async_test("Nested worker in shared worker in subframe");
+      var t3 = async_test("Shared worker in popup");
+      var t4 = async_test("Nested worker from shared worker in popup");
+
+      var messageCount = 0;
+      var popup = null;
+      onmessage = function(e) {
+        ++messageCount;
+        if (messageCount == 4 && popup) {
+          popup.close();
+        }
+        var data = e.data;
+        if (data.type == "shared") {
+          // This is a message from our shared worker; check whether it's the
+          // one in the popup or in our subframe.
+          if (data.fromPopup) {
+            t3.step(function() {
+              assert_false(data.exception);
+              assert_true(data.error);
+            });
+            t3.done();
+          } else {
+            t1.step(function() {
+              assert_false(data.exception);
+              assert_false(data.error);
+              assert_true(data.isSecureContext);
+            });
+            t1.done();
+          }
+        } else if (data.type == "nested") {
+          // This is a message from our shared worker's nested dedicated worker;
+          // check whether it's the one in the popup or in our subframe.
+          if (data.fromPopup) {
+            t4.step(function() {
+              assert_false(data.exception);
+              assert_true(data.error);
+            });
+            t4.done();
+          } else {
+            t2.step(function() {
+              assert_false(data.exception);
+              assert_false(data.error);
+              assert_true(data.isSecureContext);
+            });
+            t2.done();
+          }
+        } else {
+          if (popup) {
+            popup.close();
+          }
+          t1.step(function() {
+            assert_unreached("Unknown message");
+          });
+          t1.done();
+          t2.step(function() {
+            assert_unreached("Unknown message");
+          });
+          t2.done();
+          t3.step(function() {
+            assert_unreached("Unknown message");
+          });
+          t3.done();
+          t4.step(function() {
+            assert_unreached("Unknown message");
+          });
+          t4.done();
+        }
+
+        if (messageCount == 2) {
+          // Got both messages from our child; time to open our popup
+          popup = window.open(http_dir + "support/shared-worker-insecure-popup.html?https_dir4");
+        }
+      }
+
+      var ifr = document.createElement("iframe");
+      ifr.src = https_dir4 + "support/https-subframe-shared.html";
+      document.body.appendChild(ifr);
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/dedicated-worker-script.js b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/dedicated-worker-script.js
new file mode 100644
index 0000000..69ffdf3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/dedicated-worker-script.js
@@ -0,0 +1 @@
+postMessage(isSecureContext);
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/https-subframe-dedicated.html b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/https-subframe-dedicated.html
new file mode 100644
index 0000000..85005df
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/https-subframe-dedicated.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<script src="../server-locations.sub.js"></script>
+<script>
+  var w1 = new Worker(http_dir + "support/dedicated-worker-script.js");
+  w1.onmessage = function(e) {
+    parent.postMessage({ type: "http", error: false,
+                         isSecureContext: e.data }, "*");
+  };
+  w1.onerror = function(e) {
+    parent.postMessage({ type: "http", error: true }, "*");
+  };
+
+  var w2 = new Worker(https_dir + "support/dedicated-worker-script.js");
+  w2.onmessage = function(e) {
+    parent.postMessage({ type: "https", error: false,
+                         isSecureContext: e.data }, "*");
+  };
+  w2.onerror = function(e) {
+    parent.postMessage({ type: "https", error: true }, "*");
+  }
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/https-subframe-shared.html b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/https-subframe-shared.html
new file mode 100644
index 0000000..5ae7cde
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/https-subframe-shared.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<script>
+  try {
+    var w = new SharedWorker("shared-worker-script.js");
+    w.port.onmessage = function(e) {
+      parent.postMessage({ type: "shared", error: false, exception: false,
+                           isSecureContext: e.data }, "*");
+    };
+    w.onerror = function(e) {
+      parent.postMessage({ type: "shared", error: true, exception: false },
+                         "*");
+    }
+    w.port.start();
+  } catch (e) {
+    parent.postMessage({ type: "shared", exception: true }, "*");
+  }
+
+  try {
+    var w = new SharedWorker("parent-shared-worker-script.js");
+    w.port.onmessage = function(e) {
+      parent.postMessage({ type: "nested", error: false, exception: false,
+                           isSecureContext: e.data }, "*");
+    };
+    w.onerror = function(e) {
+      parent.postMessage({ type: "nested", error: true, exception: false },
+                         "*");
+    }
+    w.port.start();
+  } catch (e) {
+    parent.postMessage({ type: "nested", exception: true }, "*");
+  }
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/parent-dedicated-worker-script.js b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/parent-dedicated-worker-script.js
new file mode 100644
index 0000000..a844755
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/parent-dedicated-worker-script.js
@@ -0,0 +1,4 @@
+var w = new Worker("dedicated-worker-script.js");
+w.onmessage = function (e) {
+  postMessage(e.data);
+}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/parent-shared-worker-script.js b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/parent-shared-worker-script.js
new file mode 100644
index 0000000..7f999f93
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/parent-shared-worker-script.js
@@ -0,0 +1,8 @@
+addEventListener("connect", function (e) {
+  var port = e.ports[0];
+  port.start();
+  var w = new Worker("dedicated-worker-script.js");
+  w.onmessage = function (e) {
+    port.postMessage(e.data);
+  }
+});
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/shared-worker-insecure-popup.html b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/shared-worker-insecure-popup.html
new file mode 100644
index 0000000..740679d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/shared-worker-insecure-popup.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<script src="../server-locations.sub.js"></script>
+<body>
+  <script>
+    var url = self[location.search.substr(1)] + "support/https-subframe-shared.html";
+    onmessage = function(e) {
+      var data = e.data;
+      data.fromPopup = true;
+      opener.postMessage(data, "*");
+    }
+    var ifr = document.createElement("iframe");
+    ifr.src = url;
+    document.body.appendChild(ifr);
+  </script>
+</body>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/shared-worker-script.js b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/shared-worker-script.js
new file mode 100644
index 0000000..faed70a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/secure-contexts/support/shared-worker-script.js
@@ -0,0 +1,5 @@
+addEventListener("connect", function (e) {
+  var port = e.ports[0];
+  port.start();
+  port.postMessage(isSecureContext);
+});
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/interfaces.html b/third_party/WebKit/LayoutTests/external/wpt/selection/interfaces.html
index 888b23fd..8fed814 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/interfaces.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/interfaces.html
@@ -6,7 +6,7 @@
 <script src=/resources/WebIDLParser.js></script>
 <script src=/resources/idlharness.js></script>
 <script type=text/plain>
-// https://www.w3.org/TR/2016/WD-selection-api-20161206/
+// http://w3c.github.io/selection-api/#selection-interface
 interface Selection {
     readonly attribute Node?         anchorNode;
     readonly attribute unsigned long anchorOffset;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/client-navigate.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/client-navigate.https.html
index b651a20a..9492335 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/client-navigate.https.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/client-navigate.https.html
@@ -57,6 +57,7 @@
           frame.contentWindow.location.href,
           new URL("resources/client-navigated-frame.html",
                   location).toString());
+        frame.remove();
       })
       .catch(unreached_rejection(t))
       .then(___ => service_worker_unregister(t, scope));
@@ -81,7 +82,8 @@
       .then(({result, url}) => {
         assert_equals(result, "test_client_navigate_redirect");
         assert_equals(url, "");
-        assert_throws(null, function() { return frame.contentWindow.location.href });
+        assert_throws("SecurityError", function() { return frame.contentWindow.location.href });
+        frame.remove();
       })
       .catch(unreached_rejection(t))
       .then(___ => service_worker_unregister(t, scope));
@@ -102,16 +104,74 @@
         return wait_for_message()
       })
       .then(({id}) => clientId = id)
-      .then(___ => run_test(controller, clientId, "test_client_navigate_failure"))
+      .then(___ => run_test(controller, clientId, "test_client_navigate_cross_origin"))
       .then(({result, url}) => {
-        assert_equals(result, "test_client_navigate_failure");
+        assert_equals(result, "test_client_navigate_cross_origin");
+        assert_equals(url, "");
+        assert_throws("SecurityError", function() { return frame.contentWindow.location.href });
+        frame.remove();
+      })
+      .catch(unreached_rejection(t))
+      .then(___ => service_worker_unregister(t, scope));
+  }, "Frame location should not be accessible after cross-origin navigation");
+
+  promise_test(function(t) {
+    var worker = "resources/client-navigate-worker.js";
+    var scope = "resources/client-navigate-frame.html";
+    var controller, frame, clientId;
+
+    return service_worker_unregister_and_register(t, worker, scope)
+      .then(reg => wait_for_state(t, reg.installing, "activated"))
+      .then(___ => with_iframe(scope))
+      .then(f => {
+        frame = f;
+        controller = frame.contentWindow.navigator.serviceWorker.controller;
+        fetch_tests_from_worker(controller);
+        return wait_for_message()
+      })
+      .then(({id}) => clientId = id)
+      .then(___ => run_test(controller, clientId, "test_client_navigate_about_blank"))
+      .then(({result, url}) => {
+        assert_equals(result, "test_client_navigate_about_blank");
         assert_equals(
           frame.contentWindow.location.href,
           new URL("resources/client-navigate-frame.html",
                   location).toString());
         frame.contentWindow.document.body.style = "background-color: green"
+        frame.remove();
       })
       .catch(unreached_rejection(t))
       .then(___ => service_worker_unregister(t, scope));
-  }, "Frame location should not update on failed navigation");
+  }, "Frame location should not update on failed about:blank navigation");
+
+  promise_test(function(t) {
+    var worker = "resources/client-navigate-worker.js";
+    var scope = "resources/client-navigate-frame.html";
+    var controller, frame, clientId;
+
+    return service_worker_unregister_and_register(t, worker, scope)
+      .then(reg => {
+        return wait_for_state(t, reg.installing, "activated");
+      })
+      .then(___ => with_iframe(scope))
+      .then(f => {
+        frame = f;
+        controller = frame.contentWindow.navigator.serviceWorker.controller;
+        fetch_tests_from_worker(controller);
+        return wait_for_message()
+      })
+      .then(({id}) => clientId = id)
+      .then(___ => run_test(controller, clientId, "test_client_navigate_mixed_content"))
+      .then(({result, url}) => {
+        assert_equals(result, "test_client_navigate_mixed_content");
+        assert_equals(
+          frame.contentWindow.location.href,
+          new URL("resources/client-navigate-frame.html",
+                  location).toString());
+        frame.contentWindow.document.body.style = "background-color: green"
+        frame.remove();
+      })
+      .catch(unreached_rejection(t))
+      .then(___ => service_worker_unregister(t, scope));
+  }, "Frame location should not update on failed mixed-content navigation");
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/interfaces.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/interfaces.https-expected.txt
new file mode 100644
index 0000000..915d1c35
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/interfaces.https-expected.txt
@@ -0,0 +1,13 @@
+This is a testharness.js-based test.
+FAIL Interfaces and attributes of ServiceWorkerContainer assert_true: onmessageerror should be an attribute of ServiceWorkerContainer expected true got false
+PASS Interfaces and attributes of ServiceWorker 
+PASS Interfaces and attributes in ServiceWorkerGlobalScope 
+FAIL ServiceWorkerGlobalScope assert_true: onmessageerror should be an attribute of ServiceWorkerGlobalScope expected true got false
+PASS Clients 
+PASS Client 
+PASS WindowClient 
+PASS CacheStorage 
+PASS Cache 
+PASS Event constructors 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/interfaces.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/interfaces.https.html
index 403a005..889142f 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/interfaces.https.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/interfaces.https.html
@@ -13,7 +13,9 @@
       {
         register: 'function',
         getRegistration: 'function',
-        oncontrollerchange: EVENT_HANDLER
+        oncontrollerchange: EVENT_HANDLER,
+        onmessage: EVENT_HANDLER,
+        onmessageerror: EVENT_HANDLER
       });
   }, 'Interfaces and attributes of ServiceWorkerContainer');
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/registration-useCache.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/registration-useCache.https.html
deleted file mode 100644
index 1976fa11..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/registration-useCache.https.html
+++ /dev/null
@@ -1,223 +0,0 @@
-<!DOCTYPE html>
-<title>Service Worker: Registration-useCache</title>
-<script src="/resources/testharness.js"></script>
-<script src="resources/testharness-helpers.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/test-helpers.sub.js"></script>
-<script>
-
-function registerFirstServiceWorker(test, script, scope, useCache) {
-    var swr, sw;
-
-    var setting = {scope: scope};
-    if (useCache !== undefined) {
-        setting['useCache'] = useCache;
-    }
-
-    return Promise.resolve()
-        .then(() => navigator.serviceWorker.register(script, setting))
-        .then(registration => swr = registration)
-
-        .then(() => wait_for_update(test, swr))
-        .then(worker => sw = worker)
-
-        .then(() => getMessageFromServiceWorker(sw, 'normal'))
-        .then(() => wait_for_state(test, sw, 'activated'))
-        .then(() => assert_true((!!swr.active &&
-                                 !swr.waiting &&
-                                 !swr.installing),
-                                ('The active SW should be the only SW. ' +
-                                 '(a: ' + !!swr.active +
-                                 ',w: ' + !swr.waiting +
-                                 ',i: ' + !swr.installing + ')')))
-        .then(() => swr);
-}
-
-function getMessageFromServiceWorker(sw, httpRequestType, oldValues) {
-    var mainResolveFunction, importedResolveFunction;
-    var promises = [
-        new Promise(function(resolve) {mainResolveFunction = resolve}),
-        new Promise(function(resolve) {importedResolveFunction = resolve})
-    ];
-
-    var messageChannel = new MessageChannel();
-    messageChannel.port1.onmessage = e => {
-        if (httpRequestType) {
-          assert_equals(e.data.type, httpRequestType,
-                        "HTTP request type check.");
-        }
-
-        var compareOldValue = (httpRequestType === 'revalidate') && oldValues;
-        switch(e.data.from) {
-            case 'main':
-                if (compareOldValue) {
-                    assert_not_equals(e.data.value, oldValues[0],
-                                      'Values shouldn\'t be the same');
-                }
-                mainResolveFunction(e.data.value);
-                break;
-            case 'imported':
-                if (compareOldValue) {
-                    assert_not_equals(e.data.value, oldValues[1],
-                                      'Values shouldn\'t be the same');
-                }
-                importedResolveFunction(e.data.value);
-                break;
-        }
-    };
-
-    sw.postMessage({port: messageChannel.port2}, [messageChannel.port2]);
-    return Promise.all(promises);
-}
-
-function testAction(test, registration, action, shouldCreateSW) {
-    var testFunction = shouldCreateSW ? testActionDoesCreateSW
-                                      : testActionDoesNotCreateSW;
-
-    return Promise.resolve()
-        .then(() => testFunction(registration, action, test))
-        .then(() => registration);
-}
-
-function testActionDoesCreateSW(registration, action, test) {
-    var oldValues;
-
-    return Promise.resolve()
-        .then(() => getMessageFromServiceWorker(registration.active))
-        .then(values => oldValues = values)
-
-        .then(() => action())
-        .then(() => wait_for_update(test, registration))
-        .then(worker => getMessageFromServiceWorker(worker,
-                                                    'revalidate',
-                                                    oldValues));
-}
-
-function testActionDoesNotCreateSW(registration, action) {
-    return Promise.resolve()
-        .then(() => action())
-        .then(() => assert_true((!!registration.active &&
-                                 !registration.waiting &&
-                                 !registration.installing),
-                                ('The active SW should still be the only SW. ' +
-                                 '(a: ' + !!registration.active +
-                                 ',w: ' + !registration.waiting +
-                                 ',i: ' + !registration.installing + ')')));
-}
-
-promise_test(function(t) {
-    var script = 'resources/update-max-aged-worker.py' +
-                 '?Test=Test_with_useCache_default';
-    var scope = 'resources/blank.html';
-
-    return Promise.resolve()
-        .then(() => registerFirstServiceWorker(t, script, scope))
-        .then(r => testAction(t, r, r.update.bind(r), true))
-
-        // Tear down
-        .then(() => service_worker_unregister_and_done(t, scope));
-}, 'Test with useCache: default');
-
-promise_test(function(t) {
-    var script = 'resources/update-max-aged-worker.py' +
-                 '?Test=Test_with_useCache_true';
-    var scope = 'resources/blank.html';
-
-    return Promise.resolve()
-        .then(() => registerFirstServiceWorker(t, script, scope, true))
-        .then(r => testAction(t, r, r.update.bind(r), false))
-
-        // Tear down
-        .then(() => service_worker_unregister_and_done(t, scope));
-}, 'Test with useCache: true');
-
-promise_test(function(t) {
-    var script = 'resources/update-max-aged-worker.py' +
-                 '?Test=Test_with_useCache_false';
-    var scope = 'resources/blank.html';
-
-    return Promise.resolve()
-        .then(() => registerFirstServiceWorker(t, script, scope, false))
-        .then(r => testAction(t, r, r.update.bind(r), true))
-
-        // Tear down
-        .then(() => service_worker_unregister_and_done(t, scope));
-  }, 'Test with useCache: false');
-
-promise_test(function(t) {
-    var script = 'resources/update-max-aged-worker.py' +
-                 '?Test=Consecutive_registrations_with_useCache_settings_false_false';
-    var scope = 'resources/blank.html';
-
-    return Promise.resolve()
-        .then(() => registerFirstServiceWorker(t, script, scope, false))
-        .then(r => {
-            var action = navigator.serviceWorker.register.bind(
-                navigator.serviceWorker, script, {scope: scope,
-                                                  useCache: false});
-            return testAction(t, r, action, false);
-        })
-
-        // Tear down
-        .then(() => service_worker_unregister_and_done(t, scope))
-}, "Consecutive registrations with useCache settings(false, false)");
-
-promise_test(function(t) {
-    var script = 'resources/update-max-aged-worker.py' +
-                 '?Test=Consecutive_registrations_with_useCache_settings_false_true';
-    var scope = 'resources/blank.html';
-
-    return Promise.resolve()
-        .then(() => registerFirstServiceWorker(t, script, scope, false))
-        .then(r => testAction(t, r, r.update.bind(r), true))
-        .then(r => {
-            var action = navigator.serviceWorker.register.bind(
-                navigator.serviceWorker, script, {scope: scope,
-                                                  useCache: true});
-            return testAction(t, r, action, false);
-        })
-        .then(r => testAction(t, r, r.update.bind(r), false))
-
-        // Tear down
-        .then(() => service_worker_unregister_and_done(t, scope))
-}, "Consecutive registrations with useCache settings(false, true)");
-
-promise_test(function(t) {
-    var script = 'resources/update-max-aged-worker.py' +
-                 '?Test=Consecutive_registrations_with_useCache_settings_true_false';
-    var scope = 'resources/blank.html';
-
-    return Promise.resolve()
-        .then(() => registerFirstServiceWorker(t, script, scope, true))
-        .then(r => testAction(t, r, r.update.bind(r), false))
-        .then(r => {
-            var action = navigator.serviceWorker.register.bind(
-                navigator.serviceWorker, script, {scope: scope,
-                                                  useCache: false});
-            return testAction(t, r, action, true);
-        })
-        .then(r => testAction(t, r, r.update.bind(r), true))
-
-        // Tear down
-        .then(() => service_worker_unregister_and_done(t, scope));
-}, "Consecutive registrations with useCache settings(true, false)");
-
-promise_test(function(t) {
-    var script = 'resources/update-max-aged-worker.py' +
-                 '?Test=Consecutive_registrations_with_useCache_settings_true_true';
-    var scope = 'resources/blank.html';
-
-    return Promise.resolve()
-        .then(() => registerFirstServiceWorker(t, script, scope, true))
-        .then(r => {
-            var action = navigator.serviceWorker.register.bind(
-                navigator.serviceWorker, script, {scope: scope,
-                                                  useCache: true});
-            return testAction(t, r, action, false);
-        })
-
-        // Tear down
-        .then(() => service_worker_unregister_and_done(t, scope))
-}, "Consecutive registrations with useCache settings(true, true)");
-
-</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/request-end-to-end.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/request-end-to-end.https.html
index 32b42999..d061a6d 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/request-end-to-end.https.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/request-end-to-end.https.html
@@ -7,7 +7,7 @@
 var t = async_test('Request: end-to-end');
 t.step(function() {
     var url = 'resources/request-end-to-end-worker.js';
-    var scope = 'resources/blank.html';
+    var scope = 'resources/blank.html?request-end-to-end';
 
     service_worker_unregister_and_register(t, url, scope)
       .then(onRegister)
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/client-navigate-worker.js b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/client-navigate-worker.js
index 59866e7..09d11fe 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/client-navigate-worker.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/client-navigate-worker.js
@@ -40,19 +40,38 @@
                  })
                  .catch(unreached_rejection(t));
     }, "Return value should be instance of WindowClient");
-  } else if (test === "test_client_navigate_failure") {
+  } else if (test === "test_client_navigate_cross_origin") {
     promise_test(function(t) {
+      this.add_cleanup(() => port.postMessage(pass(test, clientUrl)));
+      var path = new URL('client-navigated-frame.html', self.location.href).pathname;
+      var url = get_host_info()['HTTPS_REMOTE_ORIGIN'] + path;
       return self.clients.get(clientId)
-                 .then(client => assert_promise_rejects(client.navigate("http://example.com")))
+                 .then(client => client.navigate(url))
+                 .then(client => {
+                   clientUrl = (client && client.url) || "";
+                   assert_equals(client, null,
+                                 'cross-origin navigate resolves with null');
+                 })
                  .catch(unreached_rejection(t));
-    }, "Navigating to different origin should reject");
-
+    }, "Navigating to different origin should resolve with null");
+  } else if (test === "test_client_navigate_about_blank") {
     promise_test(function(t) {
       this.add_cleanup(function() { port.postMessage(pass(test, "")); });
       return self.clients.get(clientId)
                  .then(client => promise_rejects(t, new TypeError(), client.navigate("about:blank")))
                  .catch(unreached_rejection(t));
-    }, "Navigating to about:blank should reject with TypeError")
+    }, "Navigating to about:blank should reject with TypeError");
+  } else if (test === "test_client_navigate_mixed_content") {
+    promise_test(function(t) {
+      this.add_cleanup(function() { port.postMessage(pass(test, "")); });
+      var path = new URL('client-navigated-frame.html', self.location.href).pathname;
+      // Insecure URL should fail since the frame is owned by a secure parent
+      // and navigating to http:// would create a mixed-content violation.
+      var url = get_host_info()['HTTP_REMOTE_ORIGIN'] + path;
+      return self.clients.get(clientId)
+                 .then(client => promise_rejects(t, new TypeError(), client.navigate(url)))
+                 .catch(unreached_rejection(t));
+    }, "Navigating to mixed-content iframe should reject with TypeError");
   } else if (test === "test_client_navigate_redirect") {
     var host_info = get_host_info();
     var url = new URL(host_info['HTTPS_REMOTE_ORIGIN']).toString() +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/interfaces-worker.sub.js b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/interfaces-worker.sub.js
index e5ed36fc..2ae75ba 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/interfaces-worker.sub.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/interfaces-worker.sub.js
@@ -15,7 +15,8 @@
                        onactivate: EVENT_HANDLER,
                        onfetch: EVENT_HANDLER,
                        oninstall: EVENT_HANDLER,
-                       onmessage: EVENT_HANDLER
+                       onmessage: EVENT_HANDLER,
+                       onmessageerror: EVENT_HANDLER
                      });
   }, 'ServiceWorkerGlobalScope');
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/update-max-aged-worker-imported-script.py b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/update-max-aged-worker-imported-script.py
deleted file mode 100644
index e166143..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/update-max-aged-worker-imported-script.py
+++ /dev/null
@@ -1,22 +0,0 @@
-import time
-
-def main(request, response):
-    headers = [('Cache-Control', 'max-age=86400'),
-               ('Content-Type', 'application/javascript'),
-               ('Last-Modified', time.strftime("%a, %d %b %Y %H:%M:%S GMT",
-                                               time.gmtime()))]
-
-
-    revalidate = request.headers.has_key('if-modified-since');
-
-    body = '''
-    self.addEventListener('message', function(e) {
-        e.data.port.postMessage({
-            from: "imported",
-            type: "%s",
-            value: %s
-        });
-    });
-    ''' % ('revalidate' if revalidate else 'normal', time.time())
-
-    return headers, body
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/update-max-aged-worker.py b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/update-max-aged-worker.py
deleted file mode 100644
index 6eb7c34..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/update-max-aged-worker.py
+++ /dev/null
@@ -1,26 +0,0 @@
-import time
-
-def main(request, response):
-    headers = [('Content-Type', 'application/javascript'),
-               ('Cache-Control', 'max-age=86400'),
-               ('Last-Modified', time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime()))]
-
-    test = '';
-    if 'Test' in request.GET:
-      test = request.GET['Test'];
-
-    revalidate = request.headers.has_key('if-modified-since');
-
-    body = '''
-    importScripts('update-max-aged-worker-imported-script.py?Test=%s');
-
-    self.addEventListener('message', function(e) {
-        e.data.port.postMessage({
-            from: "main",
-            type: "%s",
-            value: %s
-        });
-    });
-    ''' % (test, 'revalidate' if revalidate else 'normal', time.time())
-
-    return headers, body
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/skip-waiting-installed.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/skip-waiting-installed.https.html
index 42e4000..795386f8 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/skip-waiting-installed.https.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/skip-waiting-installed.https.html
@@ -7,7 +7,7 @@
 <script>
 
 promise_test(function(t) {
-    var scope = 'resources/blank.html';
+    var scope = 'resources/blank.html?skip-waiting-installed';
     var url1 = 'resources/empty.js';
     var url2 = 'resources/skip-waiting-installed-worker.js';
     var frame, frame_sw, service_worker, registration, onmessage, oncontrollerchanged;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/skip-waiting-using-registration.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/skip-waiting-using-registration.https.html
index 5f84f0b..68deae7 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/skip-waiting-using-registration.https.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/skip-waiting-using-registration.https.html
@@ -7,7 +7,7 @@
 <script>
 
 promise_test(function(t) {
-    var scope = 'resources/blank.html';
+    var scope = 'resources/blank.html?skip-waiting-using-registration';
     var url1 = 'resources/empty.js';
     var url2 = 'resources/skip-waiting-worker.js';
     var frame, frame_sw, sw_registration, oncontrollerchanged;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/skip-waiting-without-using-registration.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/skip-waiting-without-using-registration.https.html
index 2535ffe0..5ae9cdb5 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/skip-waiting-without-using-registration.https.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/skip-waiting-without-using-registration.https.html
@@ -7,7 +7,7 @@
 <script>
 
 promise_test(function(t) {
-    var scope = 'resources/blank.html';
+    var scope = 'resources/blank.html?skip-waiting-without-using-registration';
     var url = 'resources/skip-waiting-worker.js';
     var frame, frame_sw, sw_registration;
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/skip-waiting.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/skip-waiting.https.html
index 7c1c41f..ac6c322 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/skip-waiting.https.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/skip-waiting.https.html
@@ -7,7 +7,7 @@
 <script>
 
 promise_test(function(t) {
-    var scope = 'resources/blank.html';
+    var scope = 'resources/blank.html?skip-waiting';
     var url1 = 'resources/empty.js';
     var url2 = 'resources/empty-worker.js';
     var url3 = 'resources/skip-waiting-worker.js';
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/websocket.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/websocket.https-expected.txt
deleted file mode 100644
index ef3218e..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/websocket.https-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL Verify WebSocket handshake channel does not get intercepted assert_unreached: unexpected rejection: [object Event] Reached unreachable code
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/shadow-dom/slots-fallback-in-document.html b/third_party/WebKit/LayoutTests/external/wpt/shadow-dom/slots-fallback-in-document.html
index 4250fb0..91acc5d5 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/shadow-dom/slots-fallback-in-document.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/shadow-dom/slots-fallback-in-document.html
@@ -23,7 +23,7 @@
 test(() => {
   assert_array_equals(n1.innerSlot.assignedNodes(), [n1.slot]);
   assert_array_equals(n1.innerSlot.assignedNodes({ flatten: true }),
-		      [n1.fallback]);
+                      [n1.fallback]);
 }, 'Slot fallback content in document tree should be counted in flattened ' +
    'assigned nodes.');
 </script>
@@ -32,10 +32,10 @@
   <div id="host">
     <template data-mode="open">
       <div id="innerHost">
-	<template data-mode="open">
-	  <slot id="innerSlot"></slot>
-	</template>
-	<slot id="slot"><div id="fallback">This is fallback content</div></slot>
+        <template data-mode="open">
+          <slot id="innerSlot"></slot>
+        </template>
+        <slot id="slot"><div id="fallback">This is fallback content</div></slot>
       </div>
     </template>
   </div>
@@ -50,7 +50,7 @@
 test(() => {
   assert_array_equals(n2.innerSlot.assignedNodes(), [n2.slot]);
   assert_array_equals(n2.innerSlot.assignedNodes({ flatten: true }),
-		      [n2.fallback]);
+                      [n2.fallback]);
 }, 'Slot fallback content in shadow tree should be counted in flattened ' +
    'assigned nodes.');
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/storage/persist-permission-manual.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/storage/persist-permission-manual.https-expected.txt
new file mode 100644
index 0000000..3a7b644
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/storage/persist-permission-manual.https-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Expect permission state is granted after calling persist() assert_true: expected true got false
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/storage/persist-permission-manual.https.html b/third_party/WebKit/LayoutTests/external/wpt/storage/persist-permission-manual.https.html
new file mode 100644
index 0000000..aa49900
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/storage/persist-permission-manual.https.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>StorageManager: permission state is granted</title>
+    <p>Clear all persistent storage permissions before running this test.</p>
+    <p>Test passes if there is a permission prompt and click allow store persistent data</p>
+    <meta name="help" href="https://storage.spec.whatwg.org/#dom-storagemanager-persist">
+    <meta name="author" title="Mozilla" href="https://www.mozilla.org">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <script>
+    promise_test(function(t) {
+      return navigator.storage.persist()
+      .then(function(result) {
+        assert_true(result);
+        return navigator.storage.persisted();
+      })
+      .then(function(result) {
+        assert_true(result);
+      })
+    }, 'Expect permission state is granted after calling persist()');
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/storage/persisted-worker.https.html b/third_party/WebKit/LayoutTests/external/wpt/storage/persisted-worker.https.html
new file mode 100644
index 0000000..21f5c8bd
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/storage/persisted-worker.https.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>StorageManager: persisted() from worker</title>
+    <meta name="help" href="https://storage.spec.whatwg.org/#dom-storagemanager-persisted">
+    <meta name="author" title="Mozilla" href="https://www.mozilla.org">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <script>
+      fetch_tests_from_worker(new Worker("storage-persisted.js"));
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/storage/persisted.https.html b/third_party/WebKit/LayoutTests/external/wpt/storage/persisted.https.html
new file mode 100644
index 0000000..a5a91ff
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/storage/persisted.https.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>StorageManager: persisted()</title>
+    <meta name="help" href="https://storage.spec.whatwg.org/#dom-storagemanager-persisted">
+    <meta name="author" title="Mozilla" href="https://www.mozilla.org">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <script src="storage-persisted.js"></script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/storage/storage-persisted.js b/third_party/WebKit/LayoutTests/external/wpt/storage/storage-persisted.js
new file mode 100644
index 0000000..5bc86fe
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/storage/storage-persisted.js
@@ -0,0 +1,18 @@
+if (this.document === undefined) {
+  importScripts("/resources/testharness.js");
+}
+
+test(function(t) {
+  assert_true('persisted' in navigator.storage);
+  assert_equals(typeof navigator.storage.persisted, 'function');
+  assert_true(navigator.storage.persisted() instanceof Promise);
+}, 'persisted() method exists and returns a Promise');
+
+promise_test(function(t) {
+  return navigator.storage.persisted().then(function(result) {
+    assert_equals(typeof result, 'boolean');
+    assert_equals(result, false);
+  });
+}, 'persisted() returns a promise and resolves as boolean with false');
+
+done();
diff --git a/third_party/WebKit/LayoutTests/external/wpt/svg/interfaces-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/svg/interfaces-expected.txt
index 0bcca377..d88ae17b 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/svg/interfaces-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/svg/interfaces-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 6082 tests; 5729 PASS, 353 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 6072 tests; 5729 PASS, 343 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Document interface: attribute rootElement 
 PASS SVGElement interface: existence and properties of interface object 
 PASS SVGElement interface object length 
@@ -3496,16 +3496,6 @@
 PASS SVGElement interface: script must inherit property "ontoggle" with the proper type (67) 
 PASS SVGElement interface: script must inherit property "onvolumechange" with the proper type (68) 
 PASS SVGElement interface: script must inherit property "onwaiting" with the proper type (69) 
-FAIL SVGZoomEvent interface: existence and properties of interface object assert_own_property: self does not have own property "SVGZoomEvent" expected property "SVGZoomEvent" missing
-FAIL SVGZoomEvent interface object length assert_own_property: self does not have own property "SVGZoomEvent" expected property "SVGZoomEvent" missing
-FAIL SVGZoomEvent interface object name assert_own_property: self does not have own property "SVGZoomEvent" expected property "SVGZoomEvent" missing
-FAIL SVGZoomEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "SVGZoomEvent" expected property "SVGZoomEvent" missing
-FAIL SVGZoomEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "SVGZoomEvent" expected property "SVGZoomEvent" missing
-FAIL SVGZoomEvent interface: attribute zoomRectScreen assert_own_property: self does not have own property "SVGZoomEvent" expected property "SVGZoomEvent" missing
-FAIL SVGZoomEvent interface: attribute previousScale assert_own_property: self does not have own property "SVGZoomEvent" expected property "SVGZoomEvent" missing
-FAIL SVGZoomEvent interface: attribute previousTranslate assert_own_property: self does not have own property "SVGZoomEvent" expected property "SVGZoomEvent" missing
-FAIL SVGZoomEvent interface: attribute newScale assert_own_property: self does not have own property "SVGZoomEvent" expected property "SVGZoomEvent" missing
-FAIL SVGZoomEvent interface: attribute newTranslate assert_own_property: self does not have own property "SVGZoomEvent" expected property "SVGZoomEvent" missing
 PASS SVGAElement interface: existence and properties of interface object 
 PASS SVGAElement interface object length 
 PASS SVGAElement interface object name 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/svg/interfaces.html b/third_party/WebKit/LayoutTests/external/wpt/svg/interfaces.html
index 98346c4a..36132e2d 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/svg/interfaces.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/svg/interfaces.html
@@ -984,14 +984,6 @@
 
 SVGScriptElement implements SVGURIReference;
 
-interface SVGZoomEvent : UIEvent {
-  [SameObject] readonly attribute DOMRectReadOnly zoomRectScreen;
-  readonly attribute float previousScale;
-  [SameObject] readonly attribute DOMPointReadOnly previousTranslate;
-  readonly attribute float newScale;
-  [SameObject] readonly attribute DOMPointReadOnly newTranslate;
-};
-
 interface SVGAElement : SVGGraphicsElement {
   [SameObject] readonly attribute SVGAnimatedString target;
 };
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/README.md b/third_party/WebKit/LayoutTests/external/wpt/url/README.md
new file mode 100644
index 0000000..4cb3c00
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/README.md
@@ -0,0 +1,23 @@
+These tests are for browsers, but the data for
+`a-element.html`, `url-constructor.html`, and `a-element-xhtml.xhtml`
+is in `urltestdata.json` and can be re-used by non-browser implementations.
+This file contains a JSON array of comments as strings and test cases as objects.
+The keys for each test case are:
+
+* `base`: an absolute URL as a string whose [parsing] without a base of its own should succeed.
+  This key is always present,
+  and may have a value like `"about:blank"` when `input` is an absolute URL.
+* `input`: an URL as a string to be [parsed][parsing] with `base` as its base URL.
+* Either:
+  * `failure` with the value `true`, indicating that parsing `input` should return failure,
+  * or `href`, `origin`, `protocol`, `username`, `password`, `host`, `hostname`, `port`,
+    `pathname`, `search`, and `hash` with string values;
+    indicating that parsing `input` should return an URL record
+    and that the getters of each corresponding attribute in that URL’s [API]
+    should return the corresponding value.
+
+    The `origin` key may be missing.
+    In that case, the API’s `origin` attribute is not tested.
+
+[parsing]: https://url.spec.whatwg.org/#concept-basic-url-parser
+[API]: https://url.spec.whatwg.org/#api
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin-xhtml.xhtml b/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin-xhtml.xhtml
new file mode 100644
index 0000000..3d0d72e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin-xhtml.xhtml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <title>URL Test</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <base id="base"/>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script src="a-element-origin.js"></script>
+  </body>
+</html>
+<!-- Other dependencies: urltestdata.json -->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin.html b/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin.html
new file mode 100644
index 0000000..28ef696
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin.html
@@ -0,0 +1,8 @@
+<!doctype html>
+<meta charset=utf-8>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<base id=base>
+<div id=log></div>
+<script src=a-element-origin.js></script>
+<!-- Other dependencies: urltestdata.json -->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin.js b/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin.js
new file mode 100644
index 0000000..a1202db5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/a-element-origin.js
@@ -0,0 +1,35 @@
+var setup = async_test("Loading data…")
+setup.step(function() {
+  var request = new XMLHttpRequest()
+  request.open("GET", "urltestdata.json")
+  request.send()
+  request.responseType = "json"
+  request.onload = setup.step_func(function() {
+    runURLTests(request.response)
+    setup.done()
+  })
+})
+
+function setBase(base) {
+  document.getElementById("base").href = base
+}
+
+function bURL(url, base) {
+  base = base || "about:blank"
+  setBase(base)
+  var a = document.createElement("a")
+  a.setAttribute("href", url)
+  return a
+}
+
+function runURLTests(urltests) {
+  for(var i = 0, l = urltests.length; i < l; i++) {
+    var expected = urltests[i]
+    if (typeof expected === "string" || !("origin" in expected)) continue
+
+    test(function() {
+      var url = bURL(expected.input, expected.base)
+      assert_equals(url.origin, expected.origin, "origin")
+    }, "Parsing origin: <" + expected.input + "> against <" + expected.base + ">")
+  }
+}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/a-element-xhtml.xhtml b/third_party/WebKit/LayoutTests/external/wpt/url/a-element-xhtml.xhtml
new file mode 100644
index 0000000..fda4c360
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/a-element-xhtml.xhtml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <title>URL Test</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <base id="base"/>
+  </head>
+  <body>
+    <div id="log"></div>
+    <script src="a-element.js"></script>
+  </body>
+</html>
+<!-- Other dependencies: urltestdata.json -->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/a-element.html b/third_party/WebKit/LayoutTests/external/wpt/url/a-element.html
new file mode 100644
index 0000000..1b7e2fdd
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/a-element.html
@@ -0,0 +1,8 @@
+<!doctype html>
+<meta charset=utf-8>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<base id=base>
+<div id=log></div>
+<script src=a-element.js></script>
+<!-- Other dependencies: urltestdata.json -->
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/a-element.js b/third_party/WebKit/LayoutTests/external/wpt/url/a-element.js
new file mode 100644
index 0000000..a3d78139
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/a-element.js
@@ -0,0 +1,52 @@
+var setup = async_test("Loading data…")
+setup.step(function() {
+  var request = new XMLHttpRequest()
+  request.open("GET", "urltestdata.json")
+  request.send()
+  request.responseType = "json"
+  request.onload = setup.step_func(function() {
+    runURLTests(request.response)
+    setup.done()
+  })
+})
+
+function setBase(base) {
+  document.getElementById("base").href = base
+}
+
+function bURL(url, base) {
+  base = base || "about:blank"
+  setBase(base)
+  var a = document.createElement("a")
+  a.setAttribute("href", url)
+  return a
+}
+
+function runURLTests(urltests) {
+  for(var i = 0, l = urltests.length; i < l; i++) {
+    var expected = urltests[i]
+    if (typeof expected === "string") continue // skip comments
+
+    test(function() {
+      var url = bURL(expected.input, expected.base)
+      if(expected.failure) {
+        if(url.protocol !== ':') {
+          assert_unreached("Expected URL to fail parsing")
+        }
+        assert_equals(url.href, expected.input, "failure should set href to input")
+        return
+      }
+
+      assert_equals(url.href, expected.href, "href")
+      assert_equals(url.protocol, expected.protocol, "protocol")
+      assert_equals(url.username, expected.username, "username")
+      assert_equals(url.password, expected.password, "password")
+      assert_equals(url.host, expected.host, "host")
+      assert_equals(url.hostname, expected.hostname, "hostname")
+      assert_equals(url.port, expected.port, "port")
+      assert_equals(url.pathname, expected.pathname, "pathname")
+      assert_equals(url.search, expected.search, "search")
+      assert_equals(url.hash, expected.hash, "hash")
+    }, "Parsing: <" + expected.input + "> against <" + expected.base + ">")
+  }
+}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/failure.html b/third_party/WebKit/LayoutTests/external/wpt/url/failure.html
new file mode 100644
index 0000000..d097d4e3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/failure.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Test URL parser failure consistency</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id=log></div>
+<iframe></iframe>
+<script>
+promise_test(() => fetch("urltestdata.json").then(res => res.json()).then(runTests), "Loading data…")
+
+function runTests(testData) {
+  for(const test of testData) {
+    if (typeof test === "string" || !test.failure || test.base !== "about:blank") {
+      continue
+    }
+
+    const name = test.input + " should throw"
+
+    self.test(() => { // new URL itself is already tested by url-constructor.html
+      const url = new URL("about:blank")
+      assert_throws(new TypeError, () => url.href = test.input)
+    }, "URL's href: " + name)
+
+    self.test(() => {
+      const client = new XMLHttpRequest()
+      assert_throws("SyntaxError", () => client.open("GET", test.input))
+    }, "XHR: " + name)
+
+    self.test(() => {
+      assert_throws(new TypeError, () => self.navigator.sendBeacon(test.input))
+    }, "sendBeacon(): " + name)
+
+    self.test(() => {
+      assert_throws(new TypeError, () => self[0].location = test.input)
+    }, "Location's href: " + name)
+
+    self.test(() => {
+      assert_throws("SyntaxError", () => self.open(test.input).close())
+    }, "window.open(): " + name)
+  }
+}
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/historical.any.js b/third_party/WebKit/LayoutTests/external/wpt/url/historical.any.js
new file mode 100644
index 0000000..c3797ad
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/historical.any.js
@@ -0,0 +1,29 @@
+test(function() {
+  assert_false("searchParams" in self.location,
+               "location object should not have a searchParams attribute");
+}, "searchParams on location object");
+
+if(self.GLOBAL.isWindow()) {
+  test(() => {
+    assert_false("searchParams" in document.createElement("a"))
+    assert_false("searchParams" in document.createElement("area"))
+  }, "<a> and <area>.searchParams should be undefined");
+}
+
+test(function() {
+  var url = new URL("./foo", "http://www.example.org");
+  assert_equals(url.href, "http://www.example.org/foo");
+  assert_throws(new TypeError(), function() {
+    url.href = "./bar";
+  });
+}, "Setting URL's href attribute and base URLs");
+
+test(function() {
+  assert_equals(URL.domainToASCII, undefined);
+}, "URL.domainToASCII should be undefined");
+
+test(function() {
+  assert_equals(URL.domainToUnicode, undefined);
+}, "URL.domainToUnicode should be undefined");
+
+done();
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/interfaces-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/url/interfaces-expected.txt
new file mode 100644
index 0000000..6845f54
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/interfaces-expected.txt
@@ -0,0 +1,56 @@
+This is a testharness.js-based test.
+Found 52 tests; 48 PASS, 4 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS URL interface: existence and properties of interface object 
+PASS URL interface object length 
+PASS URL interface object name 
+PASS URL interface: existence and properties of interface prototype object 
+PASS URL interface: existence and properties of interface prototype object's "constructor" property 
+PASS URL interface: attribute href 
+PASS URL interface: stringifier 
+PASS URL interface: attribute origin 
+PASS URL interface: attribute protocol 
+PASS URL interface: attribute username 
+PASS URL interface: attribute password 
+PASS URL interface: attribute host 
+PASS URL interface: attribute hostname 
+PASS URL interface: attribute port 
+PASS URL interface: attribute pathname 
+PASS URL interface: attribute search 
+PASS URL interface: attribute searchParams 
+PASS URL interface: attribute hash 
+FAIL URL interface: operation toJSON() assert_own_property: interface prototype object missing non-static operation expected property "toJSON" missing
+PASS URL must be primary interface of new URL("http://foo") 
+PASS Stringification of new URL("http://foo") 
+PASS URL interface: new URL("http://foo") must inherit property "href" with the proper type (0) 
+PASS URL interface: new URL("http://foo") must inherit property "origin" with the proper type (1) 
+PASS URL interface: new URL("http://foo") must inherit property "protocol" with the proper type (2) 
+PASS URL interface: new URL("http://foo") must inherit property "username" with the proper type (3) 
+PASS URL interface: new URL("http://foo") must inherit property "password" with the proper type (4) 
+PASS URL interface: new URL("http://foo") must inherit property "host" with the proper type (5) 
+PASS URL interface: new URL("http://foo") must inherit property "hostname" with the proper type (6) 
+PASS URL interface: new URL("http://foo") must inherit property "port" with the proper type (7) 
+PASS URL interface: new URL("http://foo") must inherit property "pathname" with the proper type (8) 
+PASS URL interface: new URL("http://foo") must inherit property "search" with the proper type (9) 
+PASS URL interface: new URL("http://foo") must inherit property "searchParams" with the proper type (10) 
+PASS URL interface: new URL("http://foo") must inherit property "hash" with the proper type (11) 
+FAIL URL interface: new URL("http://foo") must inherit property "toJSON" with the proper type (12) assert_inherits: property "toJSON" not found in prototype chain
+PASS URLSearchParams interface: existence and properties of interface object 
+PASS URLSearchParams interface object length 
+PASS URLSearchParams interface object name 
+PASS URLSearchParams interface: existence and properties of interface prototype object 
+PASS URLSearchParams interface: existence and properties of interface prototype object's "constructor" property 
+PASS URLSearchParams interface: operation append(USVString,USVString) 
+PASS URLSearchParams interface: operation delete(USVString) 
+PASS URLSearchParams interface: operation get(USVString) 
+PASS URLSearchParams interface: operation getAll(USVString) 
+PASS URLSearchParams interface: operation has(USVString) 
+PASS URLSearchParams interface: operation set(USVString,USVString) 
+FAIL Testing Symbol.iterator property of iterable interface URLSearchParams assert_equals: @@iterator function does not have the right name expected "entries" but got ""
+FAIL Testing pair iterable interface URLSearchParams assert_equals: entries method is not the same as @@iterator expected function "function entries() { [native code] }" but got function "function () { [native code] }"
+PASS URLSearchParams interface: stringifier 
+PASS URLSearchParams interface: operation entries() 
+PASS URLSearchParams interface: operation keys() 
+PASS URLSearchParams interface: operation values() 
+PASS URLSearchParams interface: operation forEach(function,any) 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/interfaces.html b/third_party/WebKit/LayoutTests/external/wpt/url/interfaces.html
new file mode 100644
index 0000000..0daf3f5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/interfaces.html
@@ -0,0 +1,64 @@
+<!doctype html>
+<title>URL IDL tests</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/resources/WebIDLParser.js></script>
+<script src=/resources/idlharness.js></script>
+
+<h1>URL IDL tests</h1>
+<div id=log></div>
+
+<script type=text/plain>
+[Constructor(USVString url, optional USVString base),
+ Exposed=(Window,Worker)]
+interface URL {
+  stringifier attribute USVString href;
+  readonly attribute USVString origin;
+           attribute USVString protocol;
+           attribute USVString username;
+           attribute USVString password;
+           attribute USVString host;
+           attribute USVString hostname;
+           attribute USVString port;
+           attribute USVString pathname;
+           attribute USVString search;
+  readonly attribute URLSearchParams searchParams;
+           attribute USVString hash;
+
+  USVString toJSON();
+};
+
+[Constructor(optional (USVString or URLSearchParams) init = ""),
+ Exposed=(Window,Worker)]
+interface URLSearchParams {
+  void append(USVString name, USVString value);
+  void delete(USVString name);
+  USVString? get(USVString name);
+  sequence<USVString> getAll(USVString name);
+  boolean has(USVString name);
+  void set(USVString name, USVString value);
+  iterable<USVString, USVString>;
+  stringifier;
+};
+</script>
+<script>
+"use strict";
+var idlArray;
+setup(function() {
+  idlArray = new IdlArray();
+  [].forEach.call(document.querySelectorAll("script[type=text\\/plain]"), function(node) {
+    if (node.className == "untested") {
+      idlArray.add_untested_idls(node.textContent);
+    } else {
+      idlArray.add_idls(node.textContent);
+    }
+  });
+}, {explicit_done:true});
+window.onload = function() {
+  idlArray.add_objects({
+    URL: ['new URL("http://foo")']
+  });
+  idlArray.test();
+  done();
+};
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/setters_tests.json b/third_party/WebKit/LayoutTests/external/wpt/url/setters_tests.json
new file mode 100644
index 0000000..fa40dda
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/setters_tests.json
@@ -0,0 +1,1805 @@
+{
+    "comment": [
+        "## Tests for setters of https://url.spec.whatwg.org/#urlutils-members",
+        "",
+        "This file contains a JSON object.",
+        "Other than 'comment', each key is an attribute of the `URL` interface",
+        "defined in WHATWG’s URL Standard.",
+        "The values are arrays of test case objects for that attribute.",
+        "",
+        "To run a test case for the attribute `attr`:",
+        "",
+        "* Create a new `URL` object with the value for the 'href' key",
+        "  the constructor single parameter. (Without a base URL.)",
+        "  This must not throw.",
+        "* Set the attribute `attr` to (invoke its setter with)",
+        "  with the value of for 'new_value' key.",
+        "* The value for the 'expected' key is another object.",
+        "  For each `key` / `value` pair of that object,",
+        "  get the attribute `key` (invoke its getter).",
+        "  The returned string must be equal to `value`.",
+        "",
+        "Note: the 'href' setter is already covered by urltestdata.json."
+    ],
+    "protocol": [
+        {
+            "comment": "The empty string is not a valid scheme. Setter leaves the URL unchanged.",
+            "href": "a://example.net",
+            "new_value": "",
+            "expected": {
+                "href": "a://example.net",
+                "protocol": "a:"
+            }
+        },
+        {
+            "href": "a://example.net",
+            "new_value": "b",
+            "expected": {
+                "href": "b://example.net",
+                "protocol": "b:"
+            }
+        },
+        {
+            "href": "javascript:alert(1)",
+            "new_value": "defuse",
+            "expected": {
+                "href": "defuse:alert(1)",
+                "protocol": "defuse:"
+            }
+        },
+        {
+            "comment": "Upper-case ASCII is lower-cased",
+            "href": "a://example.net",
+            "new_value": "B",
+            "expected": {
+                "href": "b://example.net",
+                "protocol": "b:"
+            }
+        },
+        {
+            "comment": "Non-ASCII is rejected",
+            "href": "a://example.net",
+            "new_value": "é",
+            "expected": {
+                "href": "a://example.net",
+                "protocol": "a:"
+            }
+        },
+        {
+            "comment": "No leading digit",
+            "href": "a://example.net",
+            "new_value": "0b",
+            "expected": {
+                "href": "a://example.net",
+                "protocol": "a:"
+            }
+        },
+        {
+            "comment": "No leading punctuation",
+            "href": "a://example.net",
+            "new_value": "+b",
+            "expected": {
+                "href": "a://example.net",
+                "protocol": "a:"
+            }
+        },
+        {
+            "href": "a://example.net",
+            "new_value": "bC0+-.",
+            "expected": {
+                "href": "bc0+-.://example.net",
+                "protocol": "bc0+-.:"
+            }
+        },
+        {
+            "comment": "Only some punctuation is acceptable",
+            "href": "a://example.net",
+            "new_value": "b,c",
+            "expected": {
+                "href": "a://example.net",
+                "protocol": "a:"
+            }
+        },
+        {
+            "comment": "Non-ASCII is rejected",
+            "href": "a://example.net",
+            "new_value": "bé",
+            "expected": {
+                "href": "a://example.net",
+                "protocol": "a:"
+            }
+        },
+        {
+            "comment": "Can’t switch from URL containing username/password/port to file",
+            "href": "http://test@example.net",
+            "new_value": "file",
+            "expected": {
+                "href": "http://test@example.net/",
+                "protocol": "http:"
+            }
+        },
+        {
+            "href": "gopher://example.net:1234",
+            "new_value": "file",
+            "expected": {
+                "href": "gopher://example.net:1234/",
+                "protocol": "gopher:"
+            }
+        },
+        {
+            "href": "wss://x:x@example.net:1234",
+            "new_value": "file",
+            "expected": {
+                "href": "wss://x:x@example.net:1234/",
+                "protocol": "wss:"
+            }
+        },
+        {
+            "comment": "Can’t switch from file URL with no host",
+            "href": "file://localhost/",
+            "new_value": "http",
+            "expected": {
+                "href": "file:///",
+                "protocol": "file:"
+            }
+        },
+        {
+            "href": "file:///test",
+            "new_value": "gopher",
+            "expected": {
+                "href": "file:///test",
+                "protocol": "file:"
+            }
+        },
+        {
+            "href": "file:",
+            "new_value": "wss",
+            "expected": {
+                "href": "file:///",
+                "protocol": "file:"
+            }
+        },
+        {
+            "comment": "Can’t switch from special scheme to non-special",
+            "href": "http://example.net",
+            "new_value": "b",
+            "expected": {
+                "href": "http://example.net/",
+                "protocol": "http:"
+            }
+        },
+        {
+            "href": "file://hi/path",
+            "new_value": "s",
+            "expected": {
+                "href": "file://hi/path",
+                "protocol": "file:"
+            }
+        },
+        {
+            "href": "https://example.net",
+            "new_value": "s",
+            "expected": {
+                "href": "https://example.net/",
+                "protocol": "https:"
+            }
+        },
+        {
+            "href": "ftp://example.net",
+            "new_value": "test",
+            "expected": {
+                "href": "ftp://example.net/",
+                "protocol": "ftp:"
+            }
+        },
+        {
+            "comment": "Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must.",
+            "href": "mailto:me@example.net",
+            "new_value": "http",
+            "expected": {
+                "href": "mailto:me@example.net",
+                "protocol": "mailto:"
+            }
+        },
+        {
+            "comment": "Can’t switch from non-special scheme to special",
+            "href": "ssh://me@example.net",
+            "new_value": "http",
+            "expected": {
+                "href": "ssh://me@example.net",
+                "protocol": "ssh:"
+            }
+        },
+        {
+            "href": "ssh://me@example.net",
+            "new_value": "gopher",
+            "expected": {
+                "href": "ssh://me@example.net",
+                "protocol": "ssh:"
+            }
+        },
+        {
+            "href": "ssh://me@example.net",
+            "new_value": "file",
+            "expected": {
+                "href": "ssh://me@example.net",
+                "protocol": "ssh:"
+            }
+        },
+        {
+            "href": "ssh://example.net",
+            "new_value": "file",
+            "expected": {
+                "href": "ssh://example.net",
+                "protocol": "ssh:"
+            }
+        },
+        {
+            "href": "nonsense:///test",
+            "new_value": "https",
+            "expected": {
+                "href": "nonsense:///test",
+                "protocol": "nonsense:"
+            }
+        },
+        {
+            "comment": "Stuff after the first ':' is ignored",
+            "href": "http://example.net",
+            "new_value": "https:foo : bar",
+            "expected": {
+                "href": "https://example.net/",
+                "protocol": "https:"
+            }
+        },
+        {
+            "comment": "Stuff after the first ':' is ignored",
+            "href": "data:text/html,<p>Test",
+            "new_value": "view-source+data:foo : bar",
+            "expected": {
+                "href": "view-source+data:text/html,<p>Test",
+                "protocol": "view-source+data:"
+            }
+        }
+    ],
+    "username": [
+        {
+            "comment": "No host means no username",
+            "href": "file:///home/you/index.html",
+            "new_value": "me",
+            "expected": {
+                "href": "file:///home/you/index.html",
+                "username": ""
+            }
+        },
+        {
+            "comment": "No host means no username",
+            "href": "unix:/run/foo.socket",
+            "new_value": "me",
+            "expected": {
+                "href": "unix:/run/foo.socket",
+                "username": ""
+            }
+        },
+        {
+            "comment": "Cannot-be-a-base means no username",
+            "href": "mailto:you@example.net",
+            "new_value": "me",
+            "expected": {
+                "href": "mailto:you@example.net",
+                "username": ""
+            }
+        },
+        {
+            "href": "javascript:alert(1)",
+            "new_value": "wario",
+            "expected": {
+                "href": "javascript:alert(1)",
+                "username": ""
+            }
+        },
+        {
+            "href": "http://example.net",
+            "new_value": "me",
+            "expected": {
+                "href": "http://me@example.net/",
+                "username": "me"
+            }
+        },
+        {
+            "href": "http://:secret@example.net",
+            "new_value": "me",
+            "expected": {
+                "href": "http://me:secret@example.net/",
+                "username": "me"
+            }
+        },
+        {
+            "href": "http://me@example.net",
+            "new_value": "",
+            "expected": {
+                "href": "http://example.net/",
+                "username": ""
+            }
+        },
+        {
+            "href": "http://me:secret@example.net",
+            "new_value": "",
+            "expected": {
+                "href": "http://:secret@example.net/",
+                "username": ""
+            }
+        },
+        {
+            "comment": "UTF-8 percent encoding with the userinfo encode set.",
+            "href": "http://example.net",
+            "new_value": "\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~\u007f\u0080\u0081Éé",
+            "expected": {
+                "href": "http://%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/",
+                "username": "%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9"
+            }
+        },
+        {
+            "comment": "Bytes already percent-encoded are left as-is.",
+            "href": "http://example.net",
+            "new_value": "%c3%89té",
+            "expected": {
+                "href": "http://%c3%89t%C3%A9@example.net/",
+                "username": "%c3%89t%C3%A9"
+            }
+        },
+        {
+            "href": "sc:///",
+            "new_value": "x",
+            "expected": {
+                "href": "sc:///",
+                "username": ""
+            }
+        },
+        {
+            "href": "javascript://x/",
+            "new_value": "wario",
+            "expected": {
+                "href": "javascript://wario@x/",
+                "username": "wario"
+            }
+        },
+        {
+            "href": "file://test/",
+            "new_value": "test",
+            "expected": {
+                "href": "file://test/",
+                "username": ""
+            }
+        }
+    ],
+    "password": [
+        {
+            "comment": "No host means no password",
+            "href": "file:///home/me/index.html",
+            "new_value": "secret",
+            "expected": {
+                "href": "file:///home/me/index.html",
+                "password": ""
+            }
+        },
+        {
+            "comment": "No host means no password",
+            "href": "unix:/run/foo.socket",
+            "new_value": "secret",
+            "expected": {
+                "href": "unix:/run/foo.socket",
+                "password": ""
+            }
+        },
+        {
+            "comment": "Cannot-be-a-base means no password",
+            "href": "mailto:me@example.net",
+            "new_value": "secret",
+            "expected": {
+                "href": "mailto:me@example.net",
+                "password": ""
+            }
+        },
+        {
+            "href": "http://example.net",
+            "new_value": "secret",
+            "expected": {
+                "href": "http://:secret@example.net/",
+                "password": "secret"
+            }
+        },
+        {
+            "href": "http://me@example.net",
+            "new_value": "secret",
+            "expected": {
+                "href": "http://me:secret@example.net/",
+                "password": "secret"
+            }
+        },
+        {
+            "href": "http://:secret@example.net",
+            "new_value": "",
+            "expected": {
+                "href": "http://example.net/",
+                "password": ""
+            }
+        },
+        {
+            "href": "http://me:secret@example.net",
+            "new_value": "",
+            "expected": {
+                "href": "http://me@example.net/",
+                "password": ""
+            }
+        },
+        {
+            "comment": "UTF-8 percent encoding with the userinfo encode set.",
+            "href": "http://example.net",
+            "new_value": "\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~\u007f\u0080\u0081Éé",
+            "expected": {
+                "href": "http://:%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/",
+                "password": "%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9"
+            }
+        },
+        {
+            "comment": "Bytes already percent-encoded are left as-is.",
+            "href": "http://example.net",
+            "new_value": "%c3%89té",
+            "expected": {
+                "href": "http://:%c3%89t%C3%A9@example.net/",
+                "password": "%c3%89t%C3%A9"
+            }
+        },
+        {
+            "href": "sc:///",
+            "new_value": "x",
+            "expected": {
+                "href": "sc:///",
+                "password": ""
+            }
+        },
+        {
+            "href": "javascript://x/",
+            "new_value": "bowser",
+            "expected": {
+                "href": "javascript://:bowser@x/",
+                "password": "bowser"
+            }
+        },
+        {
+            "href": "file://test/",
+            "new_value": "test",
+            "expected": {
+                "href": "file://test/",
+                "password": ""
+            }
+        }
+    ],
+    "host": [
+        {
+            "comment": "Non-special scheme",
+            "href": "sc://x/",
+            "new_value": "\u0000",
+            "expected": {
+                "href": "sc://x/",
+                "host": "x",
+                "hostname": "x"
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": "\u0009",
+            "expected": {
+                "href": "sc:///",
+                "host": "",
+                "hostname": ""
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": "\u000A",
+            "expected": {
+                "href": "sc:///",
+                "host": "",
+                "hostname": ""
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": "\u000D",
+            "expected": {
+                "href": "sc:///",
+                "host": "",
+                "hostname": ""
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": " ",
+            "expected": {
+                "href": "sc://x/",
+                "host": "x",
+                "hostname": "x"
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": "#",
+            "expected": {
+                "href": "sc:///",
+                "host": "",
+                "hostname": ""
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": "/",
+            "expected": {
+                "href": "sc:///",
+                "host": "",
+                "hostname": ""
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": "?",
+            "expected": {
+                "href": "sc:///",
+                "host": "",
+                "hostname": ""
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": "@",
+            "expected": {
+                "href": "sc://x/",
+                "host": "x",
+                "hostname": "x"
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": "ß",
+            "expected": {
+                "href": "sc://%C3%9F/",
+                "host": "%C3%9F",
+                "hostname": "%C3%9F"
+            }
+        },
+        {
+            "comment": "IDNA Nontransitional_Processing",
+            "href": "https://x/",
+            "new_value": "ß",
+            "expected": {
+                "href": "https://xn--zca/",
+                "host": "xn--zca",
+                "hostname": "xn--zca"
+            }
+        },
+        {
+            "comment": "Cannot-be-a-base means no host",
+            "href": "mailto:me@example.net",
+            "new_value": "example.com",
+            "expected": {
+                "href": "mailto:me@example.net",
+                "host": ""
+            }
+        },
+        {
+            "comment": "Cannot-be-a-base means no password",
+            "href": "data:text/plain,Stuff",
+            "new_value": "example.net",
+            "expected": {
+                "href": "data:text/plain,Stuff",
+                "host": ""
+            }
+        },
+        {
+            "href": "http://example.net",
+            "new_value": "example.com:8080",
+            "expected": {
+                "href": "http://example.com:8080/",
+                "host": "example.com:8080",
+                "hostname": "example.com",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Port number is unchanged if not specified in the new value",
+            "href": "http://example.net:8080",
+            "new_value": "example.com",
+            "expected": {
+                "href": "http://example.com:8080/",
+                "host": "example.com:8080",
+                "hostname": "example.com",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Port number is unchanged if not specified",
+            "href": "http://example.net:8080",
+            "new_value": "example.com:",
+            "expected": {
+                "href": "http://example.com:8080/",
+                "host": "example.com:8080",
+                "hostname": "example.com",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "The empty host is not valid for special schemes",
+            "href": "http://example.net",
+            "new_value": "",
+            "expected": {
+                "href": "http://example.net/",
+                "host": "example.net"
+            }
+        },
+        {
+            "comment": "The empty host is OK for non-special schemes",
+            "href": "view-source+http://example.net/foo",
+            "new_value": "",
+            "expected": {
+                "href": "view-source+http:///foo",
+                "host": ""
+            }
+        },
+        {
+            "comment": "Path-only URLs can gain a host",
+            "href": "a:/foo",
+            "new_value": "example.net",
+            "expected": {
+                "href": "a://example.net/foo",
+                "host": "example.net"
+            }
+        },
+        {
+            "comment": "IPv4 address syntax is normalized",
+            "href": "http://example.net",
+            "new_value": "0x7F000001:8080",
+            "expected": {
+                "href": "http://127.0.0.1:8080/",
+                "host": "127.0.0.1:8080",
+                "hostname": "127.0.0.1",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "IPv6 address syntax is normalized",
+            "href": "http://example.net",
+            "new_value": "[::0:01]:2",
+            "expected": {
+                "href": "http://[::1]:2/",
+                "host": "[::1]:2",
+                "hostname": "[::1]",
+                "port": "2"
+            }
+        },
+        {
+            "comment": "Default port number is removed",
+            "href": "http://example.net",
+            "new_value": "example.com:80",
+            "expected": {
+                "href": "http://example.com/",
+                "host": "example.com",
+                "hostname": "example.com",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Default port number is removed",
+            "href": "https://example.net",
+            "new_value": "example.com:443",
+            "expected": {
+                "href": "https://example.com/",
+                "host": "example.com",
+                "hostname": "example.com",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Default port number is only removed for the relevant scheme",
+            "href": "https://example.net",
+            "new_value": "example.com:80",
+            "expected": {
+                "href": "https://example.com:80/",
+                "host": "example.com:80",
+                "hostname": "example.com",
+                "port": "80"
+            }
+        },
+        {
+            "comment": "Stuff after a / delimiter is ignored",
+            "href": "http://example.net/path",
+            "new_value": "example.com/stuff",
+            "expected": {
+                "href": "http://example.com/path",
+                "host": "example.com",
+                "hostname": "example.com",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Stuff after a / delimiter is ignored",
+            "href": "http://example.net/path",
+            "new_value": "example.com:8080/stuff",
+            "expected": {
+                "href": "http://example.com:8080/path",
+                "host": "example.com:8080",
+                "hostname": "example.com",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Stuff after a ? delimiter is ignored",
+            "href": "http://example.net/path",
+            "new_value": "example.com?stuff",
+            "expected": {
+                "href": "http://example.com/path",
+                "host": "example.com",
+                "hostname": "example.com",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Stuff after a ? delimiter is ignored",
+            "href": "http://example.net/path",
+            "new_value": "example.com:8080?stuff",
+            "expected": {
+                "href": "http://example.com:8080/path",
+                "host": "example.com:8080",
+                "hostname": "example.com",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Stuff after a # delimiter is ignored",
+            "href": "http://example.net/path",
+            "new_value": "example.com#stuff",
+            "expected": {
+                "href": "http://example.com/path",
+                "host": "example.com",
+                "hostname": "example.com",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Stuff after a # delimiter is ignored",
+            "href": "http://example.net/path",
+            "new_value": "example.com:8080#stuff",
+            "expected": {
+                "href": "http://example.com:8080/path",
+                "host": "example.com:8080",
+                "hostname": "example.com",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Stuff after a \\ delimiter is ignored for special schemes",
+            "href": "http://example.net/path",
+            "new_value": "example.com\\stuff",
+            "expected": {
+                "href": "http://example.com/path",
+                "host": "example.com",
+                "hostname": "example.com",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Stuff after a \\ delimiter is ignored for special schemes",
+            "href": "http://example.net/path",
+            "new_value": "example.com:8080\\stuff",
+            "expected": {
+                "href": "http://example.com:8080/path",
+                "host": "example.com:8080",
+                "hostname": "example.com",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "\\ is not a delimiter for non-special schemes, but still forbidden in hosts",
+            "href": "view-source+http://example.net/path",
+            "new_value": "example.com\\stuff",
+            "expected": {
+                "href": "view-source+http://example.net/path",
+                "host": "example.net",
+                "hostname": "example.net",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Anything other than ASCII digit stops the port parser in a setter but is not an error",
+            "href": "view-source+http://example.net/path",
+            "new_value": "example.com:8080stuff2",
+            "expected": {
+                "href": "view-source+http://example.com:8080/path",
+                "host": "example.com:8080",
+                "hostname": "example.com",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Anything other than ASCII digit stops the port parser in a setter but is not an error",
+            "href": "http://example.net/path",
+            "new_value": "example.com:8080stuff2",
+            "expected": {
+                "href": "http://example.com:8080/path",
+                "host": "example.com:8080",
+                "hostname": "example.com",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Anything other than ASCII digit stops the port parser in a setter but is not an error",
+            "href": "http://example.net/path",
+            "new_value": "example.com:8080+2",
+            "expected": {
+                "href": "http://example.com:8080/path",
+                "host": "example.com:8080",
+                "hostname": "example.com",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Port numbers are 16 bit integers",
+            "href": "http://example.net/path",
+            "new_value": "example.com:65535",
+            "expected": {
+                "href": "http://example.com:65535/path",
+                "host": "example.com:65535",
+                "hostname": "example.com",
+                "port": "65535"
+            }
+        },
+        {
+            "comment": "Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though.",
+            "href": "http://example.net/path",
+            "new_value": "example.com:65536",
+            "expected": {
+                "href": "http://example.com/path",
+                "host": "example.com",
+                "hostname": "example.com",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Broken IPv6",
+            "href": "http://example.net/",
+            "new_value": "[google.com]",
+            "expected": {
+                "href": "http://example.net/",
+                "host": "example.net",
+                "hostname": "example.net"
+            }
+        },
+        {
+            "href": "http://example.net/",
+            "new_value": "[::1.2.3.4x]",
+            "expected": {
+                "href": "http://example.net/",
+                "host": "example.net",
+                "hostname": "example.net"
+            }
+        },
+        {
+            "href": "http://example.net/",
+            "new_value": "[::1.2.3.]",
+            "expected": {
+                "href": "http://example.net/",
+                "host": "example.net",
+                "hostname": "example.net"
+            }
+        },
+        {
+            "href": "http://example.net/",
+            "new_value": "[::1.2.]",
+            "expected": {
+                "href": "http://example.net/",
+                "host": "example.net",
+                "hostname": "example.net"
+            }
+        },
+        {
+            "href": "http://example.net/",
+            "new_value": "[::1.]",
+            "expected": {
+                "href": "http://example.net/",
+                "host": "example.net",
+                "hostname": "example.net"
+            }
+        },
+        {
+            "href": "file://y/",
+            "new_value": "x:123",
+            "expected": {
+                "href": "file://y/",
+                "host": "y",
+                "hostname": "y",
+                "port": ""
+            }
+        },
+        {
+            "href": "file://y/",
+            "new_value": "loc%41lhost",
+            "expected": {
+                "href": "file:///",
+                "host": "",
+                "hostname": "",
+                "port": ""
+            }
+        },
+        {
+            "href": "file://hi/x",
+            "new_value": "",
+            "expected": {
+                "href": "file:///x",
+                "host": "",
+                "hostname": "",
+                "port": ""
+            }
+        },
+        {
+            "href": "sc://test@test/",
+            "new_value": "",
+            "expected": {
+                "href": "sc://test@test/",
+                "host": "test",
+                "hostname": "test",
+                "username": "test"
+            }
+        },
+        {
+            "href": "sc://test:12/",
+            "new_value": "",
+            "expected": {
+                "href": "sc://test:12/",
+                "host": "test:12",
+                "hostname": "test",
+                "port": "12"
+            }
+        }
+    ],
+    "hostname": [
+        {
+            "comment": "Non-special scheme",
+            "href": "sc://x/",
+            "new_value": "\u0000",
+            "expected": {
+                "href": "sc://x/",
+                "host": "x",
+                "hostname": "x"
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": "\u0009",
+            "expected": {
+                "href": "sc:///",
+                "host": "",
+                "hostname": ""
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": "\u000A",
+            "expected": {
+                "href": "sc:///",
+                "host": "",
+                "hostname": ""
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": "\u000D",
+            "expected": {
+                "href": "sc:///",
+                "host": "",
+                "hostname": ""
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": " ",
+            "expected": {
+                "href": "sc://x/",
+                "host": "x",
+                "hostname": "x"
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": "#",
+            "expected": {
+                "href": "sc:///",
+                "host": "",
+                "hostname": ""
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": "/",
+            "expected": {
+                "href": "sc:///",
+                "host": "",
+                "hostname": ""
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": "?",
+            "expected": {
+                "href": "sc:///",
+                "host": "",
+                "hostname": ""
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": "@",
+            "expected": {
+                "href": "sc://x/",
+                "host": "x",
+                "hostname": "x"
+            }
+        },
+        {
+            "comment": "Cannot-be-a-base means no host",
+            "href": "mailto:me@example.net",
+            "new_value": "example.com",
+            "expected": {
+                "href": "mailto:me@example.net",
+                "host": ""
+            }
+        },
+        {
+            "comment": "Cannot-be-a-base means no password",
+            "href": "data:text/plain,Stuff",
+            "new_value": "example.net",
+            "expected": {
+                "href": "data:text/plain,Stuff",
+                "host": ""
+            }
+        },
+        {
+            "href": "http://example.net:8080",
+            "new_value": "example.com",
+            "expected": {
+                "href": "http://example.com:8080/",
+                "host": "example.com:8080",
+                "hostname": "example.com",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "The empty host is not valid for special schemes",
+            "href": "http://example.net",
+            "new_value": "",
+            "expected": {
+                "href": "http://example.net/",
+                "host": "example.net"
+            }
+        },
+        {
+            "comment": "The empty host is OK for non-special schemes",
+            "href": "view-source+http://example.net/foo",
+            "new_value": "",
+            "expected": {
+                "href": "view-source+http:///foo",
+                "host": ""
+            }
+        },
+        {
+            "comment": "Path-only URLs can gain a host",
+            "href": "a:/foo",
+            "new_value": "example.net",
+            "expected": {
+                "href": "a://example.net/foo",
+                "host": "example.net"
+            }
+        },
+        {
+            "comment": "IPv4 address syntax is normalized",
+            "href": "http://example.net:8080",
+            "new_value": "0x7F000001",
+            "expected": {
+                "href": "http://127.0.0.1:8080/",
+                "host": "127.0.0.1:8080",
+                "hostname": "127.0.0.1",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "IPv6 address syntax is normalized",
+            "href": "http://example.net",
+            "new_value": "[::0:01]",
+            "expected": {
+                "href": "http://[::1]/",
+                "host": "[::1]",
+                "hostname": "[::1]",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Stuff after a : delimiter is ignored",
+            "href": "http://example.net/path",
+            "new_value": "example.com:8080",
+            "expected": {
+                "href": "http://example.com/path",
+                "host": "example.com",
+                "hostname": "example.com",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Stuff after a : delimiter is ignored",
+            "href": "http://example.net:8080/path",
+            "new_value": "example.com:",
+            "expected": {
+                "href": "http://example.com:8080/path",
+                "host": "example.com:8080",
+                "hostname": "example.com",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Stuff after a / delimiter is ignored",
+            "href": "http://example.net/path",
+            "new_value": "example.com/stuff",
+            "expected": {
+                "href": "http://example.com/path",
+                "host": "example.com",
+                "hostname": "example.com",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Stuff after a ? delimiter is ignored",
+            "href": "http://example.net/path",
+            "new_value": "example.com?stuff",
+            "expected": {
+                "href": "http://example.com/path",
+                "host": "example.com",
+                "hostname": "example.com",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Stuff after a # delimiter is ignored",
+            "href": "http://example.net/path",
+            "new_value": "example.com#stuff",
+            "expected": {
+                "href": "http://example.com/path",
+                "host": "example.com",
+                "hostname": "example.com",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Stuff after a \\ delimiter is ignored for special schemes",
+            "href": "http://example.net/path",
+            "new_value": "example.com\\stuff",
+            "expected": {
+                "href": "http://example.com/path",
+                "host": "example.com",
+                "hostname": "example.com",
+                "port": ""
+            }
+        },
+        {
+            "comment": "\\ is not a delimiter for non-special schemes, but still forbidden in hosts",
+            "href": "view-source+http://example.net/path",
+            "new_value": "example.com\\stuff",
+            "expected": {
+                "href": "view-source+http://example.net/path",
+                "host": "example.net",
+                "hostname": "example.net",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Broken IPv6",
+            "href": "http://example.net/",
+            "new_value": "[google.com]",
+            "expected": {
+                "href": "http://example.net/",
+                "host": "example.net",
+                "hostname": "example.net"
+            }
+        },
+        {
+            "href": "http://example.net/",
+            "new_value": "[::1.2.3.4x]",
+            "expected": {
+                "href": "http://example.net/",
+                "host": "example.net",
+                "hostname": "example.net"
+            }
+        },
+        {
+            "href": "http://example.net/",
+            "new_value": "[::1.2.3.]",
+            "expected": {
+                "href": "http://example.net/",
+                "host": "example.net",
+                "hostname": "example.net"
+            }
+        },
+        {
+            "href": "http://example.net/",
+            "new_value": "[::1.2.]",
+            "expected": {
+                "href": "http://example.net/",
+                "host": "example.net",
+                "hostname": "example.net"
+            }
+        },
+        {
+            "href": "http://example.net/",
+            "new_value": "[::1.]",
+            "expected": {
+                "href": "http://example.net/",
+                "host": "example.net",
+                "hostname": "example.net"
+            }
+        },
+        {
+            "href": "file://y/",
+            "new_value": "x:123",
+            "expected": {
+                "href": "file://y/",
+                "host": "y",
+                "hostname": "y",
+                "port": ""
+            }
+        },
+        {
+            "href": "file://y/",
+            "new_value": "loc%41lhost",
+            "expected": {
+                "href": "file:///",
+                "host": "",
+                "hostname": "",
+                "port": ""
+            }
+        },
+        {
+            "href": "file://hi/x",
+            "new_value": "",
+            "expected": {
+                "href": "file:///x",
+                "host": "",
+                "hostname": "",
+                "port": ""
+            }
+        },
+        {
+            "href": "sc://test@test/",
+            "new_value": "",
+            "expected": {
+                "href": "sc://test@test/",
+                "host": "test",
+                "hostname": "test",
+                "username": "test"
+            }
+        },
+        {
+            "href": "sc://test:12/",
+            "new_value": "",
+            "expected": {
+                "href": "sc://test:12/",
+                "host": "test:12",
+                "hostname": "test",
+                "port": "12"
+            }
+        }
+    ],
+    "port": [
+        {
+            "href": "http://example.net",
+            "new_value": "8080",
+            "expected": {
+                "href": "http://example.net:8080/",
+                "host": "example.net:8080",
+                "hostname": "example.net",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Port number is removed if empty is the new value",
+            "href": "http://example.net:8080",
+            "new_value": "",
+            "expected": {
+                "href": "http://example.net/",
+                "host": "example.net",
+                "hostname": "example.net",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Default port number is removed",
+            "href": "http://example.net:8080",
+            "new_value": "80",
+            "expected": {
+                "href": "http://example.net/",
+                "host": "example.net",
+                "hostname": "example.net",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Default port number is removed",
+            "href": "https://example.net:4433",
+            "new_value": "443",
+            "expected": {
+                "href": "https://example.net/",
+                "host": "example.net",
+                "hostname": "example.net",
+                "port": ""
+            }
+        },
+        {
+            "comment": "Default port number is only removed for the relevant scheme",
+            "href": "https://example.net",
+            "new_value": "80",
+            "expected": {
+                "href": "https://example.net:80/",
+                "host": "example.net:80",
+                "hostname": "example.net",
+                "port": "80"
+            }
+        },
+        {
+            "comment": "Stuff after a / delimiter is ignored",
+            "href": "http://example.net/path",
+            "new_value": "8080/stuff",
+            "expected": {
+                "href": "http://example.net:8080/path",
+                "host": "example.net:8080",
+                "hostname": "example.net",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Stuff after a ? delimiter is ignored",
+            "href": "http://example.net/path",
+            "new_value": "8080?stuff",
+            "expected": {
+                "href": "http://example.net:8080/path",
+                "host": "example.net:8080",
+                "hostname": "example.net",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Stuff after a # delimiter is ignored",
+            "href": "http://example.net/path",
+            "new_value": "8080#stuff",
+            "expected": {
+                "href": "http://example.net:8080/path",
+                "host": "example.net:8080",
+                "hostname": "example.net",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Stuff after a \\ delimiter is ignored for special schemes",
+            "href": "http://example.net/path",
+            "new_value": "8080\\stuff",
+            "expected": {
+                "href": "http://example.net:8080/path",
+                "host": "example.net:8080",
+                "hostname": "example.net",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Anything other than ASCII digit stops the port parser in a setter but is not an error",
+            "href": "view-source+http://example.net/path",
+            "new_value": "8080stuff2",
+            "expected": {
+                "href": "view-source+http://example.net:8080/path",
+                "host": "example.net:8080",
+                "hostname": "example.net",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Anything other than ASCII digit stops the port parser in a setter but is not an error",
+            "href": "http://example.net/path",
+            "new_value": "8080stuff2",
+            "expected": {
+                "href": "http://example.net:8080/path",
+                "host": "example.net:8080",
+                "hostname": "example.net",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Anything other than ASCII digit stops the port parser in a setter but is not an error",
+            "href": "http://example.net/path",
+            "new_value": "8080+2",
+            "expected": {
+                "href": "http://example.net:8080/path",
+                "host": "example.net:8080",
+                "hostname": "example.net",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Port numbers are 16 bit integers",
+            "href": "http://example.net/path",
+            "new_value": "65535",
+            "expected": {
+                "href": "http://example.net:65535/path",
+                "host": "example.net:65535",
+                "hostname": "example.net",
+                "port": "65535"
+            }
+        },
+        {
+            "comment": "Port numbers are 16 bit integers, overflowing is an error",
+            "href": "http://example.net:8080/path",
+            "new_value": "65536",
+            "expected": {
+                "href": "http://example.net:8080/path",
+                "host": "example.net:8080",
+                "hostname": "example.net",
+                "port": "8080"
+            }
+        },
+        {
+            "comment": "Port numbers are 16 bit integers, overflowing is an error",
+            "href": "non-special://example.net:8080/path",
+            "new_value": "65536",
+            "expected": {
+                "href": "non-special://example.net:8080/path",
+                "host": "example.net:8080",
+                "hostname": "example.net",
+                "port": "8080"
+            }
+        },
+        {
+            "href": "file://test/",
+            "new_value": "12",
+            "expected": {
+                "href": "file://test/",
+                "port": ""
+            }
+        },
+        {
+            "href": "file://localhost/",
+            "new_value": "12",
+            "expected": {
+                "href": "file:///",
+                "port": ""
+            }
+        },
+        {
+            "href": "non-base:value",
+            "new_value": "12",
+            "expected": {
+                "href": "non-base:value",
+                "port": ""
+            }
+        },
+        {
+            "href": "sc:///",
+            "new_value": "12",
+            "expected": {
+                "href": "sc:///",
+                "port": ""
+            }
+        },
+        {
+            "href": "sc://x/",
+            "new_value": "12",
+            "expected": {
+                "href": "sc://x:12/",
+                "port": "12"
+            }
+        },
+        {
+            "href": "javascript://x/",
+            "new_value": "12",
+            "expected": {
+                "href": "javascript://x:12/",
+                "port": "12"
+            }
+        }
+    ],
+    "pathname": [
+        {
+            "comment": "Cannot-be-a-base don’t have a path",
+            "href": "mailto:me@example.net",
+            "new_value": "/foo",
+            "expected": {
+                "href": "mailto:me@example.net",
+                "pathname": "me@example.net"
+            }
+        },
+        {
+            "href": "unix:/run/foo.socket?timeout=10",
+            "new_value": "/var/log/../run/bar.socket",
+            "expected": {
+                "href": "unix:/var/run/bar.socket?timeout=10",
+                "pathname": "/var/run/bar.socket"
+            }
+        },
+        {
+            "href": "https://example.net#nav",
+            "new_value": "home",
+            "expected": {
+                "href": "https://example.net/home#nav",
+                "pathname": "/home"
+            }
+        },
+        {
+            "href": "https://example.net#nav",
+            "new_value": "../home",
+            "expected": {
+                "href": "https://example.net/home#nav",
+                "pathname": "/home"
+            }
+        },
+        {
+            "comment": "\\ is a segment delimiter for 'special' URLs",
+            "href": "http://example.net/home?lang=fr#nav",
+            "new_value": "\\a\\%2E\\b\\%2e.\\c",
+            "expected": {
+                "href": "http://example.net/a/c?lang=fr#nav",
+                "pathname": "/a/c"
+            }
+        },
+        {
+            "comment": "\\ is *not* a segment delimiter for non-'special' URLs",
+            "href": "view-source+http://example.net/home?lang=fr#nav",
+            "new_value": "\\a\\%2E\\b\\%2e.\\c",
+            "expected": {
+                "href": "view-source+http://example.net/\\a\\%2E\\b\\%2e.\\c?lang=fr#nav",
+                "pathname": "/\\a\\%2E\\b\\%2e.\\c"
+            }
+        },
+        {
+            "comment": "UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.",
+            "href": "a:/",
+            "new_value": "\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~\u007f\u0080\u0081Éé",
+            "expected": {
+                "href": "a:/%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E%3F@AZ[\\]^_%60az%7B|%7D~%7F%C2%80%C2%81%C3%89%C3%A9",
+                "pathname": "/%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E%3F@AZ[\\]^_%60az%7B|%7D~%7F%C2%80%C2%81%C3%89%C3%A9"
+            }
+        },
+        {
+            "comment": "Bytes already percent-encoded are left as-is, including %2E outside dotted segments.",
+            "href": "http://example.net",
+            "new_value": "%2e%2E%c3%89té",
+            "expected": {
+                "href": "http://example.net/%2e%2E%c3%89t%C3%A9",
+                "pathname": "/%2e%2E%c3%89t%C3%A9"
+            }
+        },
+        {
+            "comment": "? needs to be encoded",
+            "href": "http://example.net",
+            "new_value": "?",
+            "expected": {
+                "href": "http://example.net/%3F",
+                "pathname": "/%3F"
+            }
+        },
+        {
+            "comment": "# needs to be encoded",
+            "href": "http://example.net",
+            "new_value": "#",
+            "expected": {
+                "href": "http://example.net/%23",
+                "pathname": "/%23"
+            }
+        },
+        {
+            "comment": "? needs to be encoded, non-special scheme",
+            "href": "sc://example.net",
+            "new_value": "?",
+            "expected": {
+                "href": "sc://example.net/%3F",
+                "pathname": "/%3F"
+            }
+        },
+        {
+            "comment": "# needs to be encoded, non-special scheme",
+            "href": "sc://example.net",
+            "new_value": "#",
+            "expected": {
+                "href": "sc://example.net/%23",
+                "pathname": "/%23"
+            }
+        },
+        {
+            "comment": "File URLs and (back)slashes",
+            "href": "file://monkey/",
+            "new_value": "\\\\",
+            "expected": {
+                "href": "file://monkey/",
+                "pathname": "/"
+            }
+        },
+        {
+            "comment": "File URLs and (back)slashes",
+            "href": "file:///unicorn",
+            "new_value": "//\\/",
+            "expected": {
+                "href": "file:///",
+                "pathname": "/"
+            }
+        },
+        {
+            "comment": "File URLs and (back)slashes",
+            "href": "file:///unicorn",
+            "new_value": "//monkey/..//",
+            "expected": {
+                "href": "file:///",
+                "pathname": "/"
+            }
+        }
+    ],
+    "search": [
+        {
+            "href": "https://example.net#nav",
+            "new_value": "lang=fr",
+            "expected": {
+                "href": "https://example.net/?lang=fr#nav",
+                "search": "?lang=fr"
+            }
+        },
+        {
+            "href": "https://example.net?lang=en-US#nav",
+            "new_value": "lang=fr",
+            "expected": {
+                "href": "https://example.net/?lang=fr#nav",
+                "search": "?lang=fr"
+            }
+        },
+        {
+            "href": "https://example.net?lang=en-US#nav",
+            "new_value": "?lang=fr",
+            "expected": {
+                "href": "https://example.net/?lang=fr#nav",
+                "search": "?lang=fr"
+            }
+        },
+        {
+            "href": "https://example.net?lang=en-US#nav",
+            "new_value": "??lang=fr",
+            "expected": {
+                "href": "https://example.net/??lang=fr#nav",
+                "search": "??lang=fr"
+            }
+        },
+        {
+            "href": "https://example.net?lang=en-US#nav",
+            "new_value": "?",
+            "expected": {
+                "href": "https://example.net/?#nav",
+                "search": ""
+            }
+        },
+        {
+            "href": "https://example.net?lang=en-US#nav",
+            "new_value": "",
+            "expected": {
+                "href": "https://example.net/#nav",
+                "search": ""
+            }
+        },
+        {
+            "href": "https://example.net?lang=en-US",
+            "new_value": "",
+            "expected": {
+                "href": "https://example.net/",
+                "search": ""
+            }
+        },
+        {
+            "href": "https://example.net",
+            "new_value": "",
+            "expected": {
+                "href": "https://example.net/",
+                "search": ""
+            }
+        },
+        {
+            "comment": "UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.",
+            "href": "a:/",
+            "new_value": "\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~\u007f\u0080\u0081Éé",
+            "expected": {
+                "href": "a:/?%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9",
+                "search": "?%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9"
+            }
+        },
+        {
+            "comment": "Bytes already percent-encoded are left as-is",
+            "href": "http://example.net",
+            "new_value": "%c3%89té",
+            "expected": {
+                "href": "http://example.net/?%c3%89t%C3%A9",
+                "search": "?%c3%89t%C3%A9"
+            }
+        }
+    ],
+    "hash": [
+        {
+            "href": "https://example.net",
+            "new_value": "main",
+            "expected": {
+                "href": "https://example.net/#main",
+                "hash": "#main"
+            }
+        },
+        {
+            "href": "https://example.net#nav",
+            "new_value": "main",
+            "expected": {
+                "href": "https://example.net/#main",
+                "hash": "#main"
+            }
+        },
+        {
+            "href": "https://example.net?lang=en-US",
+            "new_value": "##nav",
+            "expected": {
+                "href": "https://example.net/?lang=en-US##nav",
+                "hash": "##nav"
+            }
+        },
+        {
+            "href": "https://example.net?lang=en-US#nav",
+            "new_value": "#main",
+            "expected": {
+                "href": "https://example.net/?lang=en-US#main",
+                "hash": "#main"
+            }
+        },
+        {
+            "href": "https://example.net?lang=en-US#nav",
+            "new_value": "#",
+            "expected": {
+                "href": "https://example.net/?lang=en-US#",
+                "hash": ""
+            }
+        },
+        {
+            "href": "https://example.net?lang=en-US#nav",
+            "new_value": "",
+            "expected": {
+                "href": "https://example.net/?lang=en-US",
+                "hash": ""
+            }
+        },
+        {
+            "comment": "Simple percent-encoding; nuls, tabs, and newlines are removed",
+            "href": "a:/",
+            "new_value": "\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~\u007f\u0080\u0081Éé",
+            "expected": {
+                "href": "a:/#%01%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9",
+                "hash": "#%01%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9"
+            }
+        },
+        {
+            "comment": "Bytes already percent-encoded are left as-is",
+            "href": "http://example.net",
+            "new_value": "%c3%89té",
+            "expected": {
+                "href": "http://example.net/#%c3%89t%C3%A9",
+                "hash": "#%c3%89t%C3%A9"
+            }
+        },
+        {
+            "href": "javascript:alert(1)",
+            "new_value": "castle",
+            "expected": {
+                "href": "javascript:alert(1)#castle",
+                "hash": "#castle"
+            }
+        }
+    ]
+}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/url-constructor.html b/third_party/WebKit/LayoutTests/external/wpt/url/url-constructor.html
new file mode 100644
index 0000000..490917c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/url-constructor.html
@@ -0,0 +1,126 @@
+<!doctype html>
+<meta charset=utf-8>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id=log></div>
+<script>
+function runURLConstructorTests() {
+  var setup = async_test("Loading data…")
+  setup.step(function() {
+    var request = new XMLHttpRequest()
+    request.open("GET", "urltestdata.json")
+    request.send()
+    request.responseType = "json"
+    request.onload = setup.step_func(function() {
+      runURLTests(request.response)
+      setup.done()
+    })
+  })
+}
+
+function bURL(url, base) {
+  return new URL(url, base || "about:blank")
+}
+
+function runURLTests(urltests) {
+  for(var i = 0, l = urltests.length; i < l; i++) {
+    var expected = urltests[i]
+    if (typeof expected === "string") continue // skip comments
+
+    test(function() {
+      if (expected.failure) {
+        assert_throws(new TypeError(), function() {
+          bURL(expected.input, expected.base)
+        })
+        return
+      }
+
+      var url = bURL(expected.input, expected.base)
+      assert_equals(url.href, expected.href, "href")
+      assert_equals(url.protocol, expected.protocol, "protocol")
+      assert_equals(url.username, expected.username, "username")
+      assert_equals(url.password, expected.password, "password")
+      assert_equals(url.host, expected.host, "host")
+      assert_equals(url.hostname, expected.hostname, "hostname")
+      assert_equals(url.port, expected.port, "port")
+      assert_equals(url.pathname, expected.pathname, "pathname")
+      assert_equals(url.search, expected.search, "search")
+      if ("searchParams" in expected) {
+        assert_true("searchParams" in url)
+        assert_equals(url.searchParams.toString(), expected.searchParams, "searchParams")
+      }
+      assert_equals(url.hash, expected.hash, "hash")
+    }, "Parsing: <" + expected.input + "> against <" + expected.base + ">")
+  }
+}
+
+function runURLSearchParamTests() {
+  test(function() {
+    var url = bURL('http://example.org/?a=b')
+    assert_true("searchParams" in url)
+    var searchParams = url.searchParams
+    assert_true(url.searchParams === searchParams, 'Object identity should hold.')
+  }, 'URL.searchParams getter')
+
+  test(function() {
+    var url = bURL('http://example.org/?a=b')
+    assert_true("searchParams" in url)
+    var searchParams = url.searchParams
+    assert_equals(searchParams.toString(), 'a=b')
+
+    searchParams.set('a', 'b')
+    assert_equals(url.searchParams.toString(), 'a=b')
+    assert_equals(url.search, '?a=b')
+    url.search = ''
+    assert_equals(url.searchParams.toString(), '')
+    assert_equals(url.search, '')
+    assert_equals(searchParams.toString(), '')
+  }, 'URL.searchParams updating, clearing')
+
+  test(function() {
+    'use strict'
+    var urlString = 'http://example.org'
+    var url = bURL(urlString)
+    assert_throws(TypeError(), function() { url.searchParams = new URLSearchParams(urlString) })
+  }, 'URL.searchParams setter, invalid values')
+
+  test(function() {
+    var url = bURL('http://example.org/file?a=b&c=d')
+    assert_true("searchParams" in url)
+    var searchParams = url.searchParams
+    assert_equals(url.search, '?a=b&c=d')
+    assert_equals(searchParams.toString(), 'a=b&c=d')
+
+    // Test that setting 'search' propagates to the URL object's query object.
+    url.search = 'e=f&g=h'
+    assert_equals(url.search, '?e=f&g=h')
+    assert_equals(searchParams.toString(), 'e=f&g=h')
+
+    // ..and same but with a leading '?'.
+    url.search = '?e=f&g=h'
+    assert_equals(url.search, '?e=f&g=h')
+    assert_equals(searchParams.toString(), 'e=f&g=h')
+
+    // And in the other direction, altering searchParams propagates
+    // back to 'search'.
+    searchParams.append('i', ' j ')
+    assert_equals(url.search, '?e=f&g=h&i=+j+')
+    assert_equals(url.searchParams.toString(), 'e=f&g=h&i=+j+')
+    assert_equals(searchParams.get('i'), ' j ')
+
+    searchParams.set('e', 'updated')
+    assert_equals(url.search, '?e=updated&g=h&i=+j+')
+    assert_equals(searchParams.get('e'), 'updated')
+
+    var url2 = bURL('http://example.org/file??a=b&c=d')
+    assert_equals(url2.search, '??a=b&c=d')
+    assert_equals(url2.searchParams.toString(), '%3Fa=b&c=d')
+
+    url2.href = 'http://example.org/file??a=b'
+    assert_equals(url2.search, '??a=b')
+    assert_equals(url2.searchParams.toString(), '%3Fa=b')
+  }, 'URL.searchParams and URL.search setters, update propagation')
+}
+runURLSearchParamTests()
+runURLConstructorTests()
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/url-origin.html b/third_party/WebKit/LayoutTests/external/wpt/url/url-origin.html
new file mode 100644
index 0000000..f9d4b3d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/url-origin.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<meta charset=utf-8>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id=log></div>
+<script>
+function runURLOriginTests() {
+  var setup = async_test("Loading data…")
+  setup.step(function() {
+    var request = new XMLHttpRequest()
+    request.open("GET", "urltestdata.json")
+    request.send()
+    request.responseType = "json"
+    request.onload = setup.step_func(function() {
+      runURLTests(request.response)
+      setup.done()
+    })
+  })
+}
+
+function bURL(url, base) {
+  return new URL(url, base || "about:blank")
+}
+
+function runURLTests(urltests) {
+  for(var i = 0, l = urltests.length; i < l; i++) {
+    var expected = urltests[i]
+    if (typeof expected === "string" || !("origin" in expected)) continue
+
+    test(function() {
+      var url = bURL(expected.input, expected.base)
+      assert_equals(url.origin, expected.origin, "origin")
+    }, "Origin parsing: <" + expected.input + "> against <" + expected.base + ">")
+  }
+}
+runURLOriginTests()
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/url-setters.html b/third_party/WebKit/LayoutTests/external/wpt/url/url-setters.html
new file mode 100644
index 0000000..b8b8ee5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/url-setters.html
@@ -0,0 +1,62 @@
+<!doctype html>
+<meta charset=utf-8>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id=log></div>
+<script>
+function startURLSettersTests() {
+  var setup = async_test("Loading data…")
+  setup.step(function() {
+    var request = new XMLHttpRequest()
+    request.open("GET", "setters_tests.json")
+    request.send()
+    request.responseType = "json"
+    request.onload = setup.step_func(function() {
+      runURLSettersTests(request.response)
+      setup.done()
+    })
+  })
+}
+
+function runURLSettersTests(all_test_cases) {
+  for (var attribute_to_be_set in all_test_cases) {
+    if (attribute_to_be_set == "comment") {
+      continue;
+    }
+    var test_cases = all_test_cases[attribute_to_be_set];
+    for(var i = 0, l = test_cases.length; i < l; i++) {
+      var test_case = test_cases[i];
+      var name = "Setting <" + test_case.href + ">." + attribute_to_be_set +
+                 " = '" + test_case.new_value + "'";
+      if ("comment" in test_case) {
+        name += " " + test_case.comment;
+      }
+      test(function() {
+        var url = new URL(test_case.href);
+        url[attribute_to_be_set] = test_case.new_value;
+        for (var attribute in test_case.expected) {
+          assert_equals(url[attribute], test_case.expected[attribute])
+        }
+      }, "URL: " + name)
+      test(function() {
+        var url = document.createElement("a");
+        url.href = test_case.href;
+        url[attribute_to_be_set] = test_case.new_value;
+        for (var attribute in test_case.expected) {
+          assert_equals(url[attribute], test_case.expected[attribute])
+        }
+      }, "<a>: " + name)
+      test(function() {
+        var url = document.createElement("area");
+        url.href = test_case.href;
+        url[attribute_to_be_set] = test_case.new_value;
+        for (var attribute in test_case.expected) {
+          assert_equals(url[attribute], test_case.expected[attribute])
+        }
+      }, "<area>: " + name)
+    }
+  }
+}
+
+startURLSettersTests()
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/url-tojson-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/url/url-tojson-expected.txt
new file mode 100644
index 0000000..da07123d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/url-tojson-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL URL's toJSON() assert_equals: expected "\"https://example.com/\"" but got "{}"
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/url-tojson.html b/third_party/WebKit/LayoutTests/external/wpt/url/url-tojson.html
new file mode 100644
index 0000000..3e8798c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/url-tojson.html
@@ -0,0 +1,12 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>URL's toJSON()</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id=log></div>
+<script>
+test(() => {
+  const a = new URL("https://example.com/")
+  assert_equals(JSON.stringify(a), "\"https://example.com/\"")
+})
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlencoded-parser-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/url/urlencoded-parser-expected.txt
new file mode 100644
index 0000000..467598df2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlencoded-parser-expected.txt
@@ -0,0 +1,94 @@
+This is a testharness.js-based test.
+Found 90 tests; 25 PASS, 65 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS URLSearchParams constructed with: test 
+FAIL request.formData() with input: test (intermediate value).formData is not a function
+FAIL response.formData() with input: test (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: test= 
+FAIL request.formData() with input: test= (intermediate value).formData is not a function
+FAIL response.formData() with input: test= (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: %EF%BB%BFtest=%EF%BB%BF 
+FAIL request.formData() with input: %EF%BB%BFtest=%EF%BB%BF (intermediate value).formData is not a function
+FAIL response.formData() with input: %EF%BB%BFtest=%EF%BB%BF (intermediate value).formData is not a function
+FAIL URLSearchParams constructed with: %FE%FF assert_array_equals: property 0, expected "\ufffd\ufffd" but got "þÿ"
+FAIL request.formData() with input: %FE%FF (intermediate value).formData is not a function
+FAIL response.formData() with input: %FE%FF (intermediate value).formData is not a function
+FAIL URLSearchParams constructed with: %FF%FE assert_array_equals: property 0, expected "\ufffd\ufffd" but got "ÿþ"
+FAIL request.formData() with input: %FF%FE (intermediate value).formData is not a function
+FAIL response.formData() with input: %FF%FE (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: †&†=x 
+FAIL request.formData() with input: †&†=x (intermediate value).formData is not a function
+FAIL response.formData() with input: †&†=x (intermediate value).formData is not a function
+FAIL URLSearchParams constructed with: %C2 assert_array_equals: property 0, expected "\ufffd" but got "Â"
+FAIL request.formData() with input: %C2 (intermediate value).formData is not a function
+FAIL response.formData() with input: %C2 (intermediate value).formData is not a function
+FAIL URLSearchParams constructed with: %C2x assert_array_equals: property 0, expected "\ufffdx" but got "Âx"
+FAIL request.formData() with input: %C2x (intermediate value).formData is not a function
+FAIL response.formData() with input: %C2x (intermediate value).formData is not a function
+FAIL URLSearchParams constructed with: _charset_=windows-1252&test=%C2x assert_array_equals: property 1, expected "\ufffdx" but got "Âx"
+FAIL request.formData() with input: _charset_=windows-1252&test=%C2x (intermediate value).formData is not a function
+FAIL response.formData() with input: _charset_=windows-1252&test=%C2x (intermediate value).formData is not a function
+PASS URLSearchParams constructed with:  
+FAIL request.formData() with input:  (intermediate value).formData is not a function
+FAIL response.formData() with input:  (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: a 
+FAIL request.formData() with input: a (intermediate value).formData is not a function
+FAIL response.formData() with input: a (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: a=b 
+FAIL request.formData() with input: a=b (intermediate value).formData is not a function
+FAIL response.formData() with input: a=b (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: a= 
+FAIL request.formData() with input: a= (intermediate value).formData is not a function
+FAIL response.formData() with input: a= (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: =b 
+FAIL request.formData() with input: =b (intermediate value).formData is not a function
+FAIL response.formData() with input: =b (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: & 
+FAIL request.formData() with input: & (intermediate value).formData is not a function
+FAIL response.formData() with input: & (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: &a 
+FAIL request.formData() with input: &a (intermediate value).formData is not a function
+FAIL response.formData() with input: &a (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: a& 
+FAIL request.formData() with input: a& (intermediate value).formData is not a function
+FAIL response.formData() with input: a& (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: a&a 
+FAIL request.formData() with input: a&a (intermediate value).formData is not a function
+FAIL response.formData() with input: a&a (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: a&b&c 
+FAIL request.formData() with input: a&b&c (intermediate value).formData is not a function
+FAIL response.formData() with input: a&b&c (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: a=b&c=d 
+FAIL request.formData() with input: a=b&c=d (intermediate value).formData is not a function
+FAIL response.formData() with input: a=b&c=d (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: a=b&c=d& 
+FAIL request.formData() with input: a=b&c=d& (intermediate value).formData is not a function
+FAIL response.formData() with input: a=b&c=d& (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: &&&a=b&&&&c=d& 
+FAIL request.formData() with input: &&&a=b&&&&c=d& (intermediate value).formData is not a function
+FAIL response.formData() with input: &&&a=b&&&&c=d& (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: a=a&a=b&a=c 
+FAIL request.formData() with input: a=a&a=b&a=c (intermediate value).formData is not a function
+FAIL response.formData() with input: a=a&a=b&a=c (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: a==a 
+FAIL request.formData() with input: a==a (intermediate value).formData is not a function
+FAIL response.formData() with input: a==a (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: a=a+b+c+d 
+FAIL request.formData() with input: a=a+b+c+d (intermediate value).formData is not a function
+FAIL response.formData() with input: a=a+b+c+d (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: %=a 
+FAIL request.formData() with input: %=a (intermediate value).formData is not a function
+FAIL response.formData() with input: %=a (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: %a=a 
+FAIL request.formData() with input: %a=a (intermediate value).formData is not a function
+FAIL response.formData() with input: %a=a (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: %a_=a 
+FAIL request.formData() with input: %a_=a (intermediate value).formData is not a function
+FAIL response.formData() with input: %a_=a (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: %61=a 
+FAIL request.formData() with input: %61=a (intermediate value).formData is not a function
+FAIL response.formData() with input: %61=a (intermediate value).formData is not a function
+PASS URLSearchParams constructed with: %61+%4d%4D= 
+FAIL request.formData() with input: %61+%4d%4D= (intermediate value).formData is not a function
+FAIL response.formData() with input: %61+%4d%4D= (intermediate value).formData is not a function
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlencoded-parser.html b/third_party/WebKit/LayoutTests/external/wpt/url/urlencoded-parser.html
new file mode 100644
index 0000000..40a54f1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlencoded-parser.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>application/x-www-form-urlencoded parser test</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id=log></div>
+<script>
+[
+  { "input": "test", "output": [["test", ""]] },
+  { "input": "\uFEFFtest=\uFEFF", "output": [["\uFEFFtest", "\uFEFF"]] },
+  { "input": "%EF%BB%BFtest=%EF%BB%BF", "output": [["\uFEFFtest", "\uFEFF"]] },
+  { "input": "%FE%FF", "output": [["\uFFFD\uFFFD", ""]] },
+  { "input": "%FF%FE", "output": [["\uFFFD\uFFFD", ""]] },
+  { "input": "†&†=x", "output": [["†", ""], ["†", "x"]] },
+  { "input": "%C2", "output": [["\uFFFD", ""]] },
+  { "input": "%C2x", "output": [["\uFFFDx", ""]] },
+  { "input": "_charset_=windows-1252&test=%C2x", "output": [["_charset_", "windows-1252"], ["test", "\uFFFDx"]] },
+  { "input": '', "output": [] },
+  { "input": 'a', "output": [['a', '']] },
+  { "input": 'a=b', "output": [['a', 'b']] },
+  { "input": 'a=', "output": [['a', '']] },
+  { "input": '=b', "output": [['', 'b']] },
+  { "input": '&', "output": [] },
+  { "input": '&a', "output": [['a', '']] },
+  { "input": 'a&', "output": [['a', '']] },
+  { "input": 'a&a', "output": [['a', ''], ['a', '']] },
+  { "input": 'a&b&c', "output": [['a', ''], ['b', ''], ['c', '']] },
+  { "input": 'a=b&c=d', "output": [['a', 'b'], ['c', 'd']] },
+  { "input": 'a=b&c=d&', "output": [['a', 'b'], ['c', 'd']] },
+  { "input": '&&&a=b&&&&c=d&', "output": [['a', 'b'], ['c', 'd']] },
+  { "input": 'a=a&a=b&a=c', "output": [['a', 'a'], ['a', 'b'], ['a', 'c']] },
+  { "input": 'a==a', "output": [['a', '=a']] },
+  { "input": 'a=a+b+c+d', "output": [['a', 'a b c d']] },
+  { "input": '%=a', "output": [['%', 'a']] },
+  { "input": '%a=a', "output": [['%a', 'a']] },
+  { "input": '%a_=a', "output": [['%a_', 'a']] },
+  { "input": '%61=a', "output": [['a', 'a']] },
+  { "input": '%61+%4d%4D=', "output": [['a MM', '']] }
+].forEach((val) => {
+  test(() => {
+    let sp = new URLSearchParams(val.input),
+        i = 0
+    for (let item of sp) {
+       assert_array_equals(item, val.output[i])
+       i++
+    }
+  }, "URLSearchParams constructed with: " + val.input)
+
+  promise_test(() => {
+    let init = new Request("about:blank", { body: val.input, method: "LADIDA", headers: {"Content-Type": "application/x-www-form-urlencoded;charset=windows-1252"} }).formData()
+    return init.then((fd) => {
+      let i = 0
+      for (let item of fd) {
+         assert_array_equals(item, val.output[i])
+         i++
+      }
+    })
+  }, "request.formData() with input: " + val.input)
+
+  promise_test(() => {
+    let init = new Response(val.input, { headers: {"Content-Type": "application/x-www-form-urlencoded;charset=shift_jis"} }).formData()
+    return init.then((fd) => {
+      let i = 0
+      for (let item of fd) {
+         assert_array_equals(item, val.output[i])
+         i++
+      }
+    })
+  }, "response.formData() with input: " + val.input)
+})
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-append.html b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-append.html
new file mode 100644
index 0000000..ca367e6f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-append.html
@@ -0,0 +1,50 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf8">
+<link rel="help" href="http://url.spec.whatwg.org/#dom-urlsearchparams-append">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(function() {
+    var params = new URLSearchParams();
+    params.append('a', 'b');
+    assert_equals(params + '', 'a=b');
+    params.append('a', 'b');
+    assert_equals(params + '', 'a=b&a=b');
+    params.append('a', 'c');
+    assert_equals(params + '', 'a=b&a=b&a=c');
+}, 'Append same name');
+
+test(function() {
+    var params = new URLSearchParams();
+    params.append('', '');
+    assert_equals(params + '', '=');
+    params.append('', '');
+    assert_equals(params + '', '=&=');
+}, 'Append empty strings');
+
+test(function() {
+    var params = new URLSearchParams();
+    params.append(null, null);
+    assert_equals(params + '', 'null=null');
+    params.append(null, null);
+    assert_equals(params + '', 'null=null&null=null');
+}, 'Append null');
+
+test(function() {
+    var params = new URLSearchParams();
+    params.append('first', 1);
+    params.append('second', 2);
+    params.append('third', '');
+    params.append('first', 10);
+    assert_true(params.has('first'), 'Search params object has name "first"');
+    assert_equals(params.get('first'), '1', 'Search params object has name "first" with value "1"');
+    assert_equals(params.get('second'), '2', 'Search params object has name "second" with value "2"');
+    assert_equals(params.get('third'), '', 'Search params object has name "third" with value ""');
+    params.append('first', 10);
+    assert_equals(params.get('first'), '1', 'Search params object has name "first" with value "1"');
+}, 'Append multiple');
+</script>
+</head>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-constructor-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-constructor-expected.txt
new file mode 100644
index 0000000..9cc74ec4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-constructor-expected.txt
@@ -0,0 +1,26 @@
+This is a testharness.js-based test.
+PASS Basic URLSearchParams construction 
+PASS URLSearchParams constructor, no arguments 
+FAIL URLSearchParams constructor, DOMException.prototype as argument Illegal invocation
+PASS URLSearchParams constructor, empty string as argument 
+FAIL URLSearchParams constructor, {} as argument assert_equals: expected "" but got "%5Bobject+Object%5D="
+PASS URLSearchParams constructor, string. 
+PASS URLSearchParams constructor, object. 
+PASS Parse + 
+PASS Parse encoded + 
+PASS Parse space 
+PASS Parse %20 
+PASS Parse \0 
+PASS Parse %00 
+PASS Parse ⎄ 
+PASS Parse %e2%8e%84 
+PASS Parse 💩 
+PASS Parse %f0%9f%92%a9 
+PASS Constructor with sequence of sequences of strings 
+FAIL Construct with object with + assert_array_equals: property 0, expected "+" but got "[object Object]"
+FAIL Construct with object with two keys assert_array_equals: property 0, expected "c" but got "[object Object]"
+PASS Construct with array with two keys 
+FAIL Construct with object with NULL, non-ASCII, and surrogate keys assert_array_equals: property 0, expected "a\0b" but got "[object Object]"
+FAIL Custom [Symbol.iterator] assert_equals: expected (string) "b" but got (object) null
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-constructor.html b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-constructor.html
new file mode 100644
index 0000000..1e214e04
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-constructor.html
@@ -0,0 +1,185 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf8">
+<link rel="help" href="http://url.spec.whatwg.org/#urlsearchparams">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(function() {
+    var params = new URLSearchParams();
+    assert_equals(params + '', '');
+    params = new URLSearchParams('');
+    assert_equals(params + '', '');
+    params = new URLSearchParams('a=b');
+    assert_equals(params + '', 'a=b');
+    params = new URLSearchParams(params);
+    assert_equals(params + '', 'a=b');
+}, 'Basic URLSearchParams construction');
+
+test(function() {
+    var params = new URLSearchParams()
+    assert_equals(params.toString(), "")
+}, "URLSearchParams constructor, no arguments")
+
+test(() => {
+    params = new URLSearchParams(DOMException.prototype);
+    assert_equals(params.toString(), "INDEX_SIZE_ERR=1&DOMSTRING_SIZE_ERR=2&HIERARCHY_REQUEST_ERR=3&WRONG_DOCUMENT_ERR=4&INVALID_CHARACTER_ERR=5&NO_DATA_ALLOWED_ERR=6&NO_MODIFICATION_ALLOWED_ERR=7&NOT_FOUND_ERR=8&NOT_SUPPORTED_ERR=9&INUSE_ATTRIBUTE_ERR=10&INVALID_STATE_ERR=11&SYNTAX_ERR=12&INVALID_MODIFICATION_ERR=13&NAMESPACE_ERR=14&INVALID_ACCESS_ERR=15&VALIDATION_ERR=16&TYPE_MISMATCH_ERR=17&SECURITY_ERR=18&NETWORK_ERR=19&ABORT_ERR=20&URL_MISMATCH_ERR=21&QUOTA_EXCEEDED_ERR=22&TIMEOUT_ERR=23&INVALID_NODE_TYPE_ERR=24&DATA_CLONE_ERR=25")
+}, "URLSearchParams constructor, DOMException.prototype as argument")
+
+test(() => {
+    params = new URLSearchParams('');
+    assert_true(params != null, 'constructor returned non-null value.');
+    assert_equals(params.__proto__, URLSearchParams.prototype, 'expected URLSearchParams.prototype as prototype.');
+}, "URLSearchParams constructor, empty string as argument")
+
+test(() => {
+    params = new URLSearchParams({});
+    assert_equals(params + '', "");
+}, 'URLSearchParams constructor, {} as argument');
+
+test(function() {
+    var params = new URLSearchParams('a=b');
+    assert_true(params != null, 'constructor returned non-null value.');
+    assert_true(params.has('a'), 'Search params object has name "a"');
+    assert_false(params.has('b'), 'Search params object has not got name "b"');
+    var params = new URLSearchParams('a=b&c');
+    assert_true(params != null, 'constructor returned non-null value.');
+    assert_true(params.has('a'), 'Search params object has name "a"');
+    assert_true(params.has('c'), 'Search params object has name "c"');
+    var params = new URLSearchParams('&a&&& &&&&&a+b=& c&m%c3%b8%c3%b8');
+    assert_true(params != null, 'constructor returned non-null value.');
+    assert_true(params.has('a'), 'Search params object has name "a"');
+    assert_true(params.has('a b'), 'Search params object has name "a b"');
+    assert_true(params.has(' '), 'Search params object has name " "');
+    assert_false(params.has('c'), 'Search params object did not have the name "c"');
+    assert_true(params.has(' c'), 'Search params object has name " c"');
+    assert_true(params.has('møø'), 'Search params object has name "møø"');
+}, 'URLSearchParams constructor, string.');
+
+test(function() {
+    var seed = new URLSearchParams('a=b&c=d');
+    var params = new URLSearchParams(seed);
+    assert_true(params != null, 'constructor returned non-null value.');
+    assert_equals(params.get('a'), 'b');
+    assert_equals(params.get('c'), 'd');
+    assert_false(params.has('d'));
+    // The name-value pairs are copied when created; later updates
+    // should not be observable.
+    seed.append('e', 'f');
+    assert_false(params.has('e'));
+    params.append('g', 'h');
+    assert_false(seed.has('g'));
+}, 'URLSearchParams constructor, object.');
+
+test(function() {
+    var params = new URLSearchParams('a=b+c');
+    assert_equals(params.get('a'), 'b c');
+    params = new URLSearchParams('a+b=c');
+    assert_equals(params.get('a b'), 'c');
+}, 'Parse +');
+
+test(function() {
+    const testValue = '+15555555555';
+    const params = new URLSearchParams();
+    params.set('query', testValue);
+    var newParams = new URLSearchParams(params.toString());
+
+    assert_equals(params.toString(), 'query=%2B15555555555');
+    assert_equals(params.get('query'), testValue);
+    assert_equals(newParams.get('query'), testValue);
+}, 'Parse encoded +');
+
+test(function() {
+    var params = new URLSearchParams('a=b c');
+    assert_equals(params.get('a'), 'b c');
+    params = new URLSearchParams('a b=c');
+    assert_equals(params.get('a b'), 'c');
+}, 'Parse space');
+
+test(function() {
+    var params = new URLSearchParams('a=b%20c');
+    assert_equals(params.get('a'), 'b c');
+    params = new URLSearchParams('a%20b=c');
+    assert_equals(params.get('a b'), 'c');
+}, 'Parse %20');
+
+test(function() {
+    var params = new URLSearchParams('a=b\0c');
+    assert_equals(params.get('a'), 'b\0c');
+    params = new URLSearchParams('a\0b=c');
+    assert_equals(params.get('a\0b'), 'c');
+}, 'Parse \\0');
+
+test(function() {
+    var params = new URLSearchParams('a=b%00c');
+    assert_equals(params.get('a'), 'b\0c');
+    params = new URLSearchParams('a%00b=c');
+    assert_equals(params.get('a\0b'), 'c');
+}, 'Parse %00');
+
+test(function() {
+    var params = new URLSearchParams('a=b\u2384');
+    assert_equals(params.get('a'), 'b\u2384');
+    params = new URLSearchParams('a\u2384b=c');
+    assert_equals(params.get('a\u2384b'), 'c');
+}, 'Parse \u2384');  // Unicode Character 'COMPOSITION SYMBOL' (U+2384)
+
+test(function() {
+    var params = new URLSearchParams('a=b%e2%8e%84');
+    assert_equals(params.get('a'), 'b\u2384');
+    params = new URLSearchParams('a%e2%8e%84b=c');
+    assert_equals(params.get('a\u2384b'), 'c');
+}, 'Parse %e2%8e%84');  // Unicode Character 'COMPOSITION SYMBOL' (U+2384)
+
+test(function() {
+    var params = new URLSearchParams('a=b\uD83D\uDCA9c');
+    assert_equals(params.get('a'), 'b\uD83D\uDCA9c');
+    params = new URLSearchParams('a\uD83D\uDCA9b=c');
+    assert_equals(params.get('a\uD83D\uDCA9b'), 'c');
+}, 'Parse \uD83D\uDCA9');  // Unicode Character 'PILE OF POO' (U+1F4A9)
+
+test(function() {
+    var params = new URLSearchParams('a=b%f0%9f%92%a9c');
+    assert_equals(params.get('a'), 'b\uD83D\uDCA9c');
+    params = new URLSearchParams('a%f0%9f%92%a9b=c');
+    assert_equals(params.get('a\uD83D\uDCA9b'), 'c');
+}, 'Parse %f0%9f%92%a9');  // Unicode Character 'PILE OF POO' (U+1F4A9)
+
+test(function() {
+    var params = new URLSearchParams([]);
+    assert_true(params != null, 'constructor returned non-null value.');
+    params = new URLSearchParams([['a', 'b'], ['c', 'd']]);
+    assert_equals(params.get("a"), "b");
+    assert_equals(params.get("c"), "d");
+    assert_throws(new TypeError(), function() { new URLSearchParams([[1]]); });
+    assert_throws(new TypeError(), function() { new URLSearchParams([[1,2,3]]); });
+}, "Constructor with sequence of sequences of strings");
+
+[
+  { "input": {"+": "%C2"}, "output": [["+", "%C2"]], "name": "object with +" },
+  { "input": {c: "x", a: "?"}, "output": [["c", "x"], ["a", "?"]], "name": "object with two keys" },
+  { "input": [["c", "x"], ["a", "?"]], "output": [["c", "x"], ["a", "?"]], "name": "array with two keys" },
+  { "input": {"a\0b": "42", "c\uD83D": "23", "d\u1234": "foo"}, "output": [["a\0b", "42"], ["c\uFFFD", "23"], ["d\u1234", "foo"]], "name": "object with NULL, non-ASCII, and surrogate keys" }
+].forEach((val) => {
+    test(() => {
+        let params = new URLSearchParams(val.input),
+            i = 0
+        for (let param of params) {
+            assert_array_equals(param, val.output[i])
+            i++
+        }
+    }, "Construct with " + val.name)
+})
+
+test(() => {
+  params = new URLSearchParams()
+  params[Symbol.iterator] = function *() {
+    yield ["a", "b"]
+  }
+  let params2 = new URLSearchParams(params)
+  assert_equals(params2.get("a"), "b")
+}, "Custom [Symbol.iterator]")
+</script>
+</head>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-delete.html b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-delete.html
new file mode 100644
index 0000000..fca64621
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-delete.html
@@ -0,0 +1,41 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf8">
+<link rel="help" href="http://url.spec.whatwg.org/#dom-urlsearchparams-delete">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(function() {
+    var params = new URLSearchParams('a=b&c=d');
+    params.delete('a');
+    assert_equals(params + '', 'c=d');
+    params = new URLSearchParams('a=a&b=b&a=a&c=c');
+    params.delete('a');
+    assert_equals(params + '', 'b=b&c=c');
+    params = new URLSearchParams('a=a&=&b=b&c=c');
+    params.delete('');
+    assert_equals(params + '', 'a=a&b=b&c=c');
+    params = new URLSearchParams('a=a&null=null&b=b');
+    params.delete(null);
+    assert_equals(params + '', 'a=a&b=b');
+    params = new URLSearchParams('a=a&undefined=undefined&b=b');
+    params.delete(undefined);
+    assert_equals(params + '', 'a=a&b=b');
+}, 'Delete basics');
+
+test(function() {
+    var params = new URLSearchParams();
+    params.append('first', 1);
+    assert_true(params.has('first'), 'Search params object has name "first"');
+    assert_equals(params.get('first'), '1', 'Search params object has name "first" with value "1"');
+    params.delete('first');
+    assert_false(params.has('first'), 'Search params object has no "first" name');
+    params.append('first', 1);
+    params.append('first', 10);
+    params.delete('first');
+    assert_false(params.has('first'), 'Search params object has no "first" name');
+}, 'Deleting appended multiple');
+</script>
+</head>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-foreach-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-foreach-expected.txt
new file mode 100644
index 0000000..9fb83aa
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-foreach-expected.txt
@@ -0,0 +1,6 @@
+This is a testharness.js-based test.
+PASS ForEach Check 
+FAIL For-of Check assert_array_equals: property 0, expected "y" but got "b"
+PASS empty 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-foreach.html b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-foreach.html
new file mode 100644
index 0000000..faa699cae
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-foreach.html
@@ -0,0 +1,39 @@
+<!doctype html>
+<meta charset="utf-8">
+<link rel="help" href="https://url.spec.whatwg.org/#dom-urlsearchparams-has">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(function() {
+    var params = new URLSearchParams('a=1&b=2&c=3');
+    var keys = [];
+    var values = [];
+    params.forEach(function(value, key) {
+        keys.push(key);
+        values.push(value);
+    });
+    assert_array_equals(keys, ['a', 'b', 'c']);
+    assert_array_equals(values, ['1', '2', '3']);
+}, "ForEach Check");
+
+test(function() {
+    let a = new URL("http://a.b/c?a=1&b=2&c=3&d=4");
+    let b = a.searchParams;
+    var c = [];
+    for (i of b) {
+        a.search = "x=1&y=2&z=3";
+        c.push(i);
+    }
+    assert_array_equals(c[0], ["a","1"]);
+    assert_array_equals(c[1], ["y","2"]);
+    assert_array_equals(c[2], ["z","3"]);
+}, "For-of Check");
+
+test(function() {
+    let a = new URL("http://a.b/c");
+    let b = a.searchParams;
+    for (i of b) {
+        assert_unreached(i);
+    }
+}, "empty");
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-get.html b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-get.html
new file mode 100644
index 0000000..1d27727c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-get.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf8">
+<link rel="help" href="http://url.spec.whatwg.org/#dom-urlsearchparams-get">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(function() {
+    var params = new URLSearchParams('a=b&c=d');
+    assert_equals(params.get('a'), 'b');
+    assert_equals(params.get('c'), 'd');
+    assert_equals(params.get('e'), null);
+    params = new URLSearchParams('a=b&c=d&a=e');
+    assert_equals(params.get('a'), 'b');
+    params = new URLSearchParams('=b&c=d');
+    assert_equals(params.get(''), 'b');
+    params = new URLSearchParams('a=&c=d&a=e');
+    assert_equals(params.get('a'), '');
+}, 'Get basics');
+
+test(function() {
+    var params = new URLSearchParams('first=second&third&&');
+    assert_true(params != null, 'constructor returned non-null value.');
+    assert_true(params.has('first'), 'Search params object has name "first"');
+    assert_equals(params.get('first'), 'second', 'Search params object has name "first" with value "second"');
+    assert_equals(params.get('third'), '', 'Search params object has name "third" with the empty value.');
+    assert_equals(params.get('fourth'), null, 'Search params object has no "fourth" name and value.');
+}, 'More get() basics');
+</script>
+</head>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-getall.html b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-getall.html
new file mode 100644
index 0000000..db6c7e3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-getall.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf8">
+<link rel="help" href="http://url.spec.whatwg.org/#dom-urlsearchparams-getAll">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(function() {
+    var params = new URLSearchParams('a=b&c=d');
+    assert_array_equals(params.getAll('a'), ['b']);
+    assert_array_equals(params.getAll('c'), ['d']);
+    assert_array_equals(params.getAll('e'), []);
+    params = new URLSearchParams('a=b&c=d&a=e');
+    assert_array_equals(params.getAll('a'), ['b', 'e']);
+    params = new URLSearchParams('=b&c=d');
+    assert_array_equals(params.getAll(''), ['b']);
+    params = new URLSearchParams('a=&c=d&a=e');
+    assert_array_equals(params.getAll('a'), ['', 'e']);
+}, 'getAll() basics');
+
+test(function() {
+    var params = new URLSearchParams('a=1&a=2&a=3&a');
+    assert_true(params.has('a'), 'Search params object has name "a"');
+    var matches = params.getAll('a');
+    assert_true(matches && matches.length == 4, 'Search params object has values for name "a"');
+    assert_array_equals(matches, ['1', '2', '3', ''], 'Search params object has expected name "a" values');
+    params.set('a', 'one');
+    assert_equals(params.get('a'), 'one', 'Search params object has name "a" with value "one"');
+    var matches = params.getAll('a');
+    assert_true(matches && matches.length == 1, 'Search params object has values for name "a"');
+    assert_array_equals(matches, ['one'], 'Search params object has expected name "a" values');
+}, 'getAll() multiples');
+</script>
+</head>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-has.html b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-has.html
new file mode 100644
index 0000000..ad045f73
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-has.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf8">
+<link rel="help" href="http://url.spec.whatwg.org/#dom-urlsearchparams-has">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(function() {
+    var params = new URLSearchParams('a=b&c=d');
+    assert_true(params.has('a'));
+    assert_true(params.has('c'));
+    assert_false(params.has('e'));
+    params = new URLSearchParams('a=b&c=d&a=e');
+    assert_true(params.has('a'));
+    params = new URLSearchParams('=b&c=d');
+    assert_true(params.has(''));
+    params = new URLSearchParams('null=a');
+    assert_true(params.has(null));
+}, 'Has basics');
+
+test(function() {
+    var params = new URLSearchParams('a=b&c=d&&');
+    params.append('first', 1);
+    params.append('first', 2);
+    assert_true(params.has('a'), 'Search params object has name "a"');
+    assert_true(params.has('c'), 'Search params object has name "c"');
+    assert_true(params.has('first'), 'Search params object has name "first"');
+    assert_false(params.has('d'), 'Search params object has no name "d"');
+    params.delete('first');
+    assert_false(params.has('first'), 'Search params object has no name "first"');
+}, 'has() following delete()');
+</script>
+</head>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-set.html b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-set.html
new file mode 100644
index 0000000..61578b2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-set.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf8">
+<link rel="help" href="http://url.spec.whatwg.org/#dom-urlsearchparams-set">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(function() {
+    var params = new URLSearchParams('a=b&c=d');
+    params.set('a', 'B');
+    assert_equals(params + '', 'a=B&c=d');
+    params = new URLSearchParams('a=b&c=d&a=e');
+    params.set('a', 'B');
+    assert_equals(params + '', 'a=B&c=d')
+    params.set('e', 'f');
+    assert_equals(params + '', 'a=B&c=d&e=f')
+}, 'Set basics');
+
+test(function() {
+    var params = new URLSearchParams('a=1&a=2&a=3');
+    assert_true(params.has('a'), 'Search params object has name "a"');
+    assert_equals(params.get('a'), '1', 'Search params object has name "a" with value "1"');
+    params.set('first', 4);
+    assert_true(params.has('a'), 'Search params object has name "a"');
+    assert_equals(params.get('a'), '1', 'Search params object has name "a" with value "1"');
+    params.set('a', 4);
+    assert_true(params.has('a'), 'Search params object has name "a"');
+    assert_equals(params.get('a'), '4', 'Search params object has name "a" with value "4"');
+}, 'URLSearchParams.set');
+</script>
+</head>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-sort-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-sort-expected.txt
new file mode 100644
index 0000000..9066ba7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-sort-expected.txt
@@ -0,0 +1,13 @@
+This is a testharness.js-based test.
+FAIL Parse and sort: z=b&a=b&z=a&a=a params.sort is not a function
+FAIL URL parse and sort: z=b&a=b&z=a&a=a url.searchParams.sort is not a function
+FAIL Parse and sort: �=x&&�=a params.sort is not a function
+FAIL URL parse and sort: �=x&&�=a url.searchParams.sort is not a function
+FAIL Parse and sort: ffi&🌈 params.sort is not a function
+FAIL URL parse and sort: ffi&🌈 url.searchParams.sort is not a function
+FAIL Parse and sort: é&e�&é params.sort is not a function
+FAIL URL parse and sort: é&e�&é url.searchParams.sort is not a function
+FAIL Parse and sort: z=z&a=a&z=y&a=b&z=x&a=c&z=w&a=d&z=v&a=e&z=u&a=f&z=t&a=g params.sort is not a function
+FAIL URL parse and sort: z=z&a=a&z=y&a=b&z=x&a=c&z=w&a=d&z=v&a=e&z=u&a=f&z=t&a=g url.searchParams.sort is not a function
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-sort.html b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-sort.html
new file mode 100644
index 0000000..e643ed3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-sort.html
@@ -0,0 +1,50 @@
+<!doctype html>
+<meta charset="utf8">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id=log></div>
+<script>
+[
+  {
+    "input": "z=b&a=b&z=a&a=a",
+    "output": [["a", "b"], ["a", "a"], ["z", "b"], ["z", "a"]]
+  },
+  {
+    "input": "\uFFFD=x&\uFFFC&\uFFFD=a",
+    "output": [["\uFFFC", ""], ["\uFFFD", "x"], ["\uFFFD", "a"]]
+  },
+  {
+    "input": "ffi&🌈", // 🌈 > code point, but < code unit because two code units
+    "output": [["🌈", ""], ["ffi", ""]]
+  },
+  {
+    "input": "é&e\uFFFD&e\u0301",
+    "output": [["e\u0301", ""], ["e\uFFFD", ""], ["é", ""]]
+  },
+  {
+    "input": "z=z&a=a&z=y&a=b&z=x&a=c&z=w&a=d&z=v&a=e&z=u&a=f&z=t&a=g",
+    "output": [["a", "a"], ["a", "b"], ["a", "c"], ["a", "d"], ["a", "e"], ["a", "f"], ["a", "g"], ["z", "z"], ["z", "y"], ["z", "x"], ["z", "w"], ["z", "v"], ["z", "u"], ["z", "t"]]
+  }
+].forEach((val) => {
+  test(() => {
+    let params = new URLSearchParams(val.input),
+        i = 0
+    params.sort()
+    for(let param of params) {
+      assert_array_equals(param, val.output[i])
+      i++
+    }
+  }, "Parse and sort: " + val.input)
+
+  test(() => {
+    let url = new URL("?" + val.input, "https://example/")
+    url.searchParams.sort()
+    let params = new URLSearchParams(url.search),
+        i = 0
+    for(let param of params) {
+      assert_array_equals(param, val.output[i])
+      i++
+    }
+  }, "URL parse and sort: " + val.input)
+})
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-stringifier.html b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-stringifier.html
new file mode 100644
index 0000000..5c573ba
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-stringifier.html
@@ -0,0 +1,122 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf8">
+<link rel="help" href="http://url.spec.whatwg.org/#dom-urlsearchparams-set">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(function() {
+    var params = new URLSearchParams();
+    params.append('a', 'b c');
+    assert_equals(params + '', 'a=b+c');
+    params.delete('a');
+    params.append('a b', 'c');
+    assert_equals(params + '', 'a+b=c');
+}, 'Serialize space');
+
+test(function() {
+    var params = new URLSearchParams();
+    params.append('a', '');
+    assert_equals(params + '', 'a=');
+    params.append('a', '');
+    assert_equals(params + '', 'a=&a=');
+    params.append('', 'b');
+    assert_equals(params + '', 'a=&a=&=b');
+    params.append('', '');
+    assert_equals(params + '', 'a=&a=&=b&=');
+    params.append('', '');
+    assert_equals(params + '', 'a=&a=&=b&=&=');
+}, 'Serialize empty value');
+
+test(function() {
+    var params = new URLSearchParams();
+    params.append('', 'b');
+    assert_equals(params + '', '=b');
+    params.append('', 'b');
+    assert_equals(params + '', '=b&=b');
+}, 'Serialize empty name');
+
+test(function() {
+    var params = new URLSearchParams();
+    params.append('', '');
+    assert_equals(params + '', '=');
+    params.append('', '');
+    assert_equals(params + '', '=&=');
+}, 'Serialize empty name and value');
+
+test(function() {
+    var params = new URLSearchParams();
+    params.append('a', 'b+c');
+    assert_equals(params + '', 'a=b%2Bc');
+    params.delete('a');
+    params.append('a+b', 'c');
+    assert_equals(params + '', 'a%2Bb=c');
+}, 'Serialize +');
+
+test(function() {
+    var params = new URLSearchParams();
+    params.append('=', 'a');
+    assert_equals(params + '', '%3D=a');
+    params.append('b', '=');
+    assert_equals(params + '', '%3D=a&b=%3D');
+}, 'Serialize =');
+
+test(function() {
+    var params = new URLSearchParams();
+    params.append('&', 'a');
+    assert_equals(params + '', '%26=a');
+    params.append('b', '&');
+    assert_equals(params + '', '%26=a&b=%26');
+}, 'Serialize &');
+
+test(function() {
+    var params = new URLSearchParams();
+    params.append('a', '*-._');
+    assert_equals(params + '', 'a=*-._');
+    params.delete('a');
+    params.append('*-._', 'c');
+    assert_equals(params + '', '*-._=c');
+}, 'Serialize *-._');
+
+test(function() {
+    var params = new URLSearchParams();
+    params.append('a', 'b%c');
+    assert_equals(params + '', 'a=b%25c');
+    params.delete('a');
+    params.append('a%b', 'c');
+    assert_equals(params + '', 'a%25b=c');
+}, 'Serialize %');
+
+test(function() {
+    var params = new URLSearchParams();
+    params.append('a', 'b\0c');
+    assert_equals(params + '', 'a=b%00c');
+    params.delete('a');
+    params.append('a\0b', 'c');
+    assert_equals(params + '', 'a%00b=c');
+}, 'Serialize \\0');
+
+test(function() {
+    var params = new URLSearchParams();
+    params.append('a', 'b\uD83D\uDCA9c');
+    assert_equals(params + '', 'a=b%F0%9F%92%A9c');
+    params.delete('a');
+    params.append('a\uD83D\uDCA9b', 'c');
+    assert_equals(params + '', 'a%F0%9F%92%A9b=c');
+}, 'Serialize \uD83D\uDCA9');  // Unicode Character 'PILE OF POO' (U+1F4A9)
+
+test(function() {
+    var params;
+    params = new URLSearchParams('a=b&c=d&&e&&');
+    assert_equals(params.toString(), 'a=b&c=d&e=');
+    params = new URLSearchParams('a = b &a=b&c=d%20');
+    assert_equals(params.toString(), 'a+=+b+&a=b&c=d+');
+    // The lone '=' _does_ survive the roundtrip.
+    params = new URLSearchParams('a=&a=b');
+    assert_equals(params.toString(), 'a=&a=b');
+}, 'URLSearchParams.toString');
+</script>
+</head>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urltestdata.json b/third_party/WebKit/LayoutTests/external/wpt/url/urltestdata.json
new file mode 100644
index 0000000..fe13d3f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/url/urltestdata.json
@@ -0,0 +1,6138 @@
+[
+  "# Based on http://trac.webkit.org/browser/trunk/LayoutTests/fast/url/script-tests/segments.js",
+  {
+    "input": "http://example\t.\norg",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://user:pass@foo:21/bar;par?b#c",
+    "base": "http://example.org/foo/bar",
+    "href": "http://user:pass@foo:21/bar;par?b#c",
+    "origin": "http://foo:21",
+    "protocol": "http:",
+    "username": "user",
+    "password": "pass",
+    "host": "foo:21",
+    "hostname": "foo",
+    "port": "21",
+    "pathname": "/bar;par",
+    "search": "?b",
+    "hash": "#c"
+  },
+  {
+    "input": "https://test:@test",
+    "base": "about:blank",
+    "href": "https://test@test/",
+    "origin": "https://test",
+    "protocol": "https:",
+    "username": "test",
+    "password": "",
+    "host": "test",
+    "hostname": "test",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "https://:@test",
+    "base": "about:blank",
+    "href": "https://test/",
+    "origin": "https://test",
+    "protocol": "https:",
+    "username": "",
+    "password": "",
+    "host": "test",
+    "hostname": "test",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "non-special://test:@test/x",
+    "base": "about:blank",
+    "href": "non-special://test@test/x",
+    "origin": "null",
+    "protocol": "non-special:",
+    "username": "test",
+    "password": "",
+    "host": "test",
+    "hostname": "test",
+    "port": "",
+    "pathname": "/x",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "non-special://:@test/x",
+    "base": "about:blank",
+    "href": "non-special://test/x",
+    "origin": "null",
+    "protocol": "non-special:",
+    "username": "",
+    "password": "",
+    "host": "test",
+    "hostname": "test",
+    "port": "",
+    "pathname": "/x",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http:foo.com",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/foo.com",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/foo.com",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "\t   :foo.com   \n",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/:foo.com",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/:foo.com",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": " foo.com  ",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/foo.com",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/foo.com",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "a:\t foo.com",
+    "base": "http://example.org/foo/bar",
+    "href": "a: foo.com",
+    "origin": "null",
+    "protocol": "a:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": " foo.com",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://f:21/ b ? d # e ",
+    "base": "http://example.org/foo/bar",
+    "href": "http://f:21/%20b%20?%20d%20# e",
+    "origin": "http://f:21",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "f:21",
+    "hostname": "f",
+    "port": "21",
+    "pathname": "/%20b%20",
+    "search": "?%20d%20",
+    "hash": "# e"
+  },
+  {
+    "input": "lolscheme:x x#x x",
+    "base": "about:blank",
+    "href": "lolscheme:x x#x x",
+    "protocol": "lolscheme:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "x x",
+    "search": "",
+    "hash": "#x x"
+  },
+  {
+    "input": "http://f:/c",
+    "base": "http://example.org/foo/bar",
+    "href": "http://f/c",
+    "origin": "http://f",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "f",
+    "hostname": "f",
+    "port": "",
+    "pathname": "/c",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://f:0/c",
+    "base": "http://example.org/foo/bar",
+    "href": "http://f:0/c",
+    "origin": "http://f:0",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "f:0",
+    "hostname": "f",
+    "port": "0",
+    "pathname": "/c",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://f:00000000000000/c",
+    "base": "http://example.org/foo/bar",
+    "href": "http://f:0/c",
+    "origin": "http://f:0",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "f:0",
+    "hostname": "f",
+    "port": "0",
+    "pathname": "/c",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://f:00000000000000000000080/c",
+    "base": "http://example.org/foo/bar",
+    "href": "http://f/c",
+    "origin": "http://f",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "f",
+    "hostname": "f",
+    "port": "",
+    "pathname": "/c",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://f:b/c",
+    "base": "http://example.org/foo/bar",
+    "failure": true
+  },
+  {
+    "input": "http://f: /c",
+    "base": "http://example.org/foo/bar",
+    "failure": true
+  },
+  {
+    "input": "http://f:\n/c",
+    "base": "http://example.org/foo/bar",
+    "href": "http://f/c",
+    "origin": "http://f",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "f",
+    "hostname": "f",
+    "port": "",
+    "pathname": "/c",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://f:fifty-two/c",
+    "base": "http://example.org/foo/bar",
+    "failure": true
+  },
+  {
+    "input": "http://f:999999/c",
+    "base": "http://example.org/foo/bar",
+    "failure": true
+  },
+  {
+    "input": "non-special://f:999999/c",
+    "base": "http://example.org/foo/bar",
+    "failure": true
+  },
+  {
+    "input": "http://f: 21 / b ? d # e ",
+    "base": "http://example.org/foo/bar",
+    "failure": true
+  },
+  {
+    "input": "",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/bar",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/bar",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "  \t",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/bar",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/bar",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": ":foo.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/:foo.com/",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/:foo.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": ":foo.com\\",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/:foo.com/",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/:foo.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": ":",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/:",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/:",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": ":a",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/:a",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/:a",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": ":/",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/:/",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/:/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": ":\\",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/:/",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/:/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": ":#",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/:#",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/:",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "#",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/bar#",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/bar",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "#/",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/bar#/",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/bar",
+    "search": "",
+    "hash": "#/"
+  },
+  {
+    "input": "#\\",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/bar#\\",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/bar",
+    "search": "",
+    "hash": "#\\"
+  },
+  {
+    "input": "#;?",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/bar#;?",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/bar",
+    "search": "",
+    "hash": "#;?"
+  },
+  {
+    "input": "?",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/bar?",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/bar",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "/",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": ":23",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/:23",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/:23",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "/:23",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/:23",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/:23",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "::",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/::",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/::",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "::23",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/::23",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/::23",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "foo://",
+    "base": "http://example.org/foo/bar",
+    "href": "foo://",
+    "origin": "null",
+    "protocol": "foo:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://a:b@c:29/d",
+    "base": "http://example.org/foo/bar",
+    "href": "http://a:b@c:29/d",
+    "origin": "http://c:29",
+    "protocol": "http:",
+    "username": "a",
+    "password": "b",
+    "host": "c:29",
+    "hostname": "c",
+    "port": "29",
+    "pathname": "/d",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http::@c:29",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/:@c:29",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/:@c:29",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://&a:foo(b]c@d:2/",
+    "base": "http://example.org/foo/bar",
+    "href": "http://&a:foo(b%5Dc@d:2/",
+    "origin": "http://d:2",
+    "protocol": "http:",
+    "username": "&a",
+    "password": "foo(b%5Dc",
+    "host": "d:2",
+    "hostname": "d",
+    "port": "2",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://::@c@d:2",
+    "base": "http://example.org/foo/bar",
+    "href": "http://:%3A%40c@d:2/",
+    "origin": "http://d:2",
+    "protocol": "http:",
+    "username": "",
+    "password": "%3A%40c",
+    "host": "d:2",
+    "hostname": "d",
+    "port": "2",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://foo.com:b@d/",
+    "base": "http://example.org/foo/bar",
+    "href": "http://foo.com:b@d/",
+    "origin": "http://d",
+    "protocol": "http:",
+    "username": "foo.com",
+    "password": "b",
+    "host": "d",
+    "hostname": "d",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://foo.com/\\@",
+    "base": "http://example.org/foo/bar",
+    "href": "http://foo.com//@",
+    "origin": "http://foo.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "foo.com",
+    "hostname": "foo.com",
+    "port": "",
+    "pathname": "//@",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http:\\\\foo.com\\",
+    "base": "http://example.org/foo/bar",
+    "href": "http://foo.com/",
+    "origin": "http://foo.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "foo.com",
+    "hostname": "foo.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http:\\\\a\\b:c\\d@foo.com\\",
+    "base": "http://example.org/foo/bar",
+    "href": "http://a/b:c/d@foo.com/",
+    "origin": "http://a",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "a",
+    "hostname": "a",
+    "port": "",
+    "pathname": "/b:c/d@foo.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "foo:/",
+    "base": "http://example.org/foo/bar",
+    "href": "foo:/",
+    "origin": "null",
+    "protocol": "foo:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "foo:/bar.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "foo:/bar.com/",
+    "origin": "null",
+    "protocol": "foo:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/bar.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "foo://///////",
+    "base": "http://example.org/foo/bar",
+    "href": "foo://///////",
+    "origin": "null",
+    "protocol": "foo:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "///////",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "foo://///////bar.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "foo://///////bar.com/",
+    "origin": "null",
+    "protocol": "foo:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "///////bar.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "foo:////://///",
+    "base": "http://example.org/foo/bar",
+    "href": "foo:////://///",
+    "origin": "null",
+    "protocol": "foo:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "//://///",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "c:/foo",
+    "base": "http://example.org/foo/bar",
+    "href": "c:/foo",
+    "origin": "null",
+    "protocol": "c:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/foo",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "//foo/bar",
+    "base": "http://example.org/foo/bar",
+    "href": "http://foo/bar",
+    "origin": "http://foo",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "foo",
+    "hostname": "foo",
+    "port": "",
+    "pathname": "/bar",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://foo/path;a??e#f#g",
+    "base": "http://example.org/foo/bar",
+    "href": "http://foo/path;a??e#f#g",
+    "origin": "http://foo",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "foo",
+    "hostname": "foo",
+    "port": "",
+    "pathname": "/path;a",
+    "search": "??e",
+    "hash": "#f#g"
+  },
+  {
+    "input": "http://foo/abcd?efgh?ijkl",
+    "base": "http://example.org/foo/bar",
+    "href": "http://foo/abcd?efgh?ijkl",
+    "origin": "http://foo",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "foo",
+    "hostname": "foo",
+    "port": "",
+    "pathname": "/abcd",
+    "search": "?efgh?ijkl",
+    "hash": ""
+  },
+  {
+    "input": "http://foo/abcd#foo?bar",
+    "base": "http://example.org/foo/bar",
+    "href": "http://foo/abcd#foo?bar",
+    "origin": "http://foo",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "foo",
+    "hostname": "foo",
+    "port": "",
+    "pathname": "/abcd",
+    "search": "",
+    "hash": "#foo?bar"
+  },
+  {
+    "input": "[61:24:74]:98",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/[61:24:74]:98",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/[61:24:74]:98",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http:[61:27]/:foo",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/[61:27]/:foo",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/[61:27]/:foo",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://[1::2]:3:4",
+    "base": "http://example.org/foo/bar",
+    "failure": true
+  },
+  {
+    "input": "http://2001::1",
+    "base": "http://example.org/foo/bar",
+    "failure": true
+  },
+  {
+    "input": "http://2001::1]",
+    "base": "http://example.org/foo/bar",
+    "failure": true
+  },
+  {
+    "input": "http://2001::1]:80",
+    "base": "http://example.org/foo/bar",
+    "failure": true
+  },
+  {
+    "input": "http://[2001::1]",
+    "base": "http://example.org/foo/bar",
+    "href": "http://[2001::1]/",
+    "origin": "http://[2001::1]",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "[2001::1]",
+    "hostname": "[2001::1]",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://[::127.0.0.1]",
+    "base": "http://example.org/foo/bar",
+    "href": "http://[::7f00:1]/",
+    "origin": "http://[::7f00:1]",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "[::7f00:1]",
+    "hostname": "[::7f00:1]",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://[0:0:0:0:0:0:13.1.68.3]",
+    "base": "http://example.org/foo/bar",
+    "href": "http://[::d01:4403]/",
+    "origin": "http://[::d01:4403]",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "[::d01:4403]",
+    "hostname": "[::d01:4403]",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://[2001::1]:80",
+    "base": "http://example.org/foo/bar",
+    "href": "http://[2001::1]/",
+    "origin": "http://[2001::1]",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "[2001::1]",
+    "hostname": "[2001::1]",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http:/example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/example.com/",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ftp:/example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "ftp://example.com/",
+    "origin": "ftp://example.com",
+    "protocol": "ftp:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "https:/example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "https://example.com/",
+    "origin": "https://example.com",
+    "protocol": "https:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "madeupscheme:/example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "madeupscheme:/example.com/",
+    "origin": "null",
+    "protocol": "madeupscheme:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file:/example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "file:///example.com/",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file://example:1/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "file://example:test/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "file://example%/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "file://[example]/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "ftps:/example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "ftps:/example.com/",
+    "origin": "null",
+    "protocol": "ftps:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "gopher:/example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "gopher://example.com/",
+    "origin": "gopher://example.com",
+    "protocol": "gopher:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ws:/example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "ws://example.com/",
+    "origin": "ws://example.com",
+    "protocol": "ws:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "wss:/example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "wss://example.com/",
+    "origin": "wss://example.com",
+    "protocol": "wss:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "data:/example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "data:/example.com/",
+    "origin": "null",
+    "protocol": "data:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "javascript:/example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "javascript:/example.com/",
+    "origin": "null",
+    "protocol": "javascript:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "mailto:/example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "mailto:/example.com/",
+    "origin": "null",
+    "protocol": "mailto:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http:example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/example.com/",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ftp:example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "ftp://example.com/",
+    "origin": "ftp://example.com",
+    "protocol": "ftp:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "https:example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "https://example.com/",
+    "origin": "https://example.com",
+    "protocol": "https:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "madeupscheme:example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "madeupscheme:example.com/",
+    "origin": "null",
+    "protocol": "madeupscheme:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ftps:example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "ftps:example.com/",
+    "origin": "null",
+    "protocol": "ftps:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "gopher:example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "gopher://example.com/",
+    "origin": "gopher://example.com",
+    "protocol": "gopher:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ws:example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "ws://example.com/",
+    "origin": "ws://example.com",
+    "protocol": "ws:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "wss:example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "wss://example.com/",
+    "origin": "wss://example.com",
+    "protocol": "wss:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "data:example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "data:example.com/",
+    "origin": "null",
+    "protocol": "data:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "javascript:example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "javascript:example.com/",
+    "origin": "null",
+    "protocol": "javascript:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "mailto:example.com/",
+    "base": "http://example.org/foo/bar",
+    "href": "mailto:example.com/",
+    "origin": "null",
+    "protocol": "mailto:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "/a/b/c",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/a/b/c",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/a/b/c",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "/a/ /c",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/a/%20/c",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/a/%20/c",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "/a%2fc",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/a%2fc",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/a%2fc",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "/a/%2f/c",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/a/%2f/c",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/a/%2f/c",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "#β",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/bar#%CE%B2",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/bar",
+    "search": "",
+    "hash": "#%CE%B2"
+  },
+  {
+    "input": "data:text/html,test#test",
+    "base": "http://example.org/foo/bar",
+    "href": "data:text/html,test#test",
+    "origin": "null",
+    "protocol": "data:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "text/html,test",
+    "search": "",
+    "hash": "#test"
+  },
+  {
+    "input": "tel:1234567890",
+    "base": "http://example.org/foo/bar",
+    "href": "tel:1234567890",
+    "origin": "null",
+    "protocol": "tel:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "1234567890",
+    "search": "",
+    "hash": ""
+  },
+  "# Based on http://trac.webkit.org/browser/trunk/LayoutTests/fast/url/file.html",
+  {
+    "input": "file:c:\\foo\\bar.html",
+    "base": "file:///tmp/mock/path",
+    "href": "file:///c:/foo/bar.html",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/c:/foo/bar.html",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "  File:c|////foo\\bar.html",
+    "base": "file:///tmp/mock/path",
+    "href": "file:///c:////foo/bar.html",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/c:////foo/bar.html",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "C|/foo/bar",
+    "base": "file:///tmp/mock/path",
+    "href": "file:///C:/foo/bar",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C:/foo/bar",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "/C|\\foo\\bar",
+    "base": "file:///tmp/mock/path",
+    "href": "file:///C:/foo/bar",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C:/foo/bar",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "//C|/foo/bar",
+    "base": "file:///tmp/mock/path",
+    "href": "file:///C:/foo/bar",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C:/foo/bar",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "//server/file",
+    "base": "file:///tmp/mock/path",
+    "href": "file://server/file",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "server",
+    "hostname": "server",
+    "port": "",
+    "pathname": "/file",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "\\\\server\\file",
+    "base": "file:///tmp/mock/path",
+    "href": "file://server/file",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "server",
+    "hostname": "server",
+    "port": "",
+    "pathname": "/file",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "/\\server/file",
+    "base": "file:///tmp/mock/path",
+    "href": "file://server/file",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "server",
+    "hostname": "server",
+    "port": "",
+    "pathname": "/file",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file:///foo/bar.txt",
+    "base": "file:///tmp/mock/path",
+    "href": "file:///foo/bar.txt",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/foo/bar.txt",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file:///home/me",
+    "base": "file:///tmp/mock/path",
+    "href": "file:///home/me",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/home/me",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "//",
+    "base": "file:///tmp/mock/path",
+    "href": "file:///",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "///",
+    "base": "file:///tmp/mock/path",
+    "href": "file:///",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "///test",
+    "base": "file:///tmp/mock/path",
+    "href": "file:///test",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/test",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file://test",
+    "base": "file:///tmp/mock/path",
+    "href": "file://test/",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "test",
+    "hostname": "test",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file://localhost",
+    "base": "file:///tmp/mock/path",
+    "href": "file:///",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file://localhost/",
+    "base": "file:///tmp/mock/path",
+    "href": "file:///",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file://localhost/test",
+    "base": "file:///tmp/mock/path",
+    "href": "file:///test",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/test",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "test",
+    "base": "file:///tmp/mock/path",
+    "href": "file:///tmp/mock/test",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/tmp/mock/test",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file:test",
+    "base": "file:///tmp/mock/path",
+    "href": "file:///tmp/mock/test",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/tmp/mock/test",
+    "search": "",
+    "hash": ""
+  },
+  "# Based on http://trac.webkit.org/browser/trunk/LayoutTests/fast/url/script-tests/path.js",
+  {
+    "input": "http://example.com/././foo",
+    "base": "about:blank",
+    "href": "http://example.com/foo",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/./.foo",
+    "base": "about:blank",
+    "href": "http://example.com/.foo",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/.foo",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo/.",
+    "base": "about:blank",
+    "href": "http://example.com/foo/",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo/./",
+    "base": "about:blank",
+    "href": "http://example.com/foo/",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo/bar/..",
+    "base": "about:blank",
+    "href": "http://example.com/foo/",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo/bar/../",
+    "base": "about:blank",
+    "href": "http://example.com/foo/",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo/..bar",
+    "base": "about:blank",
+    "href": "http://example.com/foo/..bar",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo/..bar",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo/bar/../ton",
+    "base": "about:blank",
+    "href": "http://example.com/foo/ton",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo/ton",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo/bar/../ton/../../a",
+    "base": "about:blank",
+    "href": "http://example.com/a",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/a",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo/../../..",
+    "base": "about:blank",
+    "href": "http://example.com/",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo/../../../ton",
+    "base": "about:blank",
+    "href": "http://example.com/ton",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/ton",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo/%2e",
+    "base": "about:blank",
+    "href": "http://example.com/foo/",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo/%2e%2",
+    "base": "about:blank",
+    "href": "http://example.com/foo/%2e%2",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo/%2e%2",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar",
+    "base": "about:blank",
+    "href": "http://example.com/%2e.bar",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/%2e.bar",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com////../..",
+    "base": "about:blank",
+    "href": "http://example.com//",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "//",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo/bar//../..",
+    "base": "about:blank",
+    "href": "http://example.com/foo/",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo/bar//..",
+    "base": "about:blank",
+    "href": "http://example.com/foo/bar/",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo/bar/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo",
+    "base": "about:blank",
+    "href": "http://example.com/foo",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/%20foo",
+    "base": "about:blank",
+    "href": "http://example.com/%20foo",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/%20foo",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo%",
+    "base": "about:blank",
+    "href": "http://example.com/foo%",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo%",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo%2",
+    "base": "about:blank",
+    "href": "http://example.com/foo%2",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo%2",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo%2zbar",
+    "base": "about:blank",
+    "href": "http://example.com/foo%2zbar",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo%2zbar",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo%2©zbar",
+    "base": "about:blank",
+    "href": "http://example.com/foo%2%C3%82%C2%A9zbar",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo%2%C3%82%C2%A9zbar",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo%41%7a",
+    "base": "about:blank",
+    "href": "http://example.com/foo%41%7a",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo%41%7a",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo\t\u0091%91",
+    "base": "about:blank",
+    "href": "http://example.com/foo%C2%91%91",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo%C2%91%91",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo%00%51",
+    "base": "about:blank",
+    "href": "http://example.com/foo%00%51",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foo%00%51",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/(%28:%3A%29)",
+    "base": "about:blank",
+    "href": "http://example.com/(%28:%3A%29)",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/(%28:%3A%29)",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/%3A%3a%3C%3c",
+    "base": "about:blank",
+    "href": "http://example.com/%3A%3a%3C%3c",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/%3A%3a%3C%3c",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/foo\tbar",
+    "base": "about:blank",
+    "href": "http://example.com/foobar",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/foobar",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com\\\\foo\\\\bar",
+    "base": "about:blank",
+    "href": "http://example.com//foo//bar",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "//foo//bar",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd",
+    "base": "about:blank",
+    "href": "http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/%7Ffp3%3Eju%3Dduvgw%3Dd",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/@asdf%40",
+    "base": "about:blank",
+    "href": "http://example.com/@asdf%40",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/@asdf%40",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/你好你好",
+    "base": "about:blank",
+    "href": "http://example.com/%E4%BD%A0%E5%A5%BD%E4%BD%A0%E5%A5%BD",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/%E4%BD%A0%E5%A5%BD%E4%BD%A0%E5%A5%BD",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/‥/foo",
+    "base": "about:blank",
+    "href": "http://example.com/%E2%80%A5/foo",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/%E2%80%A5/foo",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com//foo",
+    "base": "about:blank",
+    "href": "http://example.com/%EF%BB%BF/foo",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/%EF%BB%BF/foo",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example.com/‮/foo/‭/bar",
+    "base": "about:blank",
+    "href": "http://example.com/%E2%80%AE/foo/%E2%80%AD/bar",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/%E2%80%AE/foo/%E2%80%AD/bar",
+    "search": "",
+    "hash": ""
+  },
+  "# Based on http://trac.webkit.org/browser/trunk/LayoutTests/fast/url/script-tests/relative.js",
+  {
+    "input": "http://www.google.com/foo?bar=baz#",
+    "base": "about:blank",
+    "href": "http://www.google.com/foo?bar=baz#",
+    "origin": "http://www.google.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.google.com",
+    "hostname": "www.google.com",
+    "port": "",
+    "pathname": "/foo",
+    "search": "?bar=baz",
+    "hash": ""
+  },
+  {
+    "input": "http://www.google.com/foo?bar=baz# »",
+    "base": "about:blank",
+    "href": "http://www.google.com/foo?bar=baz# %C2%BB",
+    "origin": "http://www.google.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.google.com",
+    "hostname": "www.google.com",
+    "port": "",
+    "pathname": "/foo",
+    "search": "?bar=baz",
+    "hash": "# %C2%BB"
+  },
+  {
+    "input": "data:test# »",
+    "base": "about:blank",
+    "href": "data:test# %C2%BB",
+    "origin": "null",
+    "protocol": "data:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "test",
+    "search": "",
+    "hash": "# %C2%BB"
+  },
+  {
+    "input": "http://www.google.com",
+    "base": "about:blank",
+    "href": "http://www.google.com/",
+    "origin": "http://www.google.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.google.com",
+    "hostname": "www.google.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://192.0x00A80001",
+    "base": "about:blank",
+    "href": "http://192.168.0.1/",
+    "origin": "http://192.168.0.1",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "192.168.0.1",
+    "hostname": "192.168.0.1",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://www/foo%2Ehtml",
+    "base": "about:blank",
+    "href": "http://www/foo%2Ehtml",
+    "origin": "http://www",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www",
+    "hostname": "www",
+    "port": "",
+    "pathname": "/foo%2Ehtml",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://www/foo/%2E/html",
+    "base": "about:blank",
+    "href": "http://www/foo/html",
+    "origin": "http://www",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www",
+    "hostname": "www",
+    "port": "",
+    "pathname": "/foo/html",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://user:pass@/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "http://%25DOMAIN:foobar@foodomain.com/",
+    "base": "about:blank",
+    "href": "http://%25DOMAIN:foobar@foodomain.com/",
+    "origin": "http://foodomain.com",
+    "protocol": "http:",
+    "username": "%25DOMAIN",
+    "password": "foobar",
+    "host": "foodomain.com",
+    "hostname": "foodomain.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http:\\\\www.google.com\\foo",
+    "base": "about:blank",
+    "href": "http://www.google.com/foo",
+    "origin": "http://www.google.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.google.com",
+    "hostname": "www.google.com",
+    "port": "",
+    "pathname": "/foo",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://foo:80/",
+    "base": "about:blank",
+    "href": "http://foo/",
+    "origin": "http://foo",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "foo",
+    "hostname": "foo",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://foo:81/",
+    "base": "about:blank",
+    "href": "http://foo:81/",
+    "origin": "http://foo:81",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "foo:81",
+    "hostname": "foo",
+    "port": "81",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "httpa://foo:80/",
+    "base": "about:blank",
+    "href": "httpa://foo:80/",
+    "origin": "null",
+    "protocol": "httpa:",
+    "username": "",
+    "password": "",
+    "host": "foo:80",
+    "hostname": "foo",
+    "port": "80",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://foo:-80/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "https://foo:443/",
+    "base": "about:blank",
+    "href": "https://foo/",
+    "origin": "https://foo",
+    "protocol": "https:",
+    "username": "",
+    "password": "",
+    "host": "foo",
+    "hostname": "foo",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "https://foo:80/",
+    "base": "about:blank",
+    "href": "https://foo:80/",
+    "origin": "https://foo:80",
+    "protocol": "https:",
+    "username": "",
+    "password": "",
+    "host": "foo:80",
+    "hostname": "foo",
+    "port": "80",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ftp://foo:21/",
+    "base": "about:blank",
+    "href": "ftp://foo/",
+    "origin": "ftp://foo",
+    "protocol": "ftp:",
+    "username": "",
+    "password": "",
+    "host": "foo",
+    "hostname": "foo",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ftp://foo:80/",
+    "base": "about:blank",
+    "href": "ftp://foo:80/",
+    "origin": "ftp://foo:80",
+    "protocol": "ftp:",
+    "username": "",
+    "password": "",
+    "host": "foo:80",
+    "hostname": "foo",
+    "port": "80",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "gopher://foo:70/",
+    "base": "about:blank",
+    "href": "gopher://foo/",
+    "origin": "gopher://foo",
+    "protocol": "gopher:",
+    "username": "",
+    "password": "",
+    "host": "foo",
+    "hostname": "foo",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "gopher://foo:443/",
+    "base": "about:blank",
+    "href": "gopher://foo:443/",
+    "origin": "gopher://foo:443",
+    "protocol": "gopher:",
+    "username": "",
+    "password": "",
+    "host": "foo:443",
+    "hostname": "foo",
+    "port": "443",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ws://foo:80/",
+    "base": "about:blank",
+    "href": "ws://foo/",
+    "origin": "ws://foo",
+    "protocol": "ws:",
+    "username": "",
+    "password": "",
+    "host": "foo",
+    "hostname": "foo",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ws://foo:81/",
+    "base": "about:blank",
+    "href": "ws://foo:81/",
+    "origin": "ws://foo:81",
+    "protocol": "ws:",
+    "username": "",
+    "password": "",
+    "host": "foo:81",
+    "hostname": "foo",
+    "port": "81",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ws://foo:443/",
+    "base": "about:blank",
+    "href": "ws://foo:443/",
+    "origin": "ws://foo:443",
+    "protocol": "ws:",
+    "username": "",
+    "password": "",
+    "host": "foo:443",
+    "hostname": "foo",
+    "port": "443",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ws://foo:815/",
+    "base": "about:blank",
+    "href": "ws://foo:815/",
+    "origin": "ws://foo:815",
+    "protocol": "ws:",
+    "username": "",
+    "password": "",
+    "host": "foo:815",
+    "hostname": "foo",
+    "port": "815",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "wss://foo:80/",
+    "base": "about:blank",
+    "href": "wss://foo:80/",
+    "origin": "wss://foo:80",
+    "protocol": "wss:",
+    "username": "",
+    "password": "",
+    "host": "foo:80",
+    "hostname": "foo",
+    "port": "80",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "wss://foo:81/",
+    "base": "about:blank",
+    "href": "wss://foo:81/",
+    "origin": "wss://foo:81",
+    "protocol": "wss:",
+    "username": "",
+    "password": "",
+    "host": "foo:81",
+    "hostname": "foo",
+    "port": "81",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "wss://foo:443/",
+    "base": "about:blank",
+    "href": "wss://foo/",
+    "origin": "wss://foo",
+    "protocol": "wss:",
+    "username": "",
+    "password": "",
+    "host": "foo",
+    "hostname": "foo",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "wss://foo:815/",
+    "base": "about:blank",
+    "href": "wss://foo:815/",
+    "origin": "wss://foo:815",
+    "protocol": "wss:",
+    "username": "",
+    "password": "",
+    "host": "foo:815",
+    "hostname": "foo",
+    "port": "815",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http:/example.com/",
+    "base": "about:blank",
+    "href": "http://example.com/",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ftp:/example.com/",
+    "base": "about:blank",
+    "href": "ftp://example.com/",
+    "origin": "ftp://example.com",
+    "protocol": "ftp:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "https:/example.com/",
+    "base": "about:blank",
+    "href": "https://example.com/",
+    "origin": "https://example.com",
+    "protocol": "https:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "madeupscheme:/example.com/",
+    "base": "about:blank",
+    "href": "madeupscheme:/example.com/",
+    "origin": "null",
+    "protocol": "madeupscheme:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file:/example.com/",
+    "base": "about:blank",
+    "href": "file:///example.com/",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ftps:/example.com/",
+    "base": "about:blank",
+    "href": "ftps:/example.com/",
+    "origin": "null",
+    "protocol": "ftps:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "gopher:/example.com/",
+    "base": "about:blank",
+    "href": "gopher://example.com/",
+    "origin": "gopher://example.com",
+    "protocol": "gopher:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ws:/example.com/",
+    "base": "about:blank",
+    "href": "ws://example.com/",
+    "origin": "ws://example.com",
+    "protocol": "ws:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "wss:/example.com/",
+    "base": "about:blank",
+    "href": "wss://example.com/",
+    "origin": "wss://example.com",
+    "protocol": "wss:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "data:/example.com/",
+    "base": "about:blank",
+    "href": "data:/example.com/",
+    "origin": "null",
+    "protocol": "data:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "javascript:/example.com/",
+    "base": "about:blank",
+    "href": "javascript:/example.com/",
+    "origin": "null",
+    "protocol": "javascript:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "mailto:/example.com/",
+    "base": "about:blank",
+    "href": "mailto:/example.com/",
+    "origin": "null",
+    "protocol": "mailto:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http:example.com/",
+    "base": "about:blank",
+    "href": "http://example.com/",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ftp:example.com/",
+    "base": "about:blank",
+    "href": "ftp://example.com/",
+    "origin": "ftp://example.com",
+    "protocol": "ftp:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "https:example.com/",
+    "base": "about:blank",
+    "href": "https://example.com/",
+    "origin": "https://example.com",
+    "protocol": "https:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "madeupscheme:example.com/",
+    "base": "about:blank",
+    "href": "madeupscheme:example.com/",
+    "origin": "null",
+    "protocol": "madeupscheme:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ftps:example.com/",
+    "base": "about:blank",
+    "href": "ftps:example.com/",
+    "origin": "null",
+    "protocol": "ftps:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "gopher:example.com/",
+    "base": "about:blank",
+    "href": "gopher://example.com/",
+    "origin": "gopher://example.com",
+    "protocol": "gopher:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ws:example.com/",
+    "base": "about:blank",
+    "href": "ws://example.com/",
+    "origin": "ws://example.com",
+    "protocol": "ws:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "wss:example.com/",
+    "base": "about:blank",
+    "href": "wss://example.com/",
+    "origin": "wss://example.com",
+    "protocol": "wss:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "data:example.com/",
+    "base": "about:blank",
+    "href": "data:example.com/",
+    "origin": "null",
+    "protocol": "data:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "javascript:example.com/",
+    "base": "about:blank",
+    "href": "javascript:example.com/",
+    "origin": "null",
+    "protocol": "javascript:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "example.com/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "mailto:example.com/",
+    "base": "about:blank",
+    "href": "mailto:example.com/",
+    "origin": "null",
+    "protocol": "mailto:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "example.com/",
+    "search": "",
+    "hash": ""
+  },
+  "# Based on http://trac.webkit.org/browser/trunk/LayoutTests/fast/url/segments-userinfo-vs-host.html",
+  {
+    "input": "http:@www.example.com",
+    "base": "about:blank",
+    "href": "http://www.example.com/",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http:/@www.example.com",
+    "base": "about:blank",
+    "href": "http://www.example.com/",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://@www.example.com",
+    "base": "about:blank",
+    "href": "http://www.example.com/",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http:a:b@www.example.com",
+    "base": "about:blank",
+    "href": "http://a:b@www.example.com/",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "a",
+    "password": "b",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http:/a:b@www.example.com",
+    "base": "about:blank",
+    "href": "http://a:b@www.example.com/",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "a",
+    "password": "b",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://a:b@www.example.com",
+    "base": "about:blank",
+    "href": "http://a:b@www.example.com/",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "a",
+    "password": "b",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://@pple.com",
+    "base": "about:blank",
+    "href": "http://pple.com/",
+    "origin": "http://pple.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "pple.com",
+    "hostname": "pple.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http::b@www.example.com",
+    "base": "about:blank",
+    "href": "http://:b@www.example.com/",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "b",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http:/:b@www.example.com",
+    "base": "about:blank",
+    "href": "http://:b@www.example.com/",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "b",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://:b@www.example.com",
+    "base": "about:blank",
+    "href": "http://:b@www.example.com/",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "b",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http:/:@/www.example.com",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "http://user@/www.example.com",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "http:@/www.example.com",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "http:/@/www.example.com",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "http://@/www.example.com",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "https:@/www.example.com",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "http:a:b@/www.example.com",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "http:/a:b@/www.example.com",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "http://a:b@/www.example.com",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "http::@/www.example.com",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "http:a:@www.example.com",
+    "base": "about:blank",
+    "href": "http://a@www.example.com/",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "a",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http:/a:@www.example.com",
+    "base": "about:blank",
+    "href": "http://a@www.example.com/",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "a",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://a:@www.example.com",
+    "base": "about:blank",
+    "href": "http://a@www.example.com/",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "a",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://www.@pple.com",
+    "base": "about:blank",
+    "href": "http://www.@pple.com/",
+    "origin": "http://pple.com",
+    "protocol": "http:",
+    "username": "www.",
+    "password": "",
+    "host": "pple.com",
+    "hostname": "pple.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http:@:www.example.com",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "http:/@:www.example.com",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "http://@:www.example.com",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "http://:@www.example.com",
+    "base": "about:blank",
+    "href": "http://www.example.com/",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  "# Others",
+  {
+    "input": "/",
+    "base": "http://www.example.com/test",
+    "href": "http://www.example.com/",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "/test.txt",
+    "base": "http://www.example.com/test",
+    "href": "http://www.example.com/test.txt",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/test.txt",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": ".",
+    "base": "http://www.example.com/test",
+    "href": "http://www.example.com/",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "..",
+    "base": "http://www.example.com/test",
+    "href": "http://www.example.com/",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "test.txt",
+    "base": "http://www.example.com/test",
+    "href": "http://www.example.com/test.txt",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/test.txt",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "./test.txt",
+    "base": "http://www.example.com/test",
+    "href": "http://www.example.com/test.txt",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/test.txt",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "../test.txt",
+    "base": "http://www.example.com/test",
+    "href": "http://www.example.com/test.txt",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/test.txt",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "../aaa/test.txt",
+    "base": "http://www.example.com/test",
+    "href": "http://www.example.com/aaa/test.txt",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/aaa/test.txt",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "../../test.txt",
+    "base": "http://www.example.com/test",
+    "href": "http://www.example.com/test.txt",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/test.txt",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "中/test.txt",
+    "base": "http://www.example.com/test",
+    "href": "http://www.example.com/%E4%B8%AD/test.txt",
+    "origin": "http://www.example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.example.com",
+    "hostname": "www.example.com",
+    "port": "",
+    "pathname": "/%E4%B8%AD/test.txt",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://www.example2.com",
+    "base": "http://www.example.com/test",
+    "href": "http://www.example2.com/",
+    "origin": "http://www.example2.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.example2.com",
+    "hostname": "www.example2.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "//www.example2.com",
+    "base": "http://www.example.com/test",
+    "href": "http://www.example2.com/",
+    "origin": "http://www.example2.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.example2.com",
+    "hostname": "www.example2.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file:...",
+    "base": "http://www.example.com/test",
+    "href": "file:///...",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/...",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file:..",
+    "base": "http://www.example.com/test",
+    "href": "file:///",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file:a",
+    "base": "http://www.example.com/test",
+    "href": "file:///a",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/a",
+    "search": "",
+    "hash": ""
+  },
+  "# Based on http://trac.webkit.org/browser/trunk/LayoutTests/fast/url/host.html",
+  "Basic canonicalization, uppercase should be converted to lowercase",
+  {
+    "input": "http://ExAmPlE.CoM",
+    "base": "http://other.com/",
+    "href": "http://example.com/",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://example example.com",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  {
+    "input": "http://Goo%20 goo%7C|.com",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  {
+    "input": "http://[]",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  {
+    "input": "http://[:]",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  "U+3000 is mapped to U+0020 (space) which is disallowed",
+  {
+    "input": "http://GOO\u00a0\u3000goo.com",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  "Other types of space (no-break, zero-width, zero-width-no-break) are name-prepped away to nothing. U+200B, U+2060, and U+FEFF, are ignored",
+  {
+    "input": "http://GOO\u200b\u2060\ufeffgoo.com",
+    "base": "http://other.com/",
+    "href": "http://googoo.com/",
+    "origin": "http://googoo.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "googoo.com",
+    "hostname": "googoo.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  "Ideographic full stop (full-width period for Chinese, etc.) should be treated as a dot. U+3002 is mapped to U+002E (dot)",
+  {
+    "input": "http://www.foo。bar.com",
+    "base": "http://other.com/",
+    "href": "http://www.foo.bar.com/",
+    "origin": "http://www.foo.bar.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "www.foo.bar.com",
+    "hostname": "www.foo.bar.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  "Invalid unicode characters should fail... U+FDD0 is disallowed; %ef%b7%90 is U+FDD0",
+  {
+    "input": "http://\ufdd0zyx.com",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  "This is the same as previous but escaped",
+  {
+    "input": "http://%ef%b7%90zyx.com",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  "U+FFFD",
+  {
+    "input": "https://\ufffd",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "https://%EF%BF%BD",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "https://x/\ufffd?\ufffd#\ufffd",
+    "base": "about:blank",
+    "href": "https://x/%EF%BF%BD?%EF%BF%BD#%EF%BF%BD",
+    "origin": "https://x",
+    "protocol": "https:",
+    "username": "",
+    "password": "",
+    "host": "x",
+    "hostname": "x",
+    "port": "",
+    "pathname": "/%EF%BF%BD",
+    "search": "?%EF%BF%BD",
+    "hash": "#%EF%BF%BD"
+  },
+  "Test name prepping, fullwidth input should be converted to ASCII and NOT IDN-ized. This is 'Go' in fullwidth UTF-8/UTF-16.",
+  {
+    "input": "http://Go.com",
+    "base": "http://other.com/",
+    "href": "http://go.com/",
+    "origin": "http://go.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "go.com",
+    "hostname": "go.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  "URL spec forbids the following. https://www.w3.org/Bugs/Public/show_bug.cgi?id=24257",
+  {
+    "input": "http://%41.com",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  {
+    "input": "http://%ef%bc%85%ef%bc%94%ef%bc%91.com",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  "...%00 in fullwidth should fail (also as escaped UTF-8 input)",
+  {
+    "input": "http://%00.com",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  {
+    "input": "http://%ef%bc%85%ef%bc%90%ef%bc%90.com",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  "Basic IDN support, UTF-8 and UTF-16 input should be converted to IDN",
+  {
+    "input": "http://你好你好",
+    "base": "http://other.com/",
+    "href": "http://xn--6qqa088eba/",
+    "origin": "http://你好你好",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "xn--6qqa088eba",
+    "hostname": "xn--6qqa088eba",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "https://faß.ExAmPlE/",
+    "base": "about:blank",
+    "href": "https://xn--fa-hia.example/",
+    "origin": "https://faß.example",
+    "protocol": "https:",
+    "username": "",
+    "password": "",
+    "host": "xn--fa-hia.example",
+    "hostname": "xn--fa-hia.example",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "sc://faß.ExAmPlE/",
+    "base": "about:blank",
+    "href": "sc://fa%C3%9F.ExAmPlE/",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "fa%C3%9F.ExAmPlE",
+    "hostname": "fa%C3%9F.ExAmPlE",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  "Invalid escaped characters should fail and the percents should be escaped. https://www.w3.org/Bugs/Public/show_bug.cgi?id=24191",
+  {
+    "input": "http://%zz%66%a.com",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  "If we get an invalid character that has been escaped.",
+  {
+    "input": "http://%25",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  {
+    "input": "http://hello%00",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  "Escaped numbers should be treated like IP addresses if they are.",
+  {
+    "input": "http://%30%78%63%30%2e%30%32%35%30.01",
+    "base": "http://other.com/",
+    "href": "http://192.168.0.1/",
+    "origin": "http://192.168.0.1",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "192.168.0.1",
+    "hostname": "192.168.0.1",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://%30%78%63%30%2e%30%32%35%30.01%2e",
+    "base": "http://other.com/",
+    "href": "http://192.168.0.1/",
+    "origin": "http://192.168.0.1",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "192.168.0.1",
+    "hostname": "192.168.0.1",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://192.168.0.257",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  "Invalid escaping in hosts causes failure",
+  {
+    "input": "http://%3g%78%63%30%2e%30%32%35%30%2E.01",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  "A space in a host causes failure",
+  {
+    "input": "http://192.168.0.1 hello",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  {
+    "input": "https://x x:12",
+    "base": "about:blank",
+    "failure": true
+  },
+  "Fullwidth and escaped UTF-8 fullwidth should still be treated as IP",
+  {
+    "input": "http://0Xc0.0250.01",
+    "base": "http://other.com/",
+    "href": "http://192.168.0.1/",
+    "origin": "http://192.168.0.1",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "192.168.0.1",
+    "hostname": "192.168.0.1",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  "Domains with empty labels",
+  {
+    "input": "http://./",
+    "base": "about:blank",
+    "href": "http://./",
+    "origin": "http://.",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": ".",
+    "hostname": ".",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://../",
+    "base": "about:blank",
+    "href": "http://../",
+    "origin": "http://..",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "..",
+    "hostname": "..",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://0..0x300/",
+    "base": "about:blank",
+    "href": "http://0..0x300/",
+    "origin": "http://0..0x300",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "0..0x300",
+    "hostname": "0..0x300",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  "Broken IPv6",
+  {
+    "input": "http://[www.google.com]/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "http://[google.com]",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  {
+    "input": "http://[::1.2.3.4x]",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  {
+    "input": "http://[::1.2.3.]",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  {
+    "input": "http://[::1.2.]",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  {
+    "input": "http://[::1.]",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  "Misc Unicode",
+  {
+    "input": "http://foo:💩@example.com/bar",
+    "base": "http://other.com/",
+    "href": "http://foo:%F0%9F%92%A9@example.com/bar",
+    "origin": "http://example.com",
+    "protocol": "http:",
+    "username": "foo",
+    "password": "%F0%9F%92%A9",
+    "host": "example.com",
+    "hostname": "example.com",
+    "port": "",
+    "pathname": "/bar",
+    "search": "",
+    "hash": ""
+  },
+  "# resolving a fragment against any scheme succeeds",
+  {
+    "input": "#",
+    "base": "test:test",
+    "href": "test:test#",
+    "origin": "null",
+    "protocol": "test:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "test",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "#x",
+    "base": "mailto:x@x.com",
+    "href": "mailto:x@x.com#x",
+    "origin": "null",
+    "protocol": "mailto:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "x@x.com",
+    "search": "",
+    "hash": "#x"
+  },
+  {
+    "input": "#x",
+    "base": "data:,",
+    "href": "data:,#x",
+    "origin": "null",
+    "protocol": "data:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": ",",
+    "search": "",
+    "hash": "#x"
+  },
+  {
+    "input": "#x",
+    "base": "about:blank",
+    "href": "about:blank#x",
+    "origin": "null",
+    "protocol": "about:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "blank",
+    "search": "",
+    "hash": "#x"
+  },
+  {
+    "input": "#",
+    "base": "test:test?test",
+    "href": "test:test?test#",
+    "origin": "null",
+    "protocol": "test:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "test",
+    "search": "?test",
+    "hash": ""
+  },
+  "# multiple @ in authority state",
+  {
+    "input": "https://@test@test@example:800/",
+    "base": "http://doesnotmatter/",
+    "href": "https://%40test%40test@example:800/",
+    "origin": "https://example:800",
+    "protocol": "https:",
+    "username": "%40test%40test",
+    "password": "",
+    "host": "example:800",
+    "hostname": "example",
+    "port": "800",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "https://@@@example",
+    "base": "http://doesnotmatter/",
+    "href": "https://%40%40@example/",
+    "origin": "https://example",
+    "protocol": "https:",
+    "username": "%40%40",
+    "password": "",
+    "host": "example",
+    "hostname": "example",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  "non-az-09 characters",
+  {
+    "input": "http://`{}:`{}@h/`{}?`{}",
+    "base": "http://doesnotmatter/",
+    "href": "http://%60%7B%7D:%60%7B%7D@h/%60%7B%7D?`{}",
+    "origin": "http://h",
+    "protocol": "http:",
+    "username": "%60%7B%7D",
+    "password": "%60%7B%7D",
+    "host": "h",
+    "hostname": "h",
+    "port": "",
+    "pathname": "/%60%7B%7D",
+    "search": "?`{}",
+    "hash": ""
+  },
+  "# Credentials in base",
+  {
+    "input": "/some/path",
+    "base": "http://user@example.org/smth",
+    "href": "http://user@example.org/some/path",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "user",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/some/path",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "",
+    "base": "http://user:pass@example.org:21/smth",
+    "href": "http://user:pass@example.org:21/smth",
+    "origin": "http://example.org:21",
+    "protocol": "http:",
+    "username": "user",
+    "password": "pass",
+    "host": "example.org:21",
+    "hostname": "example.org",
+    "port": "21",
+    "pathname": "/smth",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "/some/path",
+    "base": "http://user:pass@example.org:21/smth",
+    "href": "http://user:pass@example.org:21/some/path",
+    "origin": "http://example.org:21",
+    "protocol": "http:",
+    "username": "user",
+    "password": "pass",
+    "host": "example.org:21",
+    "hostname": "example.org",
+    "port": "21",
+    "pathname": "/some/path",
+    "search": "",
+    "hash": ""
+  },
+  "# a set of tests designed by zcorpan for relative URLs with unknown schemes",
+  {
+    "input": "i",
+    "base": "sc:sd",
+    "failure": true
+  },
+  {
+    "input": "i",
+    "base": "sc:sd/sd",
+    "failure": true
+  },
+  {
+    "input": "i",
+    "base": "sc:/pa/pa",
+    "href": "sc:/pa/i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/pa/i",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "i",
+    "base": "sc://ho/pa",
+    "href": "sc://ho/i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "ho",
+    "hostname": "ho",
+    "port": "",
+    "pathname": "/i",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "i",
+    "base": "sc:///pa/pa",
+    "href": "sc:///pa/i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/pa/i",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "../i",
+    "base": "sc:sd",
+    "failure": true
+  },
+  {
+    "input": "../i",
+    "base": "sc:sd/sd",
+    "failure": true
+  },
+  {
+    "input": "../i",
+    "base": "sc:/pa/pa",
+    "href": "sc:/i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/i",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "../i",
+    "base": "sc://ho/pa",
+    "href": "sc://ho/i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "ho",
+    "hostname": "ho",
+    "port": "",
+    "pathname": "/i",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "../i",
+    "base": "sc:///pa/pa",
+    "href": "sc:///i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/i",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "/i",
+    "base": "sc:sd",
+    "failure": true
+  },
+  {
+    "input": "/i",
+    "base": "sc:sd/sd",
+    "failure": true
+  },
+  {
+    "input": "/i",
+    "base": "sc:/pa/pa",
+    "href": "sc:/i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/i",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "/i",
+    "base": "sc://ho/pa",
+    "href": "sc://ho/i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "ho",
+    "hostname": "ho",
+    "port": "",
+    "pathname": "/i",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "/i",
+    "base": "sc:///pa/pa",
+    "href": "sc:///i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/i",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "?i",
+    "base": "sc:sd",
+    "failure": true
+  },
+  {
+    "input": "?i",
+    "base": "sc:sd/sd",
+    "failure": true
+  },
+  {
+    "input": "?i",
+    "base": "sc:/pa/pa",
+    "href": "sc:/pa/pa?i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/pa/pa",
+    "search": "?i",
+    "hash": ""
+  },
+  {
+    "input": "?i",
+    "base": "sc://ho/pa",
+    "href": "sc://ho/pa?i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "ho",
+    "hostname": "ho",
+    "port": "",
+    "pathname": "/pa",
+    "search": "?i",
+    "hash": ""
+  },
+  {
+    "input": "?i",
+    "base": "sc:///pa/pa",
+    "href": "sc:///pa/pa?i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/pa/pa",
+    "search": "?i",
+    "hash": ""
+  },
+  {
+    "input": "#i",
+    "base": "sc:sd",
+    "href": "sc:sd#i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "sd",
+    "search": "",
+    "hash": "#i"
+  },
+  {
+    "input": "#i",
+    "base": "sc:sd/sd",
+    "href": "sc:sd/sd#i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "sd/sd",
+    "search": "",
+    "hash": "#i"
+  },
+  {
+    "input": "#i",
+    "base": "sc:/pa/pa",
+    "href": "sc:/pa/pa#i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/pa/pa",
+    "search": "",
+    "hash": "#i"
+  },
+  {
+    "input": "#i",
+    "base": "sc://ho/pa",
+    "href": "sc://ho/pa#i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "ho",
+    "hostname": "ho",
+    "port": "",
+    "pathname": "/pa",
+    "search": "",
+    "hash": "#i"
+  },
+  {
+    "input": "#i",
+    "base": "sc:///pa/pa",
+    "href": "sc:///pa/pa#i",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/pa/pa",
+    "search": "",
+    "hash": "#i"
+  },
+  "# make sure that relative URL logic works on known typically non-relative schemes too",
+  {
+    "input": "about:/../",
+    "base": "about:blank",
+    "href": "about:/",
+    "origin": "null",
+    "protocol": "about:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "data:/../",
+    "base": "about:blank",
+    "href": "data:/",
+    "origin": "null",
+    "protocol": "data:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "javascript:/../",
+    "base": "about:blank",
+    "href": "javascript:/",
+    "origin": "null",
+    "protocol": "javascript:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "mailto:/../",
+    "base": "about:blank",
+    "href": "mailto:/",
+    "origin": "null",
+    "protocol": "mailto:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  "# unknown schemes and their hosts",
+  {
+    "input": "sc://ñ.test/",
+    "base": "about:blank",
+    "href": "sc://%C3%B1.test/",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "%C3%B1.test",
+    "hostname": "%C3%B1.test",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "sc://\u001F!\"$&'()*+,-.;<=>^_`{|}~/",
+    "base": "about:blank",
+    "href": "sc://%1F!\"$&'()*+,-.;<=>^_`{|}~/",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "%1F!\"$&'()*+,-.;<=>^_`{|}~",
+    "hostname": "%1F!\"$&'()*+,-.;<=>^_`{|}~",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "sc://\u0000/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "sc:// /",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "sc://%/",
+    "base": "about:blank",
+    "href": "sc://%/",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "%",
+    "hostname": "%",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "sc://@/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "sc://te@s:t@/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "sc://:/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "sc://:12/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "sc://[/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "sc://\\/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "sc://]/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "x",
+    "base": "sc://ñ",
+    "href": "sc://%C3%B1/x",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "%C3%B1",
+    "hostname": "%C3%B1",
+    "port": "",
+    "pathname": "/x",
+    "search": "",
+    "hash": ""
+  },
+  "# unknown schemes and backslashes",
+  {
+    "input": "sc:\\../",
+    "base": "about:blank",
+    "href": "sc:\\../",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "\\../",
+    "search": "",
+    "hash": ""
+  },
+  "# unknown scheme with path looking like a password",
+  {
+    "input": "sc::a@example.net",
+    "base": "about:blank",
+    "href": "sc::a@example.net",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": ":a@example.net",
+    "search": "",
+    "hash": ""
+  },
+  "# unknown scheme with bogus percent-encoding",
+  {
+    "input": "wow:%NBD",
+    "base": "about:blank",
+    "href": "wow:%NBD",
+    "origin": "null",
+    "protocol": "wow:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "%NBD",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "wow:%1G",
+    "base": "about:blank",
+    "href": "wow:%1G",
+    "origin": "null",
+    "protocol": "wow:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "%1G",
+    "search": "",
+    "hash": ""
+  },
+  "# Hosts and percent-encoding",
+  {
+    "input": "ftp://example.com%80/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "ftp://example.com%A0/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "https://example.com%80/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "https://example.com%A0/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "ftp://%e2%98%83",
+    "base": "about:blank",
+    "href": "ftp://xn--n3h/",
+    "origin": "ftp://☃",
+    "protocol": "ftp:",
+    "username": "",
+    "password": "",
+    "host": "xn--n3h",
+    "hostname": "xn--n3h",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "https://%e2%98%83",
+    "base": "about:blank",
+    "href": "https://xn--n3h/",
+    "origin": "https://☃",
+    "protocol": "https:",
+    "username": "",
+    "password": "",
+    "host": "xn--n3h",
+    "hostname": "xn--n3h",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  "# tests from jsdom/whatwg-url designed for code coverage",
+  {
+    "input": "http://127.0.0.1:10100/relative_import.html",
+    "base": "about:blank",
+    "href": "http://127.0.0.1:10100/relative_import.html",
+    "origin": "http://127.0.0.1:10100",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "127.0.0.1:10100",
+    "hostname": "127.0.0.1",
+    "port": "10100",
+    "pathname": "/relative_import.html",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://facebook.com/?foo=%7B%22abc%22",
+    "base": "about:blank",
+    "href": "http://facebook.com/?foo=%7B%22abc%22",
+    "origin": "http://facebook.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "facebook.com",
+    "hostname": "facebook.com",
+    "port": "",
+    "pathname": "/",
+    "search": "?foo=%7B%22abc%22",
+    "hash": ""
+  },
+  {
+    "input": "https://localhost:3000/jqueryui@1.2.3",
+    "base": "about:blank",
+    "href": "https://localhost:3000/jqueryui@1.2.3",
+    "origin": "https://localhost:3000",
+    "protocol": "https:",
+    "username": "",
+    "password": "",
+    "host": "localhost:3000",
+    "hostname": "localhost",
+    "port": "3000",
+    "pathname": "/jqueryui@1.2.3",
+    "search": "",
+    "hash": ""
+  },
+  "# tab/LF/CR",
+  {
+    "input": "h\tt\nt\rp://h\to\ns\rt:9\t0\n0\r0/p\ta\nt\rh?q\tu\ne\rry#f\tr\na\rg",
+    "base": "about:blank",
+    "href": "http://host:9000/path?query#frag",
+    "origin": "http://host:9000",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "host:9000",
+    "hostname": "host",
+    "port": "9000",
+    "pathname": "/path",
+    "search": "?query",
+    "hash": "#frag"
+  },
+  "# Stringification of URL.searchParams",
+  {
+    "input": "?a=b&c=d",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/bar?a=b&c=d",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/bar",
+    "search": "?a=b&c=d",
+    "searchParams": "a=b&c=d",
+    "hash": ""
+  },
+  {
+    "input": "??a=b&c=d",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/bar??a=b&c=d",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/bar",
+    "search": "??a=b&c=d",
+    "searchParams": "%3Fa=b&c=d",
+    "hash": ""
+  },
+  "# Scheme only",
+  {
+    "input": "http:",
+    "base": "http://example.org/foo/bar",
+    "href": "http://example.org/foo/bar",
+    "origin": "http://example.org",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "example.org",
+    "hostname": "example.org",
+    "port": "",
+    "pathname": "/foo/bar",
+    "search": "",
+    "searchParams": "",
+    "hash": ""
+  },
+  {
+    "input": "http:",
+    "base": "https://example.org/foo/bar",
+    "failure": true
+  },
+  {
+    "input": "sc:",
+    "base": "https://example.org/foo/bar",
+    "href": "sc:",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "",
+    "search": "",
+    "searchParams": "",
+    "hash": ""
+  },
+  "# Percent encoding of fragments",
+  {
+    "input": "http://foo.bar/baz?qux#foo\bbar",
+    "base": "about:blank",
+    "href": "http://foo.bar/baz?qux#foo%08bar",
+    "origin": "http://foo.bar",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "foo.bar",
+    "hostname": "foo.bar",
+    "port": "",
+    "pathname": "/baz",
+    "search": "?qux",
+    "searchParams": "qux=",
+    "hash": "#foo%08bar"
+  },
+  "# IPv4 parsing (via https://github.com/nodejs/node/pull/10317)",
+  {
+    "input": "http://192.168.257",
+    "base": "http://other.com/",
+    "href": "http://192.168.1.1/",
+    "origin": "http://192.168.1.1",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "192.168.1.1",
+    "hostname": "192.168.1.1",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://192.168.257.com",
+    "base": "http://other.com/",
+    "href": "http://192.168.257.com/",
+    "origin": "http://192.168.257.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "192.168.257.com",
+    "hostname": "192.168.257.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://256",
+    "base": "http://other.com/",
+    "href": "http://0.0.1.0/",
+    "origin": "http://0.0.1.0",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "0.0.1.0",
+    "hostname": "0.0.1.0",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://256.com",
+    "base": "http://other.com/",
+    "href": "http://256.com/",
+    "origin": "http://256.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "256.com",
+    "hostname": "256.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://999999999",
+    "base": "http://other.com/",
+    "href": "http://59.154.201.255/",
+    "origin": "http://59.154.201.255",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "59.154.201.255",
+    "hostname": "59.154.201.255",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://999999999.com",
+    "base": "http://other.com/",
+    "href": "http://999999999.com/",
+    "origin": "http://999999999.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "999999999.com",
+    "hostname": "999999999.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://10000000000",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  {
+    "input": "http://10000000000.com",
+    "base": "http://other.com/",
+    "href": "http://10000000000.com/",
+    "origin": "http://10000000000.com",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "10000000000.com",
+    "hostname": "10000000000.com",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://4294967295",
+    "base": "http://other.com/",
+    "href": "http://255.255.255.255/",
+    "origin": "http://255.255.255.255",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "255.255.255.255",
+    "hostname": "255.255.255.255",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://4294967296",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  {
+    "input": "http://0xffffffff",
+    "base": "http://other.com/",
+    "href": "http://255.255.255.255/",
+    "origin": "http://255.255.255.255",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "255.255.255.255",
+    "hostname": "255.255.255.255",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://0xffffffff1",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  {
+    "input": "http://256.256.256.256",
+    "base": "http://other.com/",
+    "failure": true
+  },
+  {
+    "input": "http://256.256.256.256.256",
+    "base": "http://other.com/",
+    "href": "http://256.256.256.256.256/",
+    "origin": "http://256.256.256.256.256",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "256.256.256.256.256",
+    "hostname": "256.256.256.256.256",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "https://0x.0x.0",
+    "base": "about:blank",
+    "href": "https://0.0.0.0/",
+    "origin": "https://0.0.0.0",
+    "protocol": "https:",
+    "username": "",
+    "password": "",
+    "host": "0.0.0.0",
+    "hostname": "0.0.0.0",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  "# file URLs containing percent-encoded Windows drive letters (shouldn't work)",
+  {
+    "input": "file:///C%3A/",
+    "base": "about:blank",
+    "href": "file:///C%3A/",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C%3A/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file:///C%7C/",
+    "base": "about:blank",
+    "href": "file:///C%7C/",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C%7C/",
+    "search": "",
+    "hash": ""
+  },
+  "# file URLs relative to other file URLs (via https://github.com/jsdom/whatwg-url/pull/60)",
+  {
+    "input": "pix/submit.gif",
+    "base": "file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html",
+    "href": "file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/pix/submit.gif",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/pix/submit.gif",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "..",
+    "base": "file:///C:/",
+    "href": "file:///C:/",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C:/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "..",
+    "base": "file:///",
+    "href": "file:///",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  "# More file URL tests by zcorpan and annevk",
+  {
+    "input": "/",
+    "base": "file:///C:/a/b",
+    "href": "file:///C:/",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C:/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "//d:",
+    "base": "file:///C:/a/b",
+    "href": "file:///d:",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/d:",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "//d:/..",
+    "base": "file:///C:/a/b",
+    "href": "file:///d:/",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/d:/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "..",
+    "base": "file:///ab:/",
+    "href": "file:///",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "..",
+    "base": "file:///1:/",
+    "href": "file:///",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "",
+    "base": "file:///test?test#test",
+    "href": "file:///test?test",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/test",
+    "search": "?test",
+    "hash": ""
+  },
+  {
+    "input": "file:",
+    "base": "file:///test?test#test",
+    "href": "file:///test?test",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/test",
+    "search": "?test",
+    "hash": ""
+  },
+  {
+    "input": "?x",
+    "base": "file:///test?test#test",
+    "href": "file:///test?x",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/test",
+    "search": "?x",
+    "hash": ""
+  },
+  {
+    "input": "file:?x",
+    "base": "file:///test?test#test",
+    "href": "file:///test?x",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/test",
+    "search": "?x",
+    "hash": ""
+  },
+  {
+    "input": "#x",
+    "base": "file:///test?test#test",
+    "href": "file:///test?test#x",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/test",
+    "search": "?test",
+    "hash": "#x"
+  },
+  {
+    "input": "file:#x",
+    "base": "file:///test?test#test",
+    "href": "file:///test?test#x",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/test",
+    "search": "?test",
+    "hash": "#x"
+  },
+  "# File URLs and many (back)slashes",
+  {
+    "input": "file:\\\\//",
+    "base": "about:blank",
+    "href": "file:///",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file:\\\\\\\\",
+    "base": "about:blank",
+    "href": "file:///",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file:\\\\\\\\?fox",
+    "base": "about:blank",
+    "href": "file:///?fox",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "?fox",
+    "hash": ""
+  },
+  {
+    "input": "file:\\\\\\\\#guppy",
+    "base": "about:blank",
+    "href": "file:///#guppy",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": "#guppy"
+  },
+  {
+    "input": "file://spider///",
+    "base": "about:blank",
+    "href": "file://spider/",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "spider",
+    "hostname": "spider",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file:\\\\localhost//",
+    "base": "about:blank",
+    "href": "file:///",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file:///localhost//cat",
+    "base": "about:blank",
+    "href": "file:///localhost//cat",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/localhost//cat",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file://\\/localhost//cat",
+    "base": "about:blank",
+    "href": "file:///localhost//cat",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/localhost//cat",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file://localhost//a//../..//",
+    "base": "about:blank",
+    "href": "file:///",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "/////mouse",
+    "base": "file:///elephant",
+    "href": "file:///mouse",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/mouse",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "\\//pig",
+    "base": "file://lion/",
+    "href": "file:///pig",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/pig",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "\\/localhost//pig",
+    "base": "file://lion/",
+    "href": "file:///pig",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/pig",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "//localhost//pig",
+    "base": "file://lion/",
+    "href": "file:///pig",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/pig",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "/..//localhost//pig",
+    "base": "file://lion/",
+    "href": "file://lion/localhost//pig",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "lion",
+    "hostname": "lion",
+    "port": "",
+    "pathname": "/localhost//pig",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file://",
+    "base": "file://ape/",
+    "href": "file:///",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  "# File URLs with non-empty hosts",
+  {
+    "input": "/rooibos",
+    "base": "file://tea/",
+    "href": "file://tea/rooibos",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "tea",
+    "hostname": "tea",
+    "port": "",
+    "pathname": "/rooibos",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "/?chai",
+    "base": "file://tea/",
+    "href": "file://tea/?chai",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "tea",
+    "hostname": "tea",
+    "port": "",
+    "pathname": "/",
+    "search": "?chai",
+    "hash": ""
+  },
+  "# Windows drive letter handling with the 'file:' base URL",
+  {
+    "input": "C|",
+    "base": "file://host/dir/file",
+    "href": "file:///C:",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C:",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "C|#",
+    "base": "file://host/dir/file",
+    "href": "file:///C:#",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C:",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "C|?",
+    "base": "file://host/dir/file",
+    "href": "file:///C:?",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C:",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "C|/",
+    "base": "file://host/dir/file",
+    "href": "file:///C:/",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C:/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "C|\\",
+    "base": "file://host/dir/file",
+    "href": "file:///C:/",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C:/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "C",
+    "base": "file://host/dir/file",
+    "href": "file://host/dir/C",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "host",
+    "hostname": "host",
+    "port": "",
+    "pathname": "/dir/C",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "C|a",
+    "base": "file://host/dir/file",
+    "href": "file://host/dir/C|a",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "host",
+    "hostname": "host",
+    "port": "",
+    "pathname": "/dir/C|a",
+    "search": "",
+    "hash": ""
+  },
+  "# Windows drive letter quirk with not empty host",
+  {
+    "input": "file://example.net/C:/",
+    "base": "about:blank",
+    "href": "file:///C:/",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C:/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file://1.2.3.4/C:/",
+    "base": "about:blank",
+    "href": "file:///C:/",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C:/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file://[1::8]/C:/",
+    "base": "about:blank",
+    "href": "file:///C:/",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C:/",
+    "search": "",
+    "hash": ""
+  },
+  "# Windows drive letter quirk (no host)",
+  {
+    "input": "file:/C|/",
+    "base": "about:blank",
+    "href": "file:///C:/",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C:/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file://C|/",
+    "base": "about:blank",
+    "href": "file:///C:/",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/C:/",
+    "search": "",
+    "hash": ""
+  },
+  "# file URLs without base URL by Rimas Misevičius",
+  {
+    "input": "file:",
+    "base": "about:blank",
+    "href": "file:///",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "file:?q=v",
+    "base": "about:blank",
+    "href": "file:///?q=v",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "?q=v",
+    "hash": ""
+  },
+  {
+    "input": "file:#frag",
+    "base": "about:blank",
+    "href": "file:///#frag",
+    "protocol": "file:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": "#frag"
+  },
+  "# IPv6 tests",
+  {
+    "input": "http://[1:0::]",
+    "base": "http://example.net/",
+    "href": "http://[1::]/",
+    "origin": "http://[1::]",
+    "protocol": "http:",
+    "username": "",
+    "password": "",
+    "host": "[1::]",
+    "hostname": "[1::]",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "http://[0:1:2:3:4:5:6:7:8]",
+    "base": "http://example.net/",
+    "failure": true
+  },
+  {
+    "input": "https://[0::0::0]",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "https://[0:.0]",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "https://[0:0:]",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "https://[0:1:2:3:4:5:6:7.0.0.0.1]",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "https://[0:1.00.0.0.0]",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "https://[0:1.290.0.0.0]",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "https://[0:1.23.23]",
+    "base": "about:blank",
+    "failure": true
+  },
+  "# Empty host",
+  {
+    "input": "http://?",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "http://#",
+    "base": "about:blank",
+    "failure": true
+  },
+  "# Non-special-URL path tests",
+  {
+    "input": "sc://ñ",
+    "base": "about:blank",
+    "href": "sc://%C3%B1",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "%C3%B1",
+    "hostname": "%C3%B1",
+    "port": "",
+    "pathname": "",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "sc://ñ?x",
+    "base": "about:blank",
+    "href": "sc://%C3%B1?x",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "%C3%B1",
+    "hostname": "%C3%B1",
+    "port": "",
+    "pathname": "",
+    "search": "?x",
+    "hash": ""
+  },
+  {
+    "input": "sc://ñ#x",
+    "base": "about:blank",
+    "href": "sc://%C3%B1#x",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "%C3%B1",
+    "hostname": "%C3%B1",
+    "port": "",
+    "pathname": "",
+    "search": "",
+    "hash": "#x"
+  },
+  {
+    "input": "#x",
+    "base": "sc://ñ",
+    "href": "sc://%C3%B1#x",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "%C3%B1",
+    "hostname": "%C3%B1",
+    "port": "",
+    "pathname": "",
+    "search": "",
+    "hash": "#x"
+  },
+  {
+    "input": "?x",
+    "base": "sc://ñ",
+    "href": "sc://%C3%B1?x",
+    "origin": "null",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "%C3%B1",
+    "hostname": "%C3%B1",
+    "port": "",
+    "pathname": "",
+    "search": "?x",
+    "hash": ""
+  },
+  {
+    "input": "sc://?",
+    "base": "about:blank",
+    "href": "sc://?",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "sc://#",
+    "base": "about:blank",
+    "href": "sc://#",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "///",
+    "base": "sc://x/",
+    "href": "sc:///",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "////",
+    "base": "sc://x/",
+    "href": "sc:////",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "//",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "////x/",
+    "base": "sc://x/",
+    "href": "sc:////x/",
+    "protocol": "sc:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "//x/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "tftp://foobar.com/someconfig;mode=netascii",
+    "base": "about:blank",
+    "href": "tftp://foobar.com/someconfig;mode=netascii",
+    "origin": "null",
+    "protocol": "tftp:",
+    "username": "",
+    "password": "",
+    "host": "foobar.com",
+    "hostname": "foobar.com",
+    "port": "",
+    "pathname": "/someconfig;mode=netascii",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "telnet://user:pass@foobar.com:23/",
+    "base": "about:blank",
+    "href": "telnet://user:pass@foobar.com:23/",
+    "origin": "null",
+    "protocol": "telnet:",
+    "username": "user",
+    "password": "pass",
+    "host": "foobar.com:23",
+    "hostname": "foobar.com",
+    "port": "23",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "ut2004://10.10.10.10:7777/Index.ut2",
+    "base": "about:blank",
+    "href": "ut2004://10.10.10.10:7777/Index.ut2",
+    "origin": "null",
+    "protocol": "ut2004:",
+    "username": "",
+    "password": "",
+    "host": "10.10.10.10:7777",
+    "hostname": "10.10.10.10",
+    "port": "7777",
+    "pathname": "/Index.ut2",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "redis://foo:bar@somehost:6379/0?baz=bam&qux=baz",
+    "base": "about:blank",
+    "href": "redis://foo:bar@somehost:6379/0?baz=bam&qux=baz",
+    "origin": "null",
+    "protocol": "redis:",
+    "username": "foo",
+    "password": "bar",
+    "host": "somehost:6379",
+    "hostname": "somehost",
+    "port": "6379",
+    "pathname": "/0",
+    "search": "?baz=bam&qux=baz",
+    "hash": ""
+  },
+  {
+    "input": "rsync://foo@host:911/sup",
+    "base": "about:blank",
+    "href": "rsync://foo@host:911/sup",
+    "origin": "null",
+    "protocol": "rsync:",
+    "username": "foo",
+    "password": "",
+    "host": "host:911",
+    "hostname": "host",
+    "port": "911",
+    "pathname": "/sup",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "git://github.com/foo/bar.git",
+    "base": "about:blank",
+    "href": "git://github.com/foo/bar.git",
+    "origin": "null",
+    "protocol": "git:",
+    "username": "",
+    "password": "",
+    "host": "github.com",
+    "hostname": "github.com",
+    "port": "",
+    "pathname": "/foo/bar.git",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "irc://myserver.com:6999/channel?passwd",
+    "base": "about:blank",
+    "href": "irc://myserver.com:6999/channel?passwd",
+    "origin": "null",
+    "protocol": "irc:",
+    "username": "",
+    "password": "",
+    "host": "myserver.com:6999",
+    "hostname": "myserver.com",
+    "port": "6999",
+    "pathname": "/channel",
+    "search": "?passwd",
+    "hash": ""
+  },
+  {
+    "input": "dns://fw.example.org:9999/foo.bar.org?type=TXT",
+    "base": "about:blank",
+    "href": "dns://fw.example.org:9999/foo.bar.org?type=TXT",
+    "origin": "null",
+    "protocol": "dns:",
+    "username": "",
+    "password": "",
+    "host": "fw.example.org:9999",
+    "hostname": "fw.example.org",
+    "port": "9999",
+    "pathname": "/foo.bar.org",
+    "search": "?type=TXT",
+    "hash": ""
+  },
+  {
+    "input": "ldap://localhost:389/ou=People,o=JNDITutorial",
+    "base": "about:blank",
+    "href": "ldap://localhost:389/ou=People,o=JNDITutorial",
+    "origin": "null",
+    "protocol": "ldap:",
+    "username": "",
+    "password": "",
+    "host": "localhost:389",
+    "hostname": "localhost",
+    "port": "389",
+    "pathname": "/ou=People,o=JNDITutorial",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "git+https://github.com/foo/bar",
+    "base": "about:blank",
+    "href": "git+https://github.com/foo/bar",
+    "origin": "null",
+    "protocol": "git+https:",
+    "username": "",
+    "password": "",
+    "host": "github.com",
+    "hostname": "github.com",
+    "port": "",
+    "pathname": "/foo/bar",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "urn:ietf:rfc:2648",
+    "base": "about:blank",
+    "href": "urn:ietf:rfc:2648",
+    "origin": "null",
+    "protocol": "urn:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "ietf:rfc:2648",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "tag:joe@example.org,2001:foo/bar",
+    "base": "about:blank",
+    "href": "tag:joe@example.org,2001:foo/bar",
+    "origin": "null",
+    "protocol": "tag:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "joe@example.org,2001:foo/bar",
+    "search": "",
+    "hash": ""
+  },
+  "# percent encoded hosts in non-special-URLs",
+  {
+    "input": "non-special://%E2%80%A0/",
+    "base": "about:blank",
+    "href": "non-special://%E2%80%A0/",
+    "protocol": "non-special:",
+    "username": "",
+    "password": "",
+    "host": "%E2%80%A0",
+    "hostname": "%E2%80%A0",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "non-special://H%4fSt/path",
+    "base": "about:blank",
+    "href": "non-special://H%4fSt/path",
+    "protocol": "non-special:",
+    "username": "",
+    "password": "",
+    "host": "H%4fSt",
+    "hostname": "H%4fSt",
+    "port": "",
+    "pathname": "/path",
+    "search": "",
+    "hash": ""
+  },
+  "# IPv6 in non-special-URLs",
+  {
+    "input": "non-special://[1:2:0:0:5:0:0:0]/",
+    "base": "about:blank",
+    "href": "non-special://[1:2:0:0:5::]/",
+    "protocol": "non-special:",
+    "username": "",
+    "password": "",
+    "host": "[1:2:0:0:5::]",
+    "hostname": "[1:2:0:0:5::]",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "non-special://[1:2:0:0:0:0:0:3]/",
+    "base": "about:blank",
+    "href": "non-special://[1:2::3]/",
+    "protocol": "non-special:",
+    "username": "",
+    "password": "",
+    "host": "[1:2::3]",
+    "hostname": "[1:2::3]",
+    "port": "",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "non-special://[1:2::3]:80/",
+    "base": "about:blank",
+    "href": "non-special://[1:2::3]:80/",
+    "protocol": "non-special:",
+    "username": "",
+    "password": "",
+    "host": "[1:2::3]:80",
+    "hostname": "[1:2::3]",
+    "port": "80",
+    "pathname": "/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "non-special://[:80/",
+    "base": "about:blank",
+    "failure": true
+  },
+  {
+    "input": "blob:https://example.com:443/",
+    "base": "about:blank",
+    "href": "blob:https://example.com:443/",
+    "protocol": "blob:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "https://example.com:443/",
+    "search": "",
+    "hash": ""
+  },
+  {
+    "input": "blob:d3958f5c-0777-0845-9dcf-2cb28783acaf",
+    "base": "about:blank",
+    "href": "blob:d3958f5c-0777-0845-9dcf-2cb28783acaf",
+    "protocol": "blob:",
+    "username": "",
+    "password": "",
+    "host": "",
+    "hostname": "",
+    "port": "",
+    "pathname": "d3958f5c-0777-0845-9dcf-2cb28783acaf",
+    "search": "",
+    "hash": ""
+  }
+]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/vibration/api-is-present.html b/third_party/WebKit/LayoutTests/external/wpt/vibration/api-is-present.html
new file mode 100644
index 0000000..f5c976df
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/vibration/api-is-present.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset='utf-8'/>
+    <title>Vibration API: test that the vibrate() method is present (with or without vendor prefix)</title>
+    <link rel='author' title='Robin Berjon' href='mailto:robin@berjon.com'/>
+    <link rel='help' href='http://www.w3.org/TR/vibration/#methods'/>
+    <meta name='flags' content='dom'/>
+    <meta name='assert' content='Check that the vibrate() method is present.'/>
+  </head>
+  <body>
+    <h1>Description</h1>
+    <p>
+      This test checks for the presence of the <code>vibrate()</code> method, taking
+      vendor prefixes into account.
+    </p>
+    <div id='log'></div>
+    <script src='/resources/testharness.js'></script>
+    <script src='/resources/testharnessreport.js'></script>
+    <script src='/common/vendor-prefix.js' data-prefixed-objects='[{"ancestors":["navigator"], "name":"vibrate"}]'></script>
+    <script>
+      test(function () {
+          assert_true(undefined !== navigator.vibrate, "navigator.vibrate exists");
+      }, "vibrate() is present on navigator");
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/vibration/cancel-when-hidden-manual.html b/third_party/WebKit/LayoutTests/external/wpt/vibration/cancel-when-hidden-manual.html
new file mode 100644
index 0000000..5699707
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/vibration/cancel-when-hidden-manual.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<meta charset='utf-8'>
+<title>Vibration API: cancel ongoing vibrate() when hidden by switching tab/window</title>
+<link rel='author' title='Intel' href='http://www.intel.com'>
+<link rel='help' href='http://dev.w3.org/2009/dap/vibration/#vibration-interface'>
+<meta name='flags' content='interact'>
+<meta name='assert' content='If the visibilitychange event is dispatched at the Document in a browsing context, cancel the pre-existing instance of the processing vibration patterns algorithm'>
+<style>
+  button {
+    height: 100px;
+    width:  100px;
+  }
+</style>
+
+<h1>Description</h1>
+<p>
+  After hitting the button below, your device must vibrate for a short period of time (roughly one
+  second). If it vibrates for a longer time (roughly five seconds, it should feel somewhat long) then
+  the test has failed.
+</p>
+<button id='vib'>Vibrate!</button>
+<script src='/common/vendor-prefix.js' data-prefixed-objects='[{"ancestors":["navigator"], "name":"vibrate"}]'></script>
+<script>
+  var win;
+
+  if (undefined !== navigator.vibrate) {
+    document.getElementById('vib').onclick = function () {
+      navigator.vibrate(5000);
+      setTimeout(function () {
+        win = window.open('about:blank', '_blank');
+        setTimeout(function() {
+          win.close();
+        }, 100);
+      }, 1000);
+    };
+  }
+</script>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/vibration/cancel-with-0-manual.html b/third_party/WebKit/LayoutTests/external/wpt/vibration/cancel-with-0-manual.html
new file mode 100644
index 0000000..6890d57
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/vibration/cancel-with-0-manual.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset='utf-8'/>
+    <title>Vibration API: cancel ongoing vibrate() with 0</title>
+    <link rel='author' title='Robin Berjon' href='mailto:robin@berjon.com'/>
+    <link rel='help' href='http://www.w3.org/TR/vibration/#methods'/>
+    <meta name='flags' content='dom, interact'/>
+    <meta name='assert' content='If pattern is 0, cancel the pre-existing instance of the processing vibration patterns algorithm'/>
+  </head>
+  <body>
+    <h1>Description</h1>
+    <p>
+      After hitting the button below, your device must vibrate for a short period of time (roughly one
+      second). If it vibrates for a longer time (roughly five seconds, it should feel somewhat long) then
+      the test has failed.
+    </p>
+    <button id='vib'>Vibrate!</button>
+    <script src='/common/vendor-prefix.js' data-prefixed-objects='[{"ancestors":["navigator"], "name":"vibrate"}]'></script>
+    <script>
+      if (undefined !== navigator.vibrate) {
+          document.getElementById("vib").onclick = function () {
+              navigator.vibrate(5000);
+              setTimeout(function () {
+                  navigator.vibrate(0);
+              }, 1000);
+          };
+      }
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/vibration/cancel-with-array-0-manual.html b/third_party/WebKit/LayoutTests/external/wpt/vibration/cancel-with-array-0-manual.html
new file mode 100644
index 0000000..60689cc
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/vibration/cancel-with-array-0-manual.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<meta charset='utf-8'>
+<title>Vibration API: cancel ongoing vibrate() with [0]</title>
+<link rel='author' title='Intel' href='http://www.intel.com'>
+<link rel='help' href='http://dev.w3.org/2009/dap/vibration/#vibration-interface'>
+<meta name='flags' content='interact'>
+<meta name='assert' content='If pattern contains a single entry with a value of 0, cancel the pre-existing instance of the processing vibration patterns algorithm'>
+<style>
+  button {
+    height: 100px;
+    width:  100px;
+  }
+</style>
+
+<h1>Description</h1>
+<p>
+  After hitting the button below, your device must vibrate for a short period of time (roughly one
+  second). If it vibrates for a longer time (roughly five seconds, it should feel somewhat long) then
+  the test has failed.
+</p>
+<button id='vib'>Vibrate!</button>
+<script src='/common/vendor-prefix.js' data-prefixed-objects='[{"ancestors":["navigator"], "name":"vibrate"}]'></script>
+<script>
+  if (undefined !== navigator.vibrate) {
+    document.getElementById('vib').onclick = function () {
+      navigator.vibrate(5000);
+      setTimeout(function () {
+        navigator.vibrate([0]);
+      }, 1000);
+    };
+  }
+</script>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/vibration/cancel-with-empty-array-manual.html b/third_party/WebKit/LayoutTests/external/wpt/vibration/cancel-with-empty-array-manual.html
new file mode 100644
index 0000000..9d4be2b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/vibration/cancel-with-empty-array-manual.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset='utf-8'/>
+    <title>Vibration API: cancel ongoing vibrate() with []</title>
+    <link rel='author' title='Robin Berjon' href='mailto:robin@berjon.com'/>
+    <link rel='help' href='http://www.w3.org/TR/vibration/#methods'/>
+    <meta name='flags' content='dom, interact'/>
+    <meta name='assert' content='If pattern is an empty list, cancel the pre-existing instance of the processing vibration patterns algorithm'/>
+  </head>
+  <body>
+    <h1>Description</h1>
+    <p>
+      After hitting the button below, your device must vibrate for a short period of time (roughly one
+      second). If it vibrates for a longer time (roughly five seconds, it should feel somewhat long) then
+      the test has failed.
+    </p>
+    <button id='vib'>Vibrate!</button>
+    <script src='/common/vendor-prefix.js' data-prefixed-objects='[{"ancestors":["navigator"], "name":"vibrate"}]'></script>
+    <script>
+      if (undefined !== navigator.vibrate) {
+          document.getElementById("vib").onclick = function () {
+              navigator.vibrate(5000);
+              setTimeout(function () {
+                  navigator.vibrate([]);
+              }, 1000);
+          };
+      }
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/vibration/cancel-with-new-manual.html b/third_party/WebKit/LayoutTests/external/wpt/vibration/cancel-with-new-manual.html
new file mode 100644
index 0000000..1cd9daf1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/vibration/cancel-with-new-manual.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset='utf-8'/>
+    <title>Vibration API: cancel ongoing vibrate() with a new call to vibrate</title>
+    <link rel='author' title='Robin Berjon' href='mailto:robin@berjon.com'/>
+    <link rel='help' href='http://www.w3.org/TR/vibration/#methods'/>
+    <meta name='flags' content='dom, interact'/>
+    <meta name='assert' content='Cancel the pre-existing instance of the processing vibration patterns algorithm, if any.'/>
+  </head>
+  <body>
+    <h1>Description</h1>
+    <p>
+      After hitting the button below, your device must vibrate continuously for a short period of time (roughly one
+      second), then vibrate a series of short bursts. If the initial continuously vibration is longer (roughly five
+      seconds, it should feel somewhat long) or if there is no series of short vibration bursts then the test has
+      failed.
+    </p>
+    <button id='vib'>Vibrate!</button>
+    <script src='/common/vendor-prefix.js' data-prefixed-objects='[{"ancestors":["navigator"], "name":"vibrate"}]'></script>
+    <script>
+      if (undefined !== navigator.vibrate) {
+          document.getElementById("vib").onclick = function () {
+              navigator.vibrate(5000);
+              setTimeout(function () {
+                  navigator.vibrate([200, 200, 200, 200, 200, 200, 200, 200, 200]);
+              }, 1000);
+          };
+      }
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/vibration/idl.html b/third_party/WebKit/LayoutTests/external/wpt/vibration/idl.html
new file mode 100644
index 0000000..167090cd
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/vibration/idl.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>IDL harness tests for Vibration API</title>
+<body>
+    <h1>Description</h1>
+    <p>
+      This test validates the IDL defined by the Vibration API.
+    </p>
+    <p>
+      This test uses <a href="/resources/idlharness.js">idlharness.js</a>
+    </p>
+<div id="log"></div>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/resources/WebIDLParser.js></script>
+<script src=/resources/idlharness.js></script>
+<script>
+var idl_array = new IdlArray();
+idl_array.add_untested_idls("interface Navigator {};");
+idl_array.add_idls("partial interface Navigator { boolean vibrate ((unsigned long or sequence<unsigned long>) pattern);};");
+idl_array.add_objects({Navigator: ['navigator']});
+idl_array.test();
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/vibration/invalid-values.html b/third_party/WebKit/LayoutTests/external/wpt/vibration/invalid-values.html
new file mode 100644
index 0000000..a544ac23
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/vibration/invalid-values.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<meta charset='utf-8'>
+<title>Vibration API: vibrate(invalid)</title>
+<link rel='author' title='Intel' href='http://www.intel.com'>
+<link rel='help' href='http://dev.w3.org/2009/dap/vibration/#vibration-interface'>
+
+<h1>Description</h1>
+<p>
+  This test checks the <code>vibrate()</code> method with invalid parameter,
+  taking vendor prefixes into account.
+</p>
+<div id='log'></div>
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src='../support/vendor-prefix.js' data-prefixed-objects='[{"ancestors":["navigator"], "name":"vibrate"}]'></script>
+<script>
+  test(function() {
+    assert_throws(new TypeError(), function() {
+      navigator.vibrate();
+    }, 'Argument is required, so was expecting a TypeError.');
+  }, 'Missing pattern argument');
+
+  test(function() {
+    try {
+      navigator.vibrate(undefined);
+    } catch(e) {
+      assert_unreached('error message: ' + e.message);
+    }
+  }, 'pattern of undefined resolves to []');
+
+  test(function() {
+    try {
+      navigator.vibrate(null);
+    } catch(e) {
+      assert_unreached('error message: ' + e.message);
+    }
+  }, 'pattern of null resolves to []');
+
+  test(function() {
+    try {
+      navigator.vibrate('one');
+    } catch(e) {
+      assert_unreached('error message: ' + e.message);
+    }
+  }, 'pattern of empty string resolves to [""]');
+
+  test(function() {
+    try {
+      navigator.vibrate('one');
+    } catch(e) {
+      assert_unreached('error message: ' + e.message);
+    }
+  }, 'pattern of string resolves to ["one"]');
+
+  test(function() {
+    try {
+      navigator.vibrate(new String('one'));
+    } catch(e) {
+      assert_unreached('error message: ' + e.message);
+    }
+  }, 'pattern of String instance resolves to ["one"]');
+
+  test(function() {
+    try {
+      navigator.vibrate(NaN);
+    } catch(e) {
+      assert_unreached('error message: ' + e.message);
+    }
+  }, 'pattern of NaN resolves to [NaN]');
+
+  test(function() {
+    try {
+      navigator.vibrate({});
+    } catch(e) {
+      assert_unreached('error message: ' + e.message);
+    }
+  }, 'pattern of {} resolves to [{}]');
+</script>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/vibration/pattern-array-extra-manual.html b/third_party/WebKit/LayoutTests/external/wpt/vibration/pattern-array-extra-manual.html
new file mode 100644
index 0000000..3f5ccf3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/vibration/pattern-array-extra-manual.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset='utf-8'/>
+    <title>Vibration API: test a pattern array parameter to vibrate() with an extra (even) item</title>
+    <link rel='author' title='Robin Berjon' href='mailto:robin@berjon.com'/>
+    <link rel='help' href='http://www.w3.org/TR/vibration/#methods'/>
+    <meta name='flags' content='dom, interact'/>
+    <meta name='assert' content='If the length of pattern is even, then remove the last entry in pattern.'/>
+  </head>
+  <body>
+    <h1>Description</h1>
+    <p>
+      After hitting the button below, your device must vibrate three times for one second, separated
+      by one second intervals.
+    </p>
+    <button id='vib'>Vibrate!</button>
+    <script src='/common/vendor-prefix.js' data-prefixed-objects='[{"ancestors":["navigator"], "name":"vibrate"}]'></script>
+    <script>
+      if (undefined !== navigator.vibrate) {
+          document.getElementById("vib").onclick = function () {
+              navigator.vibrate([1000, 1000, 1000, 1000, 1000, 1000]);
+          };
+      }
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/vibration/pattern-array-manual.html b/third_party/WebKit/LayoutTests/external/wpt/vibration/pattern-array-manual.html
new file mode 100644
index 0000000..43674bf8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/vibration/pattern-array-manual.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset='utf-8'/>
+    <title>Vibration API: test a pattern array parameter to vibrate()</title>
+    <link rel='author' title='Robin Berjon' href='mailto:robin@berjon.com'/>
+    <link rel='help' href='http://www.w3.org/TR/vibration/#methods'/>
+    <meta name='flags' content='dom, interact'/>
+  </head>
+  <body>
+    <h1>Description</h1>
+    <p>
+      After hitting the button below, your device must vibrate three times for one second, separated
+      by one second intervals.
+    </p>
+    <button id='vib'>Vibrate!</button>
+    <script src='/common/vendor-prefix.js' data-prefixed-objects='[{"ancestors":["navigator"], "name":"vibrate"}]'></script>
+    <script>
+      if (undefined !== navigator.vibrate) {
+          document.getElementById("vib").onclick = function () {
+              navigator.vibrate([1000, 1000, 1000, 1000, 1000]);
+          };
+      }
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/vibration/pattern-array-with-0-manual.html b/third_party/WebKit/LayoutTests/external/wpt/vibration/pattern-array-with-0-manual.html
new file mode 100644
index 0000000..dff2f1ed
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/vibration/pattern-array-with-0-manual.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<meta charset='utf-8'>
+<title>Vibration API: test a pattern array with 0ms vibration and still to vibrate()</title>
+<link rel='author' title='Intel' href='http://www.intel.com'>
+<link rel='help' href='http://dev.w3.org/2009/dap/vibration/#vibration-interface'>
+<meta name='flags' content='interact'>
+<style>
+  button {
+    height: 100px;
+    width:  100px;
+  }
+</style>
+
+<h1>Description</h1>
+<p>
+   After hitting the button below, your device must vibrate continuously for about two seconds, once.
+</p>
+<button id='vib'>Vibrate!</button>
+<div id='log'></div>
+<script src='/common/vendor-prefix.js' data-prefixed-objects='[{"ancestors":["navigator"], "name":"vibrate"}]'></script>
+<script>
+  document.getElementById("vib").onclick = function () {
+    navigator.vibrate([0, 0, 2000]);
+  };
+</script>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/vibration/silent-ignore-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/vibration/silent-ignore-expected.txt
new file mode 100644
index 0000000..cf8e48f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/vibration/silent-ignore-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Calling vibrate returns true assert_true: vibrate() returns true when vibration is not supported expected true got false
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/vibration/silent-ignore.html b/third_party/WebKit/LayoutTests/external/wpt/vibration/silent-ignore.html
new file mode 100644
index 0000000..c7447df
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/vibration/silent-ignore.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset='utf-8'/>
+    <title>Vibration API: test that calls to vibrate() are silently ignored when the device cannot vibrate</title>
+    <link rel='author' title='Robin Berjon' href='mailto:robin@berjon.com'/>
+    <link rel='help' href='http://www.w3.org/TR/vibration/#methods'/>
+    <meta name='flags' content='dom, no-vibrator'/>
+    <meta name='assert' content='If the device does not provide a vibration mechanism, or it is disabled, the user agent must silently ignore any invocations of the vibrate() method.'/>
+  </head>
+  <body>
+    <h1>Description</h1>
+    <p>
+      <strong>This test is only useful on devices that do not have vibration capability</strong>.
+      If your device supports vibration, then <strong>skip</strong> this test. An implementation
+      supporting this API but running on a device that cannot vibrate must silently ignore the
+      call (we test that it doesn't throw).
+    </p>
+    <div id='log'></div>
+    <script src='/resources/testharness.js'></script>
+    <script src='/resources/testharnessreport.js'></script>
+    <script src='/common/vendor-prefix.js' data-prefixed-objects='[{"ancestors":["navigator"], "name":"vibrate"}]'></script>
+    <script>
+      if (undefined !== navigator.vibrate) {
+          test(function () {
+              assert_true(navigator.vibrate(1000), "vibrate() returns true when vibration is not supported");
+          }, "Calling vibrate returns true");
+      }
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/vibration/simple-array-manual.html b/third_party/WebKit/LayoutTests/external/wpt/vibration/simple-array-manual.html
new file mode 100644
index 0000000..4a85bd6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/vibration/simple-array-manual.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset='utf-8'/>
+    <title>Vibration API: test a simple array parameter to vibrate()</title>
+    <link rel='author' title='Robin Berjon' href='mailto:robin@berjon.com'/>
+    <link rel='help' href='http://www.w3.org/TR/vibration/#methods'/>
+  </head>
+  <body>
+    <h1>Description</h1>
+    <p>
+      After hitting the button below, your device must vibrate continuously for about two seconds, once.
+    </p>
+    <button id='vib'>Vibrate!</button>
+    <div id='log'></div>
+    <script src='/common/vendor-prefix.js' data-prefixed-objects='[{"ancestors":["navigator"], "name":"vibrate"}]'></script>
+    <script>
+      document.getElementById("vib").onclick = function () {
+        navigator.vibrate([2000]);
+      };
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/vibration/simple-scalar-manual.html b/third_party/WebKit/LayoutTests/external/wpt/vibration/simple-scalar-manual.html
new file mode 100644
index 0000000..0c7637bb
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/vibration/simple-scalar-manual.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset='utf-8'/>
+    <title>Vibration API: test a simple scalar parameter to vibrate()</title>
+    <link rel='author' title='Robin Berjon' href='mailto:robin@berjon.com'/>
+    <link rel='help' href='http://www.w3.org/TR/vibration/#methods'/>
+    <meta name='flags' content='dom, interact'/>
+  </head>
+  <body>
+    <h1>Description</h1>
+    <p>
+      After hitting the button below, your device must vibrate continuously for about two seconds, once.
+    </p>
+    <button id='vib'>Vibrate!</button>
+    <script src='/common/vendor-prefix.js' data-prefixed-objects='[{"ancestors":["navigator"], "name":"vibrate"}]'></script>
+    <script>
+      if (undefined !== navigator.vibrate) {
+          document.getElementById("vib").onclick = function () {
+              navigator.vibrate(2000);
+          };
+      }
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/web-animations/animation-model/animation-types/property-list.js b/third_party/WebKit/LayoutTests/external/wpt/web-animations/animation-model/animation-types/property-list.js
index 72a42e8..41513df2 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/web-animations/animation-model/animation-types/property-list.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/web-animations/animation-model/animation-types/property-list.js
@@ -259,8 +259,7 @@
   },
   'border-spacing': {
     // https://drafts.csswg.org/css-tables/#propdef-border-spacing
-    types: [
-    ]
+    types: [ 'lengthPair' ]
   },
   'border-top-color': {
     // https://drafts.csswg.org/css-backgrounds-3/#border-top-color
@@ -318,6 +317,10 @@
       { type: 'discrete', options: [ [ 'top', 'bottom' ] ] }
     ]
   },
+  'caret-color': {
+    // https://drafts.csswg.org/css-ui/#propdef-caret-color
+    types: [ 'color' ]
+  },
   'clear': {
     // https://drafts.csswg.org/css-page-floats/#propdef-clear
     types: [
@@ -327,6 +330,11 @@
   'clip': {
     // https://drafts.fxtf.org/css-masking-1/#propdef-clip
     types: [
+      'rect',
+      { type: 'discrete', options: [ [ 'rect(10px, 10px, 10px, 10px)',
+                                       'auto' ],
+                                     [ 'rect(10px, 10px, 10px, 10px)',
+                                       'rect(10px, 10px, 10px, auto)'] ] }
     ]
   },
   'clip-path': {
@@ -364,12 +372,15 @@
   },
   'column-count': {
     // https://drafts.csswg.org/css-multicol/#propdef-column-count
-    types: [
+    types: [ 'positiveInteger',
+            { type: 'discrete', options: [ [ 'auto', '10' ] ] }
     ]
   },
   'column-gap': {
     // https://drafts.csswg.org/css-multicol/#propdef-column-gap
-    types: [ 'length' ]
+    types: [ 'length',
+	     {  type: 'discrete', options: [ [ 'normal', '200px' ] ] }
+    ]
   },
   'column-rule-color': {
     // https://drafts.csswg.org/css-multicol/#propdef-column-rule-color
@@ -1130,8 +1141,7 @@
   },
   'perspective-origin': {
     // https://drafts.csswg.org/css-transforms-1/#propdef-perspective-origin
-    types: [
-    ]
+    types: [ 'position' ]
   },
   'pointer-events': {
     // https://svgwg.org/svg2-draft/interact.html#PointerEventsProperty
@@ -1435,8 +1445,7 @@
   },
   'word-spacing': {
     // https://drafts.csswg.org/css-text-3/#propdef-word-spacing
-    types: [
-    ]
+    types: [ 'lengthPercentageOrCalc' ]
   },
   'will-change': {
     // http://dev.w3.org/csswg/css-will-change/#propdef-will-change
@@ -1520,4 +1529,13 @@
                           function (str) {
                             return str.substr(1).toUpperCase(); });
 }
+function calcFromPercentage(idlName, percentageValue) {
+  var examElem = document.createElement('div');
+  document.body.appendChild(examElem);
+  examElem.style[idlName] = percentageValue;
 
+  var calcValue = getComputedStyle(examElem)[idlName];
+  document.body.removeChild(examElem);
+
+  return calcValue;
+}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/web-animations/animation-model/animation-types/property-types.js b/third_party/WebKit/LayoutTests/external/wpt/web-animations/animation-model/animation-types/property-types.js
index 14c8f27..27537ee 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/web-animations/animation-model/animation-types/property-types.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/web-animations/animation-model/animation-types/property-types.js
@@ -85,9 +85,7 @@
       var animation = target.animate({ [idlName]: ['10px', '50px'] },
                                      { duration: 1000, fill: 'both' });
       testAnimationSamples(animation, idlName,
-                           [{ time: 0,    expected: '10px' },
-                            { time: 500,  expected: '30px' },
-                            { time: 1000, expected: '50px' }]);
+                           [{ time: 500,  expected: '30px' }]);
     }, property + ' supports animating as a length');
 
     test(function(t) {
@@ -96,9 +94,7 @@
       var animation = target.animate({ [idlName]: ['1rem', '5rem'] },
                                      { duration: 1000, fill: 'both' });
       testAnimationSamples(animation, idlName,
-                           [{ time: 0,    expected: '10px' },
-                            { time: 500,  expected: '30px' },
-                            { time: 1000, expected: '50px' }]);
+                           [{ time: 500,  expected: '30px' }]);
     }, property + ' supports animating as a length of rem');
   },
 
@@ -124,6 +120,49 @@
 
 };
 
+const lengthPairType = {
+  testInterpolation: function(property, setup) {
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation = target.animate({ [idlName]: ['10px 10px', '50px 50px'] },
+                                     { duration: 1000, fill: 'both' });
+      testAnimationSamples(animation, idlName,
+                           [{ time: 500,  expected: '30px 30px' }]);
+    }, property + ' supports animating as a length pair');
+
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation = target.animate({ [idlName]: ['1rem 1rem', '5rem 5rem'] },
+                                     { duration: 1000, fill: 'both' });
+      testAnimationSamples(animation, idlName,
+                           [{ time: 500,  expected: '30px 30px' }]);
+    }, property + ' supports animating as a length pair of rem');
+  },
+
+  testAddition: function(property, setup) {
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      target.style[idlName] = '10px 10px';
+      var animation = target.animate({ [idlName]: ['10px 10px', '50px 50px'] },
+                                     { duration: 1000, composite: 'add' });
+      testAnimationSamples(animation, idlName, [{ time: 0, expected: '20px 20px' }]);
+    }, property + ': length pair');
+
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      target.style[idlName] = '1rem 1rem';
+      var animation = target.animate({ [idlName]: ['1rem 1rem', '5rem 5rem'] },
+                                     { duration: 1000, composite: 'add' });
+      testAnimationSamples(animation, idlName, [{ time: 0, expected: '20px 20px' }]);
+    }, property + ': length pair of rem');
+  },
+
+};
+
 const percentageType = {
   testInterpolation: function(property, setup) {
     test(function(t) {
@@ -132,9 +171,7 @@
       var animation = target.animate({ [idlName]: ['10%', '50%'] },
                                      { duration: 1000, fill: 'both' });
       testAnimationSamples(animation, idlName,
-                           [{ time: 0,    expected: '10%' },
-                            { time: 500,  expected: '30%' },
-                            { time: 1000, expected: '50%' }]);
+                           [{ time: 500,  expected: '30%' }]);
     }, property + ' supports animating as a percentage');
   },
 
@@ -159,9 +196,7 @@
       var animation = target.animate({ [idlName]: [-2, 2] },
                                      { duration: 1000, fill: 'both' });
       testAnimationSamples(animation, idlName,
-                           [{ time: 0,    expected: '-2' },
-                            { time: 500,  expected: '0' },
-                            { time: 1000, expected: '2' }]);
+                           [{ time: 500,  expected: '0' }]);
     }, property + ' supports animating as an integer');
   },
 
@@ -179,6 +214,32 @@
 
 };
 
+const positiveIntegerType = {
+  testInterpolation: function(property, setup) {
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation = target.animate({ [idlName]: [1, 3] },
+                                     { duration: 1000, fill: 'both' });
+      testAnimationSamples(animation, idlName,
+                           [ { time: 500,  expected: '2' } ]);
+    }, property + ' supports animating as a positive integer');
+  },
+
+  testAddition: function(property, setup) {
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      target.style[idlName] = 1;
+      var animation = target.animate({ [idlName]: [2, 5] },
+                                     { duration: 1000, composite: 'add' });
+      testAnimationSamples(animation, idlName,
+                           [{ time: 0,    expected: '3' }]);
+    }, property + ': positive integer');
+  },
+
+};
+
 const lengthPercentageOrCalcType = {
   testInterpolation: function(property, setup) {
     lengthType.testInterpolation(property, setup);
@@ -190,9 +251,7 @@
       var animation = target.animate({ [idlName]: ['10px', '20%'] },
                                      { duration: 1000, fill: 'both' });
       testAnimationSamples(animation, idlName,
-                           [{ time: 0,    expected: '10px' },
-                            { time: 500,  expected: 'calc(5px + 10%)' },
-                            { time: 1000, expected: '20%' }]);
+                           [{ time: 500,  expected: 'calc(5px + 10%)' }]);
     }, property + ' supports animating as combination units "px" and "%"');
 
     test(function(t) {
@@ -201,9 +260,7 @@
       var animation = target.animate({ [idlName]: ['10%', '2em'] },
                                      { duration: 1000, fill: 'both' });
       testAnimationSamples(animation, idlName,
-                           [{ time: 0,    expected: '10%' },
-                            { time: 500,  expected: 'calc(10px + 5%)' },
-                            { time: 1000, expected: '20px' }]);
+                           [{ time: 500,  expected: 'calc(10px + 5%)' }]);
     }, property + ' supports animating as combination units "%" and "em"');
 
     test(function(t) {
@@ -212,9 +269,7 @@
       var animation = target.animate({ [idlName]: ['1em', '2rem'] },
                                      { duration: 1000, fill: 'both' });
       testAnimationSamples(animation, idlName,
-                           [{ time: 0,    expected: '10px' },
-                            { time: 500,  expected: '15px' },
-                            { time: 1000, expected: '20px' }]);
+                           [{ time: 500,  expected: '15px' }]);
     }, property + ' supports animating as combination units "em" and "rem"');
 
     test(function(t) {
@@ -223,9 +278,7 @@
       var animation = target.animate({ [idlName]: ['10px', 'calc(1em + 20%)'] },
                                      { duration: 1000, fill: 'both' });
       testAnimationSamples(animation, idlName,
-                           [{ time: 0,    expected: '10px' },
-                            { time: 500,  expected: 'calc(10px + 10%)' },
-                            { time: 1000, expected: 'calc(10px + 20%)' }]);
+                           [{ time: 500,  expected: 'calc(10px + 10%)' }]);
     }, property + ' supports animating as combination units "px" and "calc"');
 
     test(function(t) {
@@ -235,12 +288,8 @@
         { [idlName]: ['calc(10px + 10%)', 'calc(1em + 1rem + 20%)'] },
         { duration: 1000, fill: 'both' });
       testAnimationSamples(animation, idlName,
-                           [{ time: 0,
-                              expected: 'calc(10px + 10%)' },
-                            { time: 500,
-                              expected: 'calc(15px + 15%)' },
-                            { time: 1000,
-                              expected: 'calc(20px + 20%)' }]);
+                           [{ time: 500,
+                              expected: 'calc(15px + 15%)' }]);
     }, property + ' supports animating as a calc');
   },
 
@@ -339,9 +388,7 @@
       var animation = target.animate({ [idlName]: [1.1, 1.5] },
                                      { duration: 1000, fill: 'both' });
       testAnimationSamples(animation, idlName,
-                           [{ time: 0,    expected: '1.1' },
-                            { time: 500,  expected: '1.3' },
-                            { time: 1000, expected: '1.5' }]);
+                           [{ time: 500,  expected: '1.3' }]);
     }, property + ' supports animating as a positive number');
   },
 
@@ -921,6 +968,83 @@
 };
 
 const textShadowListType = {
+  testInterpolation: function(property, setup) {
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation =
+        target.animate({ [idlName]: [ 'none',
+                                      'rgb(100, 100, 100) 10px 10px 10px'] },
+                       { duration: 1000, fill: 'both' });
+      testAnimationSamples(animation, idlName,
+                                  // Premultiplied
+        [{ time: 500,  expected: 'rgba(100, 100, 100, 0.5) 5px 5px 5px' }]);
+    }, property + ': from none to other');
+
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation =
+        target.animate({ [idlName]: [ 'rgb(100, 100, 100) 10px 10px 10px',
+                                      'none' ] },
+                       { duration: 1000, fill: 'both' });
+      testAnimationSamples(animation, idlName,
+                                  // Premultiplied
+        [{ time: 500,  expected: 'rgba(100, 100, 100, 0.5) 5px 5px 5px' }]);
+    }, property + ': from other to none');
+
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation =
+        target.animate({ [idlName]: [ 'rgb(0, 0, 0) 0px 0px 0px',
+                                      'rgb(100, 100, 100) 10px 10px 10px'] },
+                       { duration: 1000, fill: 'both' });
+      testAnimationSamples(animation, idlName,
+        [{ time: 500,  expected: 'rgb(50, 50, 50) 5px 5px 5px' }]);
+    }, property + ': single shadow');
+
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation =
+        target.animate({ [idlName]: [ 'rgb(0, 0, 0) 0px 0px 0px, '
+                                    + 'rgb(200, 200, 200) 20px 20px 20px',
+                                      'rgb(100, 100, 100) 10px 10px 10px, '
+                                    + 'rgb(100, 100, 100) 10px 10px 10px'] },
+                       { duration: 1000, fill: 'both' });
+      testAnimationSamples(animation, idlName,
+        [{ time: 500,  expected: 'rgb(50, 50, 50) 5px 5px 5px, '
+                               + 'rgb(150, 150, 150) 15px 15px 15px' }]);
+    }, property + ': shadow list');
+
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation =
+        target.animate({ [idlName]: [ 'rgb(200, 200, 200) 20px 20px 20px',
+                                      'rgb(100, 100, 100) 10px 10px 10px, '
+                                    + 'rgb(100, 100, 100) 10px 10px 10px'] },
+                       { duration: 1000, fill: 'both' });
+      testAnimationSamples(animation, idlName,
+        [{ time: 500,  expected: 'rgb(150, 150, 150) 15px 15px 15px, '
+                               + 'rgba(100, 100, 100, 0.5) 5px 5px 5px' }]);
+    }, property + ': mismatched list length (from longer to shorter)');
+
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation =
+        target.animate({ [idlName]: [ 'rgb(100, 100, 100) 10px 10px 10px, '
+                                    + 'rgb(100, 100, 100) 10px 10px 10px',
+                                      'rgb(200, 200, 200) 20px 20px 20px'] },
+                       { duration: 1000, fill: 'both' });
+      testAnimationSamples(animation, idlName,
+        [{ time: 500,  expected: 'rgb(150, 150, 150) 15px 15px 15px, '
+                               + 'rgba(100, 100, 100, 0.5) 5px 5px 5px' }]);
+    }, property + ': mismatched list length (from shorter to longer)');
+  },
+
   testAddition: function(property, setup) {
     test(function(t) {
       var idlName = propertyToIDL(property);
@@ -939,6 +1063,83 @@
 
 
 const boxShadowListType = {
+  testInterpolation: function(property, setup) {
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation =
+        target.animate({ [idlName]: [ 'none',
+                                      'rgb(100, 100, 100) 10px 10px 10px 0px'] },
+                       { duration: 1000, fill: 'both' });
+      testAnimationSamples(animation, idlName,
+                                  // Premultiplied
+        [{ time: 500,  expected: 'rgba(100, 100, 100, 0.5) 5px 5px 5px 0px' }]);
+    }, property + ': from none to other');
+
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation =
+        target.animate({ [idlName]: [ 'rgb(100, 100, 100) 10px 10px 10px 0px',
+                                      'none' ] },
+                       { duration: 1000, fill: 'both' });
+      testAnimationSamples(animation, idlName,
+                                  // Premultiplied
+        [{ time: 500,  expected: 'rgba(100, 100, 100, 0.5) 5px 5px 5px 0px' }]);
+    }, property + ': from other to none');
+
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation =
+        target.animate({ [idlName]: [ 'rgb(0, 0, 0) 0px 0px 0px 0px',
+                                      'rgb(100, 100, 100) 10px 10px 10px 0px'] },
+                       { duration: 1000, fill: 'both' });
+      testAnimationSamples(animation, idlName,
+        [{ time: 500,  expected: 'rgb(50, 50, 50) 5px 5px 5px 0px' }]);
+    }, property + ': single shadow');
+
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation =
+        target.animate({ [idlName]: [ 'rgb(0, 0, 0) 0px 0px 0px 0px, '
+                                    + 'rgb(200, 200, 200) 20px 20px 20px 20px',
+                                      'rgb(100, 100, 100) 10px 10px 10px 0px, '
+                                    + 'rgb(100, 100, 100) 10px 10px 10px 0px'] },
+                       { duration: 1000, fill: 'both' });
+      testAnimationSamples(animation, idlName,
+        [{ time: 500,  expected: 'rgb(50, 50, 50) 5px 5px 5px 0px, '
+                               + 'rgb(150, 150, 150) 15px 15px 15px 10px' }]);
+    }, property + ': shadow list');
+
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation =
+        target.animate({ [idlName]: [ 'rgb(200, 200, 200) 20px 20px 20px 20px',
+                                      'rgb(100, 100, 100) 10px 10px 10px 0px, '
+                                    + 'rgb(100, 100, 100) 10px 10px 10px 0px'] },
+                       { duration: 1000, fill: 'both' });
+      testAnimationSamples(animation, idlName,
+        [{ time: 500,  expected: 'rgb(150, 150, 150) 15px 15px 15px 10px, '
+                               + 'rgba(100, 100, 100, 0.5) 5px 5px 5px 0px' }]);
+    }, property + ': mismatched list length (from shorter to longer)');
+
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation =
+        target.animate({ [idlName]: [ 'rgb(100, 100, 100) 10px 10px 10px 0px, '
+                                    + 'rgb(100, 100, 100) 10px 10px 10px 0px',
+                                      'rgb(200, 200, 200) 20px 20px 20px 20px']},
+                       { duration: 1000, fill: 'both' });
+      testAnimationSamples(animation, idlName,
+        [{ time: 500,  expected: 'rgb(150, 150, 150) 15px 15px 15px 10px, '
+                               + 'rgba(100, 100, 100, 0.5) 5px 5px 5px 0px' }]);
+    }, property + ': mismatched list length (from longer to shorter)');
+  },
+
   testAddition: function(property, setup) {
     test(function(t) {
       var idlName = propertyToIDL(property);
@@ -955,18 +1156,84 @@
   },
 };
 
+const positionType = {
+  testInterpolation: function(property, setup) {
+    lengthPairType.testInterpolation(property, setup);
+
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation = target.animate({ [idlName]: ['10% 10%', '50% 50%'] },
+                                     { duration: 1000, fill: 'both' });
+      testAnimationSamples(
+        animation, idlName,
+        [{ time: 500,  expected: calcFromPercentage(idlName, '30% 30%') }]);
+    }, property + ' supports animating as a position of percent');
+  },
+
+  testAddition: function(property, setup) {
+    lengthPairType.testAddition(property, setup);
+
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      target.style[idlName] = '60% 60%';
+      var animation = target.animate({ [idlName]: ['70% 70%', '100% 100%'] },
+                                     { duration: 1000, composite: 'add' });
+      testAnimationSamples(
+        animation, idlName,
+        [{ time: 0, expected: calcFromPercentage(idlName, '130% 130%') }]);
+    }, property + ': position of percentage');
+  },
+};
+
+const rectType = {
+  testInterpolation: function(property, setup) {
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      var animation = target.animate({ [idlName]:
+                                         ['rect(10px, 10px, 10px, 10px)',
+					  'rect(50px, 50px, 50px, 50px)'] },
+                                     { duration: 1000, fill: 'both' });
+	testAnimationSamples(
+          animation, idlName,
+          [{ time: 500,  expected: 'rect(30px, 30px, 30px, 30px)' }]);
+    }, property + ' supports animating as a rect');
+  },
+
+  testAddition: function(property, setup) {
+    test(function(t) {
+      var idlName = propertyToIDL(property);
+      var target = createTestElement(t, setup);
+      target.style[idlName] = 'rect(100px, 100px, 100px, 100px)';
+      var animation = target.animate({ [idlName]:
+                                         ['rect(10px, 10px, 10px, 10px)',
+					  'rect(10px, 10px, 10px, 10px)'] },
+                                     { duration: 1000, composite: 'add' });
+      testAnimationSamples(
+        animation, idlName,
+        [{ time: 0, expected: 'rect(110px, 110px, 110px, 110px)' }]);
+    }, property + ': rect');
+  },
+}
+
 const types = {
   color: colorType,
   discrete: discreteType,
   filterList: filterListType,
   integer: integerType,
+  positiveInteger: positiveIntegerType,
   length: lengthType,
   percentage: percentageType,
   lengthPercentageOrCalc: lengthPercentageOrCalcType,
+  lengthPair: lengthPairType,
   positiveNumber: positiveNumberType,
   transformList: transformListType,
   visibility: visibilityType,
   boxShadowList: boxShadowListType,
   textShadowList: textShadowListType,
+  rect: rectType,
+  position: positionType,
 };
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/web-animations/interfaces/Animation/reverse-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/web-animations/interfaces/Animation/reverse-expected.txt
deleted file mode 100644
index c78b28b..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/web-animations/interfaces/Animation/reverse-expected.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-This is a testharness.js-based test.
-PASS reverse() inverts playbackRate 
-PASS reverse() starts to play when pausing animation 
-PASS reverse() maintains the same currentTime 
-PASS reverse() when playbackRate > 0 and currentTime > effect end 
-PASS reverse() when playbackRate > 0 and currentTime < 0 
-PASS reverse() when playbackRate < 0 and currentTime < 0 
-PASS reverse() when playbackRate < 0 and currentTime > effect end 
-PASS reverse() when playbackRate > 0 and currentTime < 0 and the target effect end is positive infinity 
-PASS reverse() when playbackRate < 0 and currentTime < 0 and the target effect end is positive infinity 
-PASS reverse() when playbackRate == 0 
-FAIL Reversing an animation without an active timeline throws an InvalidStateError Animation is not defined
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/web-animations/interfaces/Animation/reverse.html b/third_party/WebKit/LayoutTests/external/wpt/web-animations/interfaces/Animation/reverse.html
deleted file mode 100644
index 5552261..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/web-animations/interfaces/Animation/reverse.html
+++ /dev/null
@@ -1,158 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>Animation.reverse()</title>
-<link rel="help" href="https://w3c.github.io/web-animations/#dom-animation-reverse">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="../../testcommon.js"></script>
-<body>
-<div id="log"></div>
-<script>
-"use strict";
-
-promise_test(function(t) {
-  var div = createDiv(t);
-  var animation = div.animate({}, {duration: 100 * MS_PER_SEC,
-                                   iterations: Infinity});
-
-  // Wait a frame because if currentTime is still 0 when we call
-  // reverse(), it will throw (per spec).
-  return animation.ready.then(waitForAnimationFrames(1)).then(function() {
-    assert_greater_than_equal(animation.currentTime, 0,
-      'currentTime expected to be greater than 0, one frame after starting');
-    animation.currentTime = 50 * MS_PER_SEC;
-    var previousPlaybackRate = animation.playbackRate;
-    animation.reverse();
-    assert_equals(animation.playbackRate, -previousPlaybackRate,
-      'playbackRate should be inverted');
-  });
-}, 'reverse() inverts playbackRate');
-
-promise_test(function(t) {
-  var div = createDiv(t);
-  var animation = div.animate({}, {duration: 100 * MS_PER_SEC,
-                                   iterations: Infinity});
-  animation.currentTime = 50 * MS_PER_SEC;
-  animation.pause();
-
-  return animation.ready.then(function() {
-    animation.reverse();
-    return animation.ready;
-  }).then(function() {
-    assert_equals(animation.playState, 'running',
-      'Animation.playState should be "running" after reverse()');
-  });
-}, 'reverse() starts to play when pausing animation');
-
-test(function(t) {
-  var div = createDiv(t);
-  var animation = div.animate({}, 100 * MS_PER_SEC);
-  animation.currentTime = 50 * MS_PER_SEC;
-  animation.reverse();
-
-  assert_equals(animation.currentTime, 50 * MS_PER_SEC,
-    'reverse() should not change the currentTime ' +
-    'if the currentTime is in the middle of animation duration');
-}, 'reverse() maintains the same currentTime');
-
-test(function(t) {
-  var div = createDiv(t);
-  var animation = div.animate({}, 100 * MS_PER_SEC);
-  animation.currentTime = 200 * MS_PER_SEC;
-  animation.reverse();
-
-  assert_equals(animation.currentTime, 100 * MS_PER_SEC,
-    'reverse() should start playing from the animation effect end ' +
-    'if the playbackRate > 0 and the currentTime > effect end');
-}, 'reverse() when playbackRate > 0 and currentTime > effect end');
-
-test(function(t) {
-  var div = createDiv(t);
-  var animation = div.animate({}, 100 * MS_PER_SEC);
-
-  animation.currentTime = -200 * MS_PER_SEC;
-  animation.reverse();
-
-  assert_equals(animation.currentTime, 100 * MS_PER_SEC,
-    'reverse() should start playing from the animation effect end ' +
-    'if the playbackRate > 0 and the currentTime < 0');
-}, 'reverse() when playbackRate > 0 and currentTime < 0');
-
-test(function(t) {
-  var div = createDiv(t);
-  var animation = div.animate({}, 100 * MS_PER_SEC);
-  animation.playbackRate = -1;
-  animation.currentTime = -200 * MS_PER_SEC;
-  animation.reverse();
-
-  assert_equals(animation.currentTime, 0,
-    'reverse() should start playing from the start of animation time ' +
-    'if the playbackRate < 0 and the currentTime < 0');
-}, 'reverse() when playbackRate < 0 and currentTime < 0');
-
-test(function(t) {
-  var div = createDiv(t);
-  var animation = div.animate({}, 100 * MS_PER_SEC);
-  animation.playbackRate = -1;
-  animation.currentTime = 200 * MS_PER_SEC;
-  animation.reverse();
-
-  assert_equals(animation.currentTime, 0,
-    'reverse() should start playing from the start of animation time ' +
-    'if the playbackRate < 0 and the currentTime > effect end');
-}, 'reverse() when playbackRate < 0 and currentTime > effect end');
-
-test(function(t) {
-  var div = createDiv(t);
-  var animation = div.animate({}, {duration: 100 * MS_PER_SEC,
-                                   iterations: Infinity});
-  animation.currentTime = -200 * MS_PER_SEC;
-
-  assert_throws('InvalidStateError',
-    function () { animation.reverse(); },
-    'reverse() should throw InvalidStateError ' +
-    'if the playbackRate > 0 and the currentTime < 0 ' +
-    'and the target effect is positive infinity');
-}, 'reverse() when playbackRate > 0 and currentTime < 0 ' +
-   'and the target effect end is positive infinity');
-
-test(function(t) {
-  var div = createDiv(t);
-  var animation = div.animate({}, {duration: 100 * MS_PER_SEC,
-                                   iterations: Infinity});
-  animation.playbackRate = -1;
-  animation.currentTime = -200 * MS_PER_SEC;
-  animation.reverse();
-
-  assert_equals(animation.currentTime, 0,
-    'reverse() should start playing from the start of animation time ' +
-    'if the playbackRate < 0 and the currentTime < 0 ' +
-    'and the target effect is positive infinity');
-}, 'reverse() when playbackRate < 0 and currentTime < 0 ' +
-   'and the target effect end is positive infinity');
-
-test(function(t) {
-  var div = createDiv(t);
-  var animation = div.animate({}, 100 * MS_PER_SEC);
-  animation.playbackRate = 0;
-  animation.currentTime = 50 * MS_PER_SEC;
-  animation.reverse();
-
-  assert_equals(animation.playbackRate, 0,
-    'reverse() should preserve playbackRate if the playbackRate == 0');
-  assert_equals(animation.currentTime, 50 * MS_PER_SEC,
-    'reverse() should not affect the currentTime if the playbackRate == 0');
-  t.done();
-}, 'reverse() when playbackRate == 0');
-
-test(function(t) {
-  var div = createDiv(t);
-  var animation =
-    new Animation(new KeyframeEffect(div, null, 100 * MS_PER_SEC), null);
-
-  assert_throws('InvalidStateError', function() { animation.reverse(); });
-}, 'Reversing an animation without an active timeline throws an ' +
-   'InvalidStateError');
-
-</script>
-</body>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/web-animations/timing-model/animations/reversing-an-animation-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/web-animations/timing-model/animations/reversing-an-animation-expected.txt
new file mode 100644
index 0000000..a1c3d41
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/web-animations/timing-model/animations/reversing-an-animation-expected.txt
@@ -0,0 +1,18 @@
+This is a testharness.js-based test.
+PASS Reversing an animation inverts the playback rate 
+PASS Reversing an animation plays a pausing animation 
+PASS Reversing an animation maintains the same current time 
+PASS Reversing an animation does not cause it to leave the pending state 
+PASS Reversing an animation does not cause it to resolve the ready promise 
+PASS Reversing an animation when playbackRate > 0 and currentTime > effect end should make it play from the end 
+PASS Reversing an animation when playbackRate > 0 and currentTime < 0 should make it play from the end 
+PASS Reversing an animation when playbackRate < 0 and currentTime < 0 should make it play from the start 
+PASS Reversing an animation when playbackRate < 0 and currentTime > effect end should make it play from the start 
+PASS Reversing an animation when playbackRate > 0 and currentTime < 0 and the target effect end is positive infinity should throw an exception 
+FAIL When reversing throws an exception, the playback rate remains unchanged assert_equals: playbackRate remains unchanged expected 1 but got -1
+PASS Reversing animation when playbackRate = 0 and currentTime < 0 and the target effect end is positive infinity should NOT throw an exception 
+PASS Reversing an animation when playbackRate < 0 and currentTime < 0 and the target effect end is positive infinity should make it play from the start 
+PASS Reversing when when playbackRate == 0 should preserve the current time and playback rate 
+FAIL Reversing an animation without an active timeline throws an InvalidStateError Animation is not defined
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/web-animations/timing-model/animations/reversing-an-animation.html b/third_party/WebKit/LayoutTests/external/wpt/web-animations/timing-model/animations/reversing-an-animation.html
new file mode 100644
index 0000000..42093c9c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/web-animations/timing-model/animations/reversing-an-animation.html
@@ -0,0 +1,219 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Reversing an animation</title>
+<link rel="help"
+      href="https://w3c.github.io/web-animations/#reverse-an-animation">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../testcommon.js"></script>
+<body>
+<div id="log"></div>
+<script>
+"use strict";
+
+promise_test(function(t) {
+  var div = createDiv(t);
+  var animation = div.animate({}, {duration: 100 * MS_PER_SEC,
+                                   iterations: Infinity});
+
+  // Wait a frame because if currentTime is still 0 when we call
+  // reverse(), it will throw (per spec).
+  return animation.ready.then(waitForAnimationFrames(1)).then(function() {
+    assert_greater_than_equal(animation.currentTime, 0,
+      'currentTime expected to be greater than 0, one frame after starting');
+    animation.currentTime = 50 * MS_PER_SEC;
+    var previousPlaybackRate = animation.playbackRate;
+    animation.reverse();
+    assert_equals(animation.playbackRate, -previousPlaybackRate,
+      'playbackRate should be inverted');
+  });
+}, 'Reversing an animation inverts the playback rate');
+
+promise_test(function(t) {
+  var div = createDiv(t);
+  var animation = div.animate({}, {duration: 100 * MS_PER_SEC,
+                                   iterations: Infinity});
+  animation.currentTime = 50 * MS_PER_SEC;
+  animation.pause();
+
+  return animation.ready.then(function() {
+    animation.reverse();
+    return animation.ready;
+  }).then(function() {
+    assert_equals(animation.playState, 'running',
+      'Animation.playState should be "running" after reverse()');
+  });
+}, 'Reversing an animation plays a pausing animation');
+
+test(function(t) {
+  var div = createDiv(t);
+  var animation = div.animate({}, 100 * MS_PER_SEC);
+  animation.currentTime = 50 * MS_PER_SEC;
+  animation.reverse();
+
+  assert_equals(animation.currentTime, 50 * MS_PER_SEC,
+    'The current time should not change it is in the middle of ' +
+    'the animation duration');
+}, 'Reversing an animation maintains the same current time');
+
+test(function(t) {
+  var div = createDiv(t);
+  var animation = div.animate({}, { duration: 200 * MS_PER_SEC,
+                                    delay: -100 * MS_PER_SEC });
+  assert_equals(animation.playState, 'pending',
+    'The playState is pending before we call reverse');
+
+  animation.reverse();
+
+  assert_equals(animation.playState, 'pending',
+    'The playState is still pending after calling reverse');
+}, 'Reversing an animation does not cause it to leave the pending state');
+
+promise_test(function(t) {
+  var div = createDiv(t);
+  var animation = div.animate({}, { duration: 200 * MS_PER_SEC,
+                                    delay: -100 * MS_PER_SEC });
+  var readyResolved = false;
+  animation.ready.then(() => { readyResolved = true; });
+
+  animation.reverse();
+
+  return Promise.resolve(() => {
+    assert_false(readyResolved,
+                 'ready promise should not have been resolved yet');
+  });
+}, 'Reversing an animation does not cause it to resolve the ready promise');
+
+test(function(t) {
+  var div = createDiv(t);
+  var animation = div.animate({}, 100 * MS_PER_SEC);
+  animation.currentTime = 200 * MS_PER_SEC;
+  animation.reverse();
+
+  assert_equals(animation.currentTime, 100 * MS_PER_SEC,
+    'reverse() should start playing from the animation effect end ' +
+    'if the playbackRate > 0 and the currentTime > effect end');
+}, 'Reversing an animation when playbackRate > 0 and currentTime > ' +
+   'effect end should make it play from the end');
+
+test(function(t) {
+  var div = createDiv(t);
+  var animation = div.animate({}, 100 * MS_PER_SEC);
+
+  animation.currentTime = -200 * MS_PER_SEC;
+  animation.reverse();
+
+  assert_equals(animation.currentTime, 100 * MS_PER_SEC,
+    'reverse() should start playing from the animation effect end ' +
+    'if the playbackRate > 0 and the currentTime < 0');
+}, 'Reversing an animation when playbackRate > 0 and currentTime < 0 ' +
+   'should make it play from the end');
+
+test(function(t) {
+  var div = createDiv(t);
+  var animation = div.animate({}, 100 * MS_PER_SEC);
+  animation.playbackRate = -1;
+  animation.currentTime = -200 * MS_PER_SEC;
+  animation.reverse();
+
+  assert_equals(animation.currentTime, 0,
+    'reverse() should start playing from the start of animation time ' +
+    'if the playbackRate < 0 and the currentTime < 0');
+}, 'Reversing an animation when playbackRate < 0 and currentTime < 0 ' +
+   'should make it play from the start');
+
+test(function(t) {
+  var div = createDiv(t);
+  var animation = div.animate({}, 100 * MS_PER_SEC);
+  animation.playbackRate = -1;
+  animation.currentTime = 200 * MS_PER_SEC;
+  animation.reverse();
+
+  assert_equals(animation.currentTime, 0,
+    'reverse() should start playing from the start of animation time ' +
+    'if the playbackRate < 0 and the currentTime > effect end');
+}, 'Reversing an animation when playbackRate < 0 and currentTime > effect ' +
+   'end should make it play from the start');
+
+test(function(t) {
+  var div = createDiv(t);
+  var animation = div.animate({}, {duration: 100 * MS_PER_SEC,
+                                   iterations: Infinity});
+  animation.currentTime = -200 * MS_PER_SEC;
+
+  assert_throws('InvalidStateError',
+    function () { animation.reverse(); },
+    'reverse() should throw InvalidStateError ' +
+    'if the playbackRate > 0 and the currentTime < 0 ' +
+    'and the target effect is positive infinity');
+}, 'Reversing an animation when playbackRate > 0 and currentTime < 0 ' +
+   'and the target effect end is positive infinity should throw an exception');
+
+test(function(t) {
+  var animation = createDiv(t).animate({}, { duration: 100 * MS_PER_SEC,
+                                             iterations: Infinity });
+  animation.currentTime = -200 * MS_PER_SEC;
+
+  try { animation.reverse(); } catch(e) { }
+
+  assert_equals(animation.playbackRate, 1, 'playbackRate remains unchanged');
+}, 'When reversing throws an exception, the playback rate remains unchanged');
+
+test(function(t) {
+  var div = createDiv(t);
+  var animation = div.animate({}, {duration: 100 * MS_PER_SEC,
+                                   iterations: Infinity});
+  animation.currentTime = -200 * MS_PER_SEC;
+  animation.playbackRate = 0;
+
+  try {
+    animation.reverse();
+  } catch (e) {
+    assert_unreached(`Unexpected exception when calling reverse(): ${e}`);
+  }
+}, 'Reversing animation when playbackRate = 0 and currentTime < 0 ' +
+   'and the target effect end is positive infinity should NOT throw an ' +
+   'exception');
+
+test(function(t) {
+  var div = createDiv(t);
+  var animation = div.animate({}, {duration: 100 * MS_PER_SEC,
+                                   iterations: Infinity});
+  animation.playbackRate = -1;
+  animation.currentTime = -200 * MS_PER_SEC;
+  animation.reverse();
+
+  assert_equals(animation.currentTime, 0,
+    'reverse() should start playing from the start of animation time ' +
+    'if the playbackRate < 0 and the currentTime < 0 ' +
+    'and the target effect is positive infinity');
+}, 'Reversing an animation when playbackRate < 0 and currentTime < 0 ' +
+   'and the target effect end is positive infinity should make it play ' +
+   'from the start');
+
+test(function(t) {
+  var div = createDiv(t);
+  var animation = div.animate({}, 100 * MS_PER_SEC);
+  animation.playbackRate = 0;
+  animation.currentTime = 50 * MS_PER_SEC;
+  animation.reverse();
+
+  assert_equals(animation.playbackRate, 0,
+    'reverse() should preserve playbackRate if the playbackRate == 0');
+  assert_equals(animation.currentTime, 50 * MS_PER_SEC,
+    'reverse() should not affect the currentTime if the playbackRate == 0');
+  t.done();
+}, 'Reversing when when playbackRate == 0 should preserve the current ' +
+   'time and playback rate');
+
+test(function(t) {
+  var div = createDiv(t);
+  var animation =
+    new Animation(new KeyframeEffect(div, null, 100 * MS_PER_SEC), null);
+
+  assert_throws('InvalidStateError', function() { animation.reverse(); });
+}, 'Reversing an animation without an active timeline throws an ' +
+   'InvalidStateError');
+
+</script>
+</body>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webauthn/helpers.js b/third_party/WebKit/LayoutTests/external/wpt/webauthn/helpers.js
new file mode 100644
index 0000000..e36cb6d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/webauthn/helpers.js
@@ -0,0 +1,209 @@
+/**
+ * TestCase
+ *
+ * A generic template for test cases
+ * Is intended to be overloaded with subclasses that override testObject, testFunction and argOrder
+ * The testObject is the default arguments for the testFunction
+ * The default testObject can be modified with the modify() method, making it easy to create new tests based on the default
+ * The testFunction is the target of the test and is called by the test() method. test() applies the testObject as arguments via toArgs()
+ * toArgs() uses argOrder to make sure the resulting array is in the right order of the arguments for the testFunction
+ */
+class TestCase {
+    constructor() {
+        this.testFunction = function() {
+            throw new Error("Test Function not implemented");
+        };
+        this.testObject = {};
+        this.argOrder = [];
+    }
+
+    /**
+     * toObject
+     *
+     * return a copy of the testObject
+     */
+    toObject() {
+        return JSON.parse(JSON.stringify(this.testObject)); // cheap clone
+    }
+
+    /**
+     * toArgs
+     *
+     * converts test object to an array that is ordered in the same way as the arguments to the test function
+     */
+    toArgs() {
+        var ret = [];
+        // XXX, TODO: this won't necessarily produce the args in the right order
+        for (let idx of this.argOrder) {
+            ret.push(this.testObject[idx]);
+        }
+        return ret;
+    }
+
+    /**
+     * modify
+     *
+     * update the internal object by a path / value combination
+     * e.g. :
+     * modify ("foo.bar", 3)
+     * accepts three types of args:
+     *    "foo.bar", 3
+     *    {path: "foo.bar", value: 3}
+     *    [{path: "foo.bar", value: 3}, ...]
+     */
+    modify(arg1, arg2) {
+        var mods;
+
+        // check for the two argument scenario
+        if (typeof arg1 === "string" && arg2 !== undefined) {
+            mods = {
+                path: arg1,
+                value: arg2
+            };
+        } else {
+            mods = arg1;
+        }
+
+        // accept a single modification object instead of an array
+        if (!Array.isArray(mods) && typeof mods === "object") {
+            mods = [mods];
+        }
+
+        // iterate through each of the desired modifications, and call recursiveSetObject on them
+        var obj = this.testObject;
+        for (let idx in mods) {
+            var mod = mods[idx];
+            let paths = mod.path.split(".");
+            recursiveSetObject(this.testObject, paths, mod.value);
+        }
+
+        // iterates through nested `obj` using the `pathArray`, creating the path if it doesn't exist
+        // when the final leaf of the path is found, it is assigned the specified value
+        function recursiveSetObject(obj, pathArray, value) {
+            var currPath = pathArray.shift();
+            if (typeof obj[currPath] !== "object") {
+                obj[currPath] = {};
+            }
+            if (pathArray.length > 0) {
+                return recursiveSetObject(obj[currPath], pathArray, value);
+            }
+            obj[currPath] = value;
+        }
+
+        return this;
+    }
+
+    /**
+     * test
+     *
+     * run the test function with the top-level properties of the test object applied as arguments
+     */
+    test() {
+        return this.testFunction(...this.toArgs());
+    }
+
+    /**
+     * testArgs
+     *
+     * calls test() with testObject() and expects it to fail with a TypeError()
+     */
+    testBadArgs(testDesc) {
+        promise_test(function(t) {
+            return promise_rejects(t, new TypeError(), this.test());
+        }.bind(this), testDesc);
+    }
+}
+
+/**
+ * MakeCredentialTest
+ *
+ * tests the WebAuthn makeCredential() interface
+ */
+class MakeCredentialTest extends TestCase {
+    constructor() {
+        // initialize the parent class
+        super();
+
+        // the function to be tested
+        this.testFunction = navigator.authentication.makeCredential;
+
+        // the default object to pass to makeCredential, to be modified with modify() for various tests
+        // var challenge = Uint8Array.from("Y2xpbWIgYSBtb3VudGFpbg");
+        this.testObject = {
+            accountInformation: {
+                rpDisplayName: "ACME",
+                displayName: "John P. Smith",
+                name: "johnpsmith@example.com",
+                id: "1098237235409872",
+                imageUri: "https://pics.acme.com/00/p/aBjjjpqPb.png"
+            },
+            cryptoParameters: [{
+                type: "ScopedCred",
+                algorithm: "RSASSA-PKCS1-v1_5",
+            }],
+            attestationChallenge: Uint8Array.from([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]).buffer
+        };
+
+        // how to order the properties of testObject when passing them to makeCredential
+        this.argOrder = [
+            "accountInformation",
+            "cryptoParameters",
+            "attestationChallenge",
+            "options"
+        ];
+
+        // enable the constructor to modify the default testObject
+        // would prefer to do this in the super class, but have to call super() before using `this.*`
+        if (arguments.length) this.modify(...arguments);
+    }
+}
+
+//************* BEGIN DELETE AFTER 1/1/2017 *************** //
+// XXX for development mode only!!
+// debug() for debugging purposes... we can drop this later if it is considered ugly
+// note that debug is currently an empty function (i.e. - prints no output)
+// and debug only prints output if the polyfill is loaded
+var debug = function() {};
+// if the WebAuthn API doesn't exist load a polyfill for testing
+// note that the polyfill only gets loaded if navigator.authentication doesn't exist
+// AND if the polyfill script is found at the right path (i.e. - the polyfill is opt-in)
+function ensureInterface() {
+    return new Promise(function(resolve, reject) {
+        if (typeof navigator.authentication !== "object") {
+            debug = console.log;
+
+            // dynamic loading of polyfill script by creating new <script> tag and seeing the src=
+            var scriptElem = document.createElement("script");
+            if (typeof scriptElem !== "object") {
+                debug("ensureInterface: Error creating script element while attempting loading polyfill");
+                return reject(new Error("ensureInterface: Error creating script element while loading polyfill"));
+            }
+            scriptElem.type = "application/javascript";
+            scriptElem.onload = function() {
+                debug("!!! XXX - LOADING POLYFILL FOR WEBAUTHN TESTING - XXX !!!");
+                return resolve();
+            };
+            scriptElem.onerror = function() {
+                return reject(new Error("navigator.authentication does not exist"));
+            };
+            scriptElem.src = "/webauthn/webauthn-polyfill/webauthn-polyfill.js";
+            if (document.body) {
+                document.body.appendChild(scriptElem);
+            } else {
+                debug("ensureInterface: DOM has no body");
+                return reject(new Error("ensureInterface: DOM has no body"));
+            }
+        }
+    });
+}
+
+function standardSetup(cb) {
+    return ensureInterface()
+        .then(() => {
+            if (cb) return cb();
+        })
+        .catch((err) => {
+            return (err);
+        });
+}
+//************* END DELETE AFTER 1/1/2017 *************** //
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webauthn/interfaces.https.html b/third_party/WebKit/LayoutTests/external/wpt/webauthn/interfaces.https.html
new file mode 100644
index 0000000..a09296b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/webauthn/interfaces.https.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>WebAuthn WebIDL Tests</title>
+<link rel="author" title="Adam Powers" href="mailto:adam@fidoalliance.org">
+<link rel="help" href="https://w3c.github.io/webauthn/#iface-credential">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src=helpers.js></script>
+<!-- for testing WebIDL -->
+<script src=/resources/WebIDLParser.js></script>
+<script src=/resources/idlharness.js></script>
+<body></body>
+<script>
+standardSetup(function() {
+    "use strict";
+
+    // loads an IDL file from the webserver
+    function fetchIdl(idlUrl) {
+        return new Promise(function(resolve, reject) {
+            if (typeof idlUrl !== "string") {
+                return reject("fetchIdl: expected argument to be URL string");
+            }
+            var request = new XMLHttpRequest();
+            request.open("GET", idlUrl);
+            request.send();
+            request.onload = function() {
+                var idls = request.responseText;
+                return resolve(idls);
+            };
+        });
+    }
+
+    // this does the real work of running the IDL tests
+    function runIdlTests(idls) {
+        return new Promise(function(resolve, reject) {
+            var idlArray = new window.IdlArray();
+
+            // static IDL tests
+            idlArray.add_untested_idls("interface Navigator { };");
+            // TODO: change to "tested" for real browsers?
+            idlArray.add_untested_idls("partial interface Navigator { readonly attribute WebAuthentication authentication; };");
+            idlArray.add_objects({
+                WebAuthentication: ["navigator.authentication"]
+            });
+
+            // run test WebIDL tests loaded from the idls file
+            idlArray.add_idls(idls);
+            return resolve(idlArray.test());
+        });
+    }
+
+    // test harness function
+    window.promise_test(function() {
+        return fetchIdl("interfaces.idl") // load the IDL file ...
+            .then(function(idls) {
+                return runIdlTests(idls); // ... then run the tests.
+            });
+    }, "Validate WebAuthn IDL");
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webauthn/interfaces.idl b/third_party/WebKit/LayoutTests/external/wpt/webauthn/interfaces.idl
new file mode 100644
index 0000000..173e515
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/webauthn/interfaces.idl
@@ -0,0 +1,96 @@
+[SecureContext] interface WebAuthentication {
+    Promise < ScopedCredentialInfo > makeCredential (
+        Account                                 accountInformation,
+        sequence < ScopedCredentialParameters > cryptoParameters,
+        BufferSource                            attestationChallenge,
+        optional ScopedCredentialOptions        options
+    );
+
+    Promise < WebAuthnAssertion > getAssertion (
+        BufferSource               assertionChallenge,
+        optional AssertionOptions  options
+    );
+};
+
+[SecureContext]
+interface ScopedCredentialInfo {
+    readonly attribute ScopedCredential     credential;
+    readonly attribute CryptoKey            publicKey;
+    readonly attribute WebAuthnAttestation  attestation;
+};
+
+dictionary Account {
+    required DOMString rpDisplayName;
+    required DOMString displayName;
+    required DOMString id;
+    DOMString          name;
+    DOMString          imageURL;
+};
+
+dictionary ScopedCredentialParameters {
+    required ScopedCredentialType  type;
+    required AlgorithmIdentifier   algorithm;
+};
+
+dictionary ScopedCredentialOptions {
+    unsigned long                             timeoutSeconds;
+    USVString                                 rpId;
+    sequence < ScopedCredentialDescriptor >  excludeList;
+    WebAuthnExtensions                        extensions;
+};
+
+[SecureContext]
+interface WebAuthnAssertion {
+    readonly attribute ScopedCredential  credential;
+    readonly attribute ArrayBuffer       clientData;
+    readonly attribute ArrayBuffer       authenticatorData;
+    readonly attribute ArrayBuffer       signature;
+};
+
+dictionary AssertionOptions {
+    unsigned long                            timeoutSeconds;
+    USVString                                rpId;
+    sequence < ScopedCredentialDescriptor > allowList;
+    WebAuthnExtensions                       extensions;
+};
+
+dictionary WebAuthnExtensions {
+};
+
+[SecureContext]
+interface WebAuthnAttestation {
+    readonly    attribute USVString     format;
+    readonly    attribute ArrayBuffer   clientData;
+    readonly    attribute ArrayBuffer   authenticatorData;
+    readonly    attribute any           attestation;
+};
+
+dictionary ClientData {
+    required DOMString           challenge;
+    required DOMString           origin;
+    required AlgorithmIdentifier hashAlg;
+    DOMString                    tokenBinding;
+    WebAuthnExtensions           extensions;
+};
+
+enum ScopedCredentialType {
+    "ScopedCred"
+};
+
+[SecureContext]
+interface ScopedCredential {
+    readonly attribute ScopedCredentialType type;
+    readonly attribute ArrayBuffer          id;
+};
+
+dictionary ScopedCredentialDescriptor {
+    required ScopedCredentialType type;
+    required BufferSource   id;
+    sequence < Transport >  transports;
+};
+
+enum Transport {
+    "usb",
+    "nfc",
+    "ble"
+};
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webauthn/makecredential-badargs-accountinformation.https.html b/third_party/WebKit/LayoutTests/external/wpt/webauthn/makecredential-badargs-accountinformation.https.html
new file mode 100644
index 0000000..e0e95e58
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/webauthn/makecredential-badargs-accountinformation.https.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>WebAuthn makeCredential accountInformation Tests</title>
+<link rel="author" title="Adam Powers" href="mailto:adam@fidoalliance.org">
+<link rel="help" href="https://w3c.github.io/webauthn/#iface-credential">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src=helpers.js></script>
+<body></body>
+<script>
+standardSetup(function() {
+    "use strict";
+
+    // accountInformation bad values
+    new MakeCredentialTest({path: "accountInformation", value: undefined}).testBadArgs("accountInformation missing");
+    new MakeCredentialTest("accountInformation", "hi mom").testBadArgs("accountInformation is string");
+    new MakeCredentialTest("accountInformation", {}).testBadArgs("accountInformation is empty object");
+    // accountInformation.rpDisplayName
+    new MakeCredentialTest({path: "accountInformation.rpDisplayName", value: undefined}).testBadArgs("accountInformation missing rpDisplayName");
+    new MakeCredentialTest("accountInformation.rpDisplayName", {}).testBadArgs("Bad accountInformation: rpDisplayName is object");
+    new MakeCredentialTest("accountInformation.rpDisplayName", null).testBadArgs("Bad accountInformation: rpDisplayName is null");
+    new MakeCredentialTest("accountInformation.rpDisplayName", "").testBadArgs("Bad accountInformation: rpDisplayName is empty String");
+    // accountInformation.displayName
+    new MakeCredentialTest({path: "accountInformation.displayName", value: undefined}).testBadArgs("accountInformation missing displayName");
+    new MakeCredentialTest("accountInformation.displayName", {}).testBadArgs("Bad accountInformation: displayName is object");
+    new MakeCredentialTest("accountInformation.displayName", null).testBadArgs("Bad accountInformation: displayName is null");
+    new MakeCredentialTest("accountInformation.displayName", "").testBadArgs("Bad accountInformation: displayName is empty String");
+    // accountInformation.id
+    new MakeCredentialTest({path: "accountInformation.id", value: undefined}).testBadArgs("accountInformation missing id");
+    new MakeCredentialTest("accountInformation.id", {}).testBadArgs("Bad accountInformation: id is object");
+    new MakeCredentialTest("accountInformation.id", null).testBadArgs("Bad accountInformation: id is null");
+    new MakeCredentialTest("accountInformation.id", "").testBadArgs("Bad accountInformation: id is empty String");
+});
+</script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webauthn/makecredential-badargs-attestationchallenge.https.html b/third_party/WebKit/LayoutTests/external/wpt/webauthn/makecredential-badargs-attestationchallenge.https.html
new file mode 100644
index 0000000..441d1ad
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/webauthn/makecredential-badargs-attestationchallenge.https.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>WebAuthn makeCredential attestationChallenge Tests</title>
+<link rel="author" title="Adam Powers" href="mailto:adam@fidoalliance.org">
+<link rel="help" href="https://w3c.github.io/webauthn/#iface-credential">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src=helpers.js></script>
+<body></body>
+<script>
+standardSetup(function() {
+    "use strict";
+
+    // attestationChallenge bad values
+    new MakeCredentialTest({path: "attestationChallenge", value: undefined}).testBadArgs("attestationChallenge missing");
+    new MakeCredentialTest("attestationChallenge", "hi mom").testBadArgs("accountInformation is string");
+    new MakeCredentialTest("attestationChallenge", {}).testBadArgs("accountInformation is empty object");
+    new MakeCredentialTest("attestationChallenge", Uint8Array.from([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17])).testBadArgs("accountInformation is Uint8Array");
+});
+</script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webauthn/makecredential-badargs-cryptoparameters.https.html b/third_party/WebKit/LayoutTests/external/wpt/webauthn/makecredential-badargs-cryptoparameters.https.html
new file mode 100644
index 0000000..7e177573
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/webauthn/makecredential-badargs-cryptoparameters.https.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>WebAuthn makeCredential cryptoParameters Tests</title>
+<link rel="author" title="Adam Powers" href="mailto:adam@fidoalliance.org">
+<link rel="help" href="https://w3c.github.io/webauthn/#iface-credential">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src=helpers.js></script>
+<body></body>
+<script>
+standardSetup(function() {
+    "use strict";
+
+    // cryptoParameters bad values
+    new MakeCredentialTest({path: "cryptoParameters", value: undefined}).testBadArgs("cryptoParameters is missing");
+    new MakeCredentialTest("cryptoParameters", "hi mom").testBadArgs("cryptoParameters is String");
+    new MakeCredentialTest("cryptoParameters", []).testBadArgs("cryptoParameters is empty Array");
+    // cryptoParameters.type
+    new MakeCredentialTest({path: "cryptoParameters.0.type", value: undefined}).testBadArgs("cryptoParameters missing type");
+    new MakeCredentialTest("cryptoParameters.0.type", {}).testBadArgs("Bad cryptoParameters: type is object");
+    new MakeCredentialTest("cryptoParameters.0.type", null).testBadArgs("Bad cryptoParameters: type is null");
+    new MakeCredentialTest("cryptoParameters.0.type", "").testBadArgs("Bad cryptoParameters: type is empty String");
+    new MakeCredentialTest("cryptoParameters.0.type", "FIDO_2_0").testBadArgs("Bad cryptoParameters: type is not 'ScopedCred'");
+    // cryptoParameters.algorithm
+    new MakeCredentialTest({path: "cryptoParameters.0.algorithm", value: undefined}).testBadArgs("cryptoParameters missing algorithm");
+    new MakeCredentialTest("cryptoParameters.0.algorithm", {}).testBadArgs("Bad cryptoParameters: algorithm is object");
+    new MakeCredentialTest("cryptoParameters.0.algorithm", null).testBadArgs("Bad cryptoParameters: algorithm is null");
+    new MakeCredentialTest("cryptoParameters.0.algorithm", "").testBadArgs("Bad cryptoParameters: algorithm is empty String");
+    // multiple cryptoParameters
+    new MakeCredentialTest("cryptoParameters.1", {type: "FIDO_2_0", algorithm: "RSASSA-PKCS1-v1_5"}).testBadArgs("Bad cryptoParameters: second param has invalid type");
+    new MakeCredentialTest("cryptoParameters.1", {type: "ScopedCred", algorithm: ""}).testBadArgs("Bad cryptoParameters: second param has algorithm of empty String");
+});
+</script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webmessaging/messageerror-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/webmessaging/messageerror-expected.txt
index 6cfcdb482..e36474c 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/webmessaging/messageerror-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/webmessaging/messageerror-expected.txt
@@ -1,7 +1,6 @@
 This is a testharness.js-based test.
 FAIL The default value of onmessageerror is null assert_equals: body expected (object) null but got (undefined) undefined
 FAIL The onmessageerror content attribute must be compiled into the onmessageerror property assert_equals: The onmessageerror property must be a function expected "function" but got "undefined"
-FAIL The onmessageerror content attribute must execute when an event is dispatched on the body assert_true: Dispatching the event must run the code expected true got false
 FAIL The onmessageerror content attribute must execute when an event is dispatched on the window assert_true: Dispatching the event must run the code expected true got false
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webmessaging/messageerror.html b/third_party/WebKit/LayoutTests/external/wpt/webmessaging/messageerror.html
index a320e55..2cb51ee 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/webmessaging/messageerror.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/webmessaging/messageerror.html
@@ -37,16 +37,6 @@
 
   document.body.setAttribute("onmessageerror", "window.messageErrorHappened = true;")
 
-  document.body.dispatchEvent(new Event("messageerror"));
-
-  assert_true(window.messageErrorHappened, "Dispatching the event must run the code");
-}, "The onmessageerror content attribute must execute when an event is dispatched on the body");
-
-test(t => {
-  t.add_cleanup(cleanup);
-
-  document.body.setAttribute("onmessageerror", "window.messageErrorHappened = true;")
-
   window.dispatchEvent(new Event("messageerror"));
 
   assert_true(window.messageErrorHappened, "Dispatching the event must run the code");
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-expected.txt
index 9e869b0..e23fd80 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-expected.txt
@@ -1,4 +1,7 @@
 This is a testharness.js-based test.
-FAIL Triggers ontrack when called with a remote description and the MSID is parsed. assert_unreached: Error OperationError: TEST_ERROR Reached unreachable code
+FAIL Triggers ontrack when called with a remote description and the MSID of the stream is is parsed. assert_unreached: Error OperationError: TEST_ERROR Reached unreachable code
+FAIL Malformed SDP description should be rejected with RTCError RTCError is not defined
+PASS Invalid SDP type should be rejected with TypeError 
+FAIL SDP type that is invalid for current signaling state should be rejected with InvalidStateError InvalidStateError is not defined
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription.html b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription.html
index 109016fe..449b3013 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription.html
@@ -9,8 +9,10 @@
   <script src="/resources/testharness.js"></script>
   <script src="/resources/testharnessreport.js"></script>
   <script type="text/javascript">
+  'use strict';
+
   // tests that ontrack is called and parses the msid information from the SDP and creates
-  // the streams and tracks with matching identifiers.
+  // the streams with matching identifiers.
   async_test(function(test) {
     const sdp = 'v=0\r\n' +
         'o=- 166855176514521964 2 IN IP4 127.0.0.1\r\n' +
@@ -34,9 +36,6 @@
     var pc = new RTCPeerConnection(null);
 
     pc.ontrack = test.step_func(function(event) {
-      assert_equals(event.track.kind, 'audio', 'ontrack fires with an audio track');
-      assert_equals(event.track.id, 'track1', 'the track name is parsed from the MSID line');
-
       assert_equals(event.streams.length, 1, 'the track belongs to one MediaStream');
       assert_equals(event.streams[0].id, 'stream1', 'the stream name is parsed from the MSID line');
       test.done();
@@ -46,7 +45,43 @@
     .catch(test.step_func(function(e) {
       assert_unreached('Error ' + e.name + ': ' + e.message);
     }));
-  }, 'Triggers ontrack when called with a remote description and the MSID is parsed.');
+  }, 'Triggers ontrack when called with a remote description and the MSID of the stream is is parsed.');
+
+  promise_test(t => {
+    const pc = new RTCPeerConnection();
+    return promise_rejects(t, new RTCError(),
+      pc.setRemoteDescription({
+        // valid SDP type
+        type: 'offer',
+        // malformed SDP description
+        sdp: 'bogus'
+      }));
+  }, 'Malformed SDP description should be rejected with RTCError');
+
+  promise_test(t => {
+    const pc = new RTCPeerConnection();
+    return promise_rejects(t, new TypeError(),
+      pc.setRemoteDescription({
+        // invalid enum value is caught at IDL level before
+        // method is executed
+        type: 'bogus',
+        // bogus SDP should never be validated before type
+        sdp: 'bogus'
+      }));
+  }, 'Invalid SDP type should be rejected with TypeError');
+
+  promise_test(t => {
+    const pc = new RTCPeerConnection();
+
+    return promise_rejects(t, new InvalidStateError(),
+      pc.setRemoteDescription({
+        // a new connection with stable state cannot accept answer type SDP
+        type: 'answer',
+        // bogus SDP should never be validated before validating type
+        sdp: 'bogus'
+      }));
+  }, 'SDP type that is invalid for current signaling state should be rejected with InvalidStateError');
+
 </script>
 
 </body>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/interfaces-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/webrtc/interfaces-expected.txt
new file mode 100644
index 0000000..f9c1052
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/interfaces-expected.txt
@@ -0,0 +1,371 @@
+This is a testharness.js-based test.
+Found 367 tests; 156 PASS, 211 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Test driver 
+FAIL MediaStreamTrack interface: attribute isolated assert_true: The prototype object must have a property "isolated" expected true got false
+FAIL MediaStreamTrack interface: attribute onisolationchange assert_true: The prototype object must have a property "onisolationchange" expected true got false
+FAIL RTCPeerConnection interface: existence and properties of interface object Cannot read property 'has_extended_attribute' of undefined
+PASS RTCPeerConnection interface object length 
+PASS RTCPeerConnection interface object name 
+FAIL RTCPeerConnection interface: existence and properties of interface prototype object Cannot read property 'has_extended_attribute' of undefined
+PASS RTCPeerConnection interface: existence and properties of interface prototype object's "constructor" property 
+PASS RTCPeerConnection interface: operation createOffer(RTCOfferOptions) 
+PASS RTCPeerConnection interface: operation createAnswer(RTCAnswerOptions) 
+PASS RTCPeerConnection interface: operation setLocalDescription(RTCSessionDescriptionInit) 
+PASS RTCPeerConnection interface: attribute localDescription 
+FAIL RTCPeerConnection interface: attribute currentLocalDescription assert_true: The prototype object must have a property "currentLocalDescription" expected true got false
+FAIL RTCPeerConnection interface: attribute pendingLocalDescription assert_true: The prototype object must have a property "pendingLocalDescription" expected true got false
+PASS RTCPeerConnection interface: operation setRemoteDescription(RTCSessionDescriptionInit) 
+PASS RTCPeerConnection interface: attribute remoteDescription 
+FAIL RTCPeerConnection interface: attribute currentRemoteDescription assert_true: The prototype object must have a property "currentRemoteDescription" expected true got false
+FAIL RTCPeerConnection interface: attribute pendingRemoteDescription assert_true: The prototype object must have a property "pendingRemoteDescription" expected true got false
+PASS RTCPeerConnection interface: operation addIceCandidate([object Object],[object Object]) 
+PASS RTCPeerConnection interface: attribute signalingState 
+PASS RTCPeerConnection interface: attribute iceGatheringState 
+PASS RTCPeerConnection interface: attribute iceConnectionState 
+FAIL RTCPeerConnection interface: attribute connectionState assert_true: The prototype object must have a property "connectionState" expected true got false
+FAIL RTCPeerConnection interface: attribute canTrickleIceCandidates assert_true: The prototype object must have a property "canTrickleIceCandidates" expected true got false
+FAIL RTCPeerConnection interface: attribute defaultIceServers assert_own_property: The interface object must have a property "defaultIceServers" expected property "defaultIceServers" missing
+FAIL RTCPeerConnection interface: operation getConfiguration() assert_own_property: interface prototype object missing non-static operation expected property "getConfiguration" missing
+PASS RTCPeerConnection interface: operation setConfiguration(RTCConfiguration) 
+PASS RTCPeerConnection interface: operation close() 
+PASS RTCPeerConnection interface: attribute onnegotiationneeded 
+PASS RTCPeerConnection interface: attribute onicecandidate 
+FAIL RTCPeerConnection interface: attribute onicecandidateerror assert_true: The prototype object must have a property "onicecandidateerror" expected true got false
+PASS RTCPeerConnection interface: attribute onsignalingstatechange 
+PASS RTCPeerConnection interface: attribute oniceconnectionstatechange 
+PASS RTCPeerConnection interface: attribute onicegatheringstatechange 
+FAIL RTCPeerConnection interface: attribute onconnectionstatechange assert_true: The prototype object must have a property "onconnectionstatechange" expected true got false
+FAIL RTCPeerConnection interface: attribute onfingerprintfailure assert_true: The prototype object must have a property "onfingerprintfailure" expected true got false
+PASS RTCPeerConnection interface: operation createOffer(RTCSessionDescriptionCallback,RTCPeerConnectionErrorCallback,RTCOfferOptions) 
+PASS RTCPeerConnection interface: operation setLocalDescription(RTCSessionDescriptionInit,VoidFunction,RTCPeerConnectionErrorCallback) 
+PASS RTCPeerConnection interface: operation createAnswer(RTCSessionDescriptionCallback,RTCPeerConnectionErrorCallback) 
+PASS RTCPeerConnection interface: operation setRemoteDescription(RTCSessionDescriptionInit,VoidFunction,RTCPeerConnectionErrorCallback) 
+PASS RTCPeerConnection interface: operation addIceCandidate([object Object],[object Object],VoidFunction,RTCPeerConnectionErrorCallback) 
+PASS RTCPeerConnection interface: operation generateCertificate(AlgorithmIdentifier) 
+PASS RTCPeerConnection interface: operation getSenders() 
+PASS RTCPeerConnection interface: operation getReceivers() 
+FAIL RTCPeerConnection interface: operation getTransceivers() assert_own_property: interface prototype object missing non-static operation expected property "getTransceivers" missing
+FAIL RTCPeerConnection interface: operation addTrack(MediaStreamTrack,MediaStream) assert_own_property: interface prototype object missing non-static operation expected property "addTrack" missing
+FAIL RTCPeerConnection interface: operation removeTrack(RTCRtpSender) assert_own_property: interface prototype object missing non-static operation expected property "removeTrack" missing
+FAIL RTCPeerConnection interface: operation addTransceiver([object Object],[object Object],RTCRtpTransceiverInit) assert_own_property: interface prototype object missing non-static operation expected property "addTransceiver" missing
+FAIL RTCPeerConnection interface: attribute ontrack assert_true: The prototype object must have a property "ontrack" expected true got false
+FAIL RTCPeerConnection interface: attribute sctp assert_true: The prototype object must have a property "sctp" expected true got false
+PASS RTCPeerConnection interface: operation createDataChannel(USVString,RTCDataChannelInit) 
+PASS RTCPeerConnection interface: attribute ondatachannel 
+PASS RTCPeerConnection interface: operation getStats(MediaStreamTrack) 
+FAIL RTCPeerConnection interface: operation setIdentityProvider(DOMString,RTCIdentityProviderOptions) assert_own_property: interface prototype object missing non-static operation expected property "setIdentityProvider" missing
+FAIL RTCPeerConnection interface: operation getIdentityAssertion() assert_own_property: interface prototype object missing non-static operation expected property "getIdentityAssertion" missing
+FAIL RTCPeerConnection interface: attribute peerIdentity assert_true: The prototype object must have a property "peerIdentity" expected true got false
+FAIL RTCPeerConnection interface: attribute idpLoginUrl assert_true: The prototype object must have a property "idpLoginUrl" expected true got false
+FAIL RTCPeerConnection interface: attribute idpErrorInfo assert_true: The prototype object must have a property "idpErrorInfo" expected true got false
+PASS RTCPeerConnection must be primary interface of new RTCPeerConnection 
+FAIL Stringification of new RTCPeerConnection Cannot read property 'has_stringifier' of undefined
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "createOffer" with the proper type (0) 
+PASS RTCPeerConnection interface: calling createOffer(RTCOfferOptions) on new RTCPeerConnection with too few arguments must throw TypeError 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "createAnswer" with the proper type (1) 
+PASS RTCPeerConnection interface: calling createAnswer(RTCAnswerOptions) on new RTCPeerConnection with too few arguments must throw TypeError 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "setLocalDescription" with the proper type (2) 
+PASS RTCPeerConnection interface: calling setLocalDescription(RTCSessionDescriptionInit) on new RTCPeerConnection with too few arguments must throw TypeError 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "localDescription" with the proper type (3) 
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "currentLocalDescription" with the proper type (4) assert_inherits: property "currentLocalDescription" not found in prototype chain
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "pendingLocalDescription" with the proper type (5) assert_inherits: property "pendingLocalDescription" not found in prototype chain
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "setRemoteDescription" with the proper type (6) 
+PASS RTCPeerConnection interface: calling setRemoteDescription(RTCSessionDescriptionInit) on new RTCPeerConnection with too few arguments must throw TypeError 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "remoteDescription" with the proper type (7) 
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "currentRemoteDescription" with the proper type (8) assert_inherits: property "currentRemoteDescription" not found in prototype chain
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "pendingRemoteDescription" with the proper type (9) assert_inherits: property "pendingRemoteDescription" not found in prototype chain
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "addIceCandidate" with the proper type (10) 
+PASS RTCPeerConnection interface: calling addIceCandidate([object Object],[object Object]) on new RTCPeerConnection with too few arguments must throw TypeError 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "signalingState" with the proper type (11) 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "iceGatheringState" with the proper type (12) 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "iceConnectionState" with the proper type (13) 
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "connectionState" with the proper type (14) assert_inherits: property "connectionState" not found in prototype chain
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "canTrickleIceCandidates" with the proper type (15) assert_inherits: property "canTrickleIceCandidates" not found in prototype chain
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "defaultIceServers" with the proper type (16) 
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "getConfiguration" with the proper type (17) assert_inherits: property "getConfiguration" not found in prototype chain
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "setConfiguration" with the proper type (18) 
+PASS RTCPeerConnection interface: calling setConfiguration(RTCConfiguration) on new RTCPeerConnection with too few arguments must throw TypeError 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "close" with the proper type (19) 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "onnegotiationneeded" with the proper type (20) 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "onicecandidate" with the proper type (21) 
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "onicecandidateerror" with the proper type (22) assert_inherits: property "onicecandidateerror" not found in prototype chain
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "onsignalingstatechange" with the proper type (23) 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "oniceconnectionstatechange" with the proper type (24) 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "onicegatheringstatechange" with the proper type (25) 
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "onconnectionstatechange" with the proper type (26) assert_inherits: property "onconnectionstatechange" not found in prototype chain
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "onfingerprintfailure" with the proper type (27) assert_inherits: property "onfingerprintfailure" not found in prototype chain
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "createOffer" with the proper type (28) 
+PASS RTCPeerConnection interface: calling createOffer(RTCSessionDescriptionCallback,RTCPeerConnectionErrorCallback,RTCOfferOptions) on new RTCPeerConnection with too few arguments must throw TypeError 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "setLocalDescription" with the proper type (29) 
+PASS RTCPeerConnection interface: calling setLocalDescription(RTCSessionDescriptionInit,VoidFunction,RTCPeerConnectionErrorCallback) on new RTCPeerConnection with too few arguments must throw TypeError 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "createAnswer" with the proper type (30) 
+PASS RTCPeerConnection interface: calling createAnswer(RTCSessionDescriptionCallback,RTCPeerConnectionErrorCallback) on new RTCPeerConnection with too few arguments must throw TypeError 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "setRemoteDescription" with the proper type (31) 
+PASS RTCPeerConnection interface: calling setRemoteDescription(RTCSessionDescriptionInit,VoidFunction,RTCPeerConnectionErrorCallback) on new RTCPeerConnection with too few arguments must throw TypeError 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "addIceCandidate" with the proper type (32) 
+PASS RTCPeerConnection interface: calling addIceCandidate([object Object],[object Object],VoidFunction,RTCPeerConnectionErrorCallback) on new RTCPeerConnection with too few arguments must throw TypeError 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "generateCertificate" with the proper type (33) 
+FAIL RTCPeerConnection interface: calling generateCertificate(AlgorithmIdentifier) on new RTCPeerConnection with too few arguments must throw TypeError assert_unreached: Throws "TypeError: Cannot read property 'apply' of undefined" instead of rejecting promise Reached unreachable code
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "getSenders" with the proper type (34) 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "getReceivers" with the proper type (35) 
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "getTransceivers" with the proper type (36) assert_inherits: property "getTransceivers" not found in prototype chain
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "addTrack" with the proper type (37) assert_inherits: property "addTrack" not found in prototype chain
+FAIL RTCPeerConnection interface: calling addTrack(MediaStreamTrack,MediaStream) on new RTCPeerConnection with too few arguments must throw TypeError assert_inherits: property "addTrack" not found in prototype chain
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "removeTrack" with the proper type (38) assert_inherits: property "removeTrack" not found in prototype chain
+FAIL RTCPeerConnection interface: calling removeTrack(RTCRtpSender) on new RTCPeerConnection with too few arguments must throw TypeError assert_inherits: property "removeTrack" not found in prototype chain
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "addTransceiver" with the proper type (39) assert_inherits: property "addTransceiver" not found in prototype chain
+FAIL RTCPeerConnection interface: calling addTransceiver([object Object],[object Object],RTCRtpTransceiverInit) on new RTCPeerConnection with too few arguments must throw TypeError assert_inherits: property "addTransceiver" not found in prototype chain
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "ontrack" with the proper type (40) assert_inherits: property "ontrack" not found in prototype chain
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "sctp" with the proper type (41) assert_inherits: property "sctp" not found in prototype chain
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "createDataChannel" with the proper type (42) 
+PASS RTCPeerConnection interface: calling createDataChannel(USVString,RTCDataChannelInit) on new RTCPeerConnection with too few arguments must throw TypeError 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "ondatachannel" with the proper type (43) 
+PASS RTCPeerConnection interface: new RTCPeerConnection must inherit property "getStats" with the proper type (44) 
+PASS RTCPeerConnection interface: calling getStats(MediaStreamTrack) on new RTCPeerConnection with too few arguments must throw TypeError 
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "setIdentityProvider" with the proper type (45) assert_inherits: property "setIdentityProvider" not found in prototype chain
+FAIL RTCPeerConnection interface: calling setIdentityProvider(DOMString,RTCIdentityProviderOptions) on new RTCPeerConnection with too few arguments must throw TypeError assert_inherits: property "setIdentityProvider" not found in prototype chain
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "getIdentityAssertion" with the proper type (46) assert_inherits: property "getIdentityAssertion" not found in prototype chain
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "peerIdentity" with the proper type (47) assert_inherits: property "peerIdentity" not found in prototype chain
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "idpLoginUrl" with the proper type (48) assert_inherits: property "idpLoginUrl" not found in prototype chain
+FAIL RTCPeerConnection interface: new RTCPeerConnection must inherit property "idpErrorInfo" with the proper type (49) assert_inherits: property "idpErrorInfo" not found in prototype chain
+PASS RTCSessionDescription interface: existence and properties of interface object 
+FAIL RTCSessionDescription interface object length assert_equals: wrong value for RTCSessionDescription.length expected 1 but got 0
+PASS RTCSessionDescription interface object name 
+PASS RTCSessionDescription interface: existence and properties of interface prototype object 
+PASS RTCSessionDescription interface: existence and properties of interface prototype object's "constructor" property 
+FAIL RTCSessionDescription interface: attribute type assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function () { [native code] }"
+FAIL RTCSessionDescription interface: attribute sdp assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function () { [native code] }"
+PASS RTCSessionDescription must be primary interface of new RTCSessionDescription({ type: "offer" }) 
+PASS Stringification of new RTCSessionDescription({ type: "offer" }) 
+PASS RTCSessionDescription interface: new RTCSessionDescription({ type: "offer" }) must inherit property "type" with the proper type (0) 
+FAIL RTCSessionDescription interface: new RTCSessionDescription({ type: "offer" }) must inherit property "sdp" with the proper type (1) assert_equals: expected "string" but got "object"
+PASS RTCIceCandidate interface: existence and properties of interface object 
+PASS RTCIceCandidate interface object length 
+PASS RTCIceCandidate interface object name 
+PASS RTCIceCandidate interface: existence and properties of interface prototype object 
+PASS RTCIceCandidate interface: existence and properties of interface prototype object's "constructor" property 
+FAIL RTCIceCandidate interface: attribute candidate assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function () { [native code] }"
+FAIL RTCIceCandidate interface: attribute sdpMid assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function () { [native code] }"
+FAIL RTCIceCandidate interface: attribute sdpMLineIndex assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function () { [native code] }"
+FAIL RTCIceCandidate interface: attribute foundation assert_true: The prototype object must have a property "foundation" expected true got false
+FAIL RTCIceCandidate interface: attribute priority assert_true: The prototype object must have a property "priority" expected true got false
+FAIL RTCIceCandidate interface: attribute ip assert_true: The prototype object must have a property "ip" expected true got false
+FAIL RTCIceCandidate interface: attribute protocol assert_true: The prototype object must have a property "protocol" expected true got false
+FAIL RTCIceCandidate interface: attribute port assert_true: The prototype object must have a property "port" expected true got false
+FAIL RTCIceCandidate interface: attribute type assert_true: The prototype object must have a property "type" expected true got false
+FAIL RTCIceCandidate interface: attribute tcpType assert_true: The prototype object must have a property "tcpType" expected true got false
+FAIL RTCIceCandidate interface: attribute relatedAddress assert_true: The prototype object must have a property "relatedAddress" expected true got false
+FAIL RTCIceCandidate interface: attribute relatedPort assert_true: The prototype object must have a property "relatedPort" expected true got false
+FAIL RTCIceCandidate interface: attribute ufrag assert_true: The prototype object must have a property "ufrag" expected true got false
+FAIL RTCIceCandidate must be primary interface of new RTCIceCandidate assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCIceCandidate': 1 argument required, but only 0 present."
+FAIL Stringification of new RTCIceCandidate assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCIceCandidate': 1 argument required, but only 0 present."
+FAIL RTCIceCandidate interface: new RTCIceCandidate must inherit property "candidate" with the proper type (0) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCIceCandidate': 1 argument required, but only 0 present."
+FAIL RTCIceCandidate interface: new RTCIceCandidate must inherit property "sdpMid" with the proper type (1) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCIceCandidate': 1 argument required, but only 0 present."
+FAIL RTCIceCandidate interface: new RTCIceCandidate must inherit property "sdpMLineIndex" with the proper type (2) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCIceCandidate': 1 argument required, but only 0 present."
+FAIL RTCIceCandidate interface: new RTCIceCandidate must inherit property "foundation" with the proper type (3) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCIceCandidate': 1 argument required, but only 0 present."
+FAIL RTCIceCandidate interface: new RTCIceCandidate must inherit property "priority" with the proper type (4) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCIceCandidate': 1 argument required, but only 0 present."
+FAIL RTCIceCandidate interface: new RTCIceCandidate must inherit property "ip" with the proper type (5) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCIceCandidate': 1 argument required, but only 0 present."
+FAIL RTCIceCandidate interface: new RTCIceCandidate must inherit property "protocol" with the proper type (6) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCIceCandidate': 1 argument required, but only 0 present."
+FAIL RTCIceCandidate interface: new RTCIceCandidate must inherit property "port" with the proper type (7) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCIceCandidate': 1 argument required, but only 0 present."
+FAIL RTCIceCandidate interface: new RTCIceCandidate must inherit property "type" with the proper type (8) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCIceCandidate': 1 argument required, but only 0 present."
+FAIL RTCIceCandidate interface: new RTCIceCandidate must inherit property "tcpType" with the proper type (9) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCIceCandidate': 1 argument required, but only 0 present."
+FAIL RTCIceCandidate interface: new RTCIceCandidate must inherit property "relatedAddress" with the proper type (10) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCIceCandidate': 1 argument required, but only 0 present."
+FAIL RTCIceCandidate interface: new RTCIceCandidate must inherit property "relatedPort" with the proper type (11) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCIceCandidate': 1 argument required, but only 0 present."
+FAIL RTCIceCandidate interface: new RTCIceCandidate must inherit property "ufrag" with the proper type (12) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCIceCandidate': 1 argument required, but only 0 present."
+FAIL RTCPeerConnectionIceEvent interface: existence and properties of interface object Cannot read property 'has_extended_attribute' of undefined
+PASS RTCPeerConnectionIceEvent interface object length 
+PASS RTCPeerConnectionIceEvent interface object name 
+FAIL RTCPeerConnectionIceEvent interface: existence and properties of interface prototype object Cannot read property 'has_extended_attribute' of undefined
+PASS RTCPeerConnectionIceEvent interface: existence and properties of interface prototype object's "constructor" property 
+PASS RTCPeerConnectionIceEvent interface: attribute candidate 
+FAIL RTCPeerConnectionIceEvent interface: attribute url assert_true: The prototype object must have a property "url" expected true got false
+PASS RTCPeerConnectionIceEvent must be primary interface of new RTCPeerConnectionIceEvent("ice") 
+FAIL Stringification of new RTCPeerConnectionIceEvent("ice") Cannot read property 'has_stringifier' of undefined
+PASS RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent("ice") must inherit property "candidate" with the proper type (0) 
+FAIL RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent("ice") must inherit property "url" with the proper type (1) assert_inherits: property "url" not found in prototype chain
+FAIL RTCPeerConnectionIceErrorEvent interface: existence and properties of interface object assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
+FAIL RTCPeerConnectionIceErrorEvent interface object length assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
+FAIL RTCPeerConnectionIceErrorEvent interface object name assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
+FAIL RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
+FAIL RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
+FAIL RTCPeerConnectionIceErrorEvent interface: attribute hostCandidate assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
+FAIL RTCPeerConnectionIceErrorEvent interface: attribute url assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
+FAIL RTCPeerConnectionIceErrorEvent interface: attribute errorCode assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
+FAIL RTCPeerConnectionIceErrorEvent interface: attribute errorText assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
+FAIL RTCPeerConnectionIceErrorEvent must be primary interface of new RTCPeerConnectionIceErrorEvent("ice-error", { errorCode: 701 }); assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined"
+FAIL Stringification of new RTCPeerConnectionIceErrorEvent("ice-error", { errorCode: 701 }); assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined"
+FAIL RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent("ice-error", { errorCode: 701 }); must inherit property "hostCandidate" with the proper type (0) assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined"
+FAIL RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent("ice-error", { errorCode: 701 }); must inherit property "url" with the proper type (1) assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined"
+FAIL RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent("ice-error", { errorCode: 701 }); must inherit property "errorCode" with the proper type (2) assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined"
+FAIL RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent("ice-error", { errorCode: 701 }); must inherit property "errorText" with the proper type (3) assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined"
+PASS RTCCertificate interface: existence and properties of interface object 
+PASS RTCCertificate interface object length 
+PASS RTCCertificate interface object name 
+PASS RTCCertificate interface: existence and properties of interface prototype object 
+PASS RTCCertificate interface: existence and properties of interface prototype object's "constructor" property 
+PASS RTCCertificate interface: attribute expires 
+FAIL RTCCertificate interface: attribute fingerprints assert_true: The prototype object must have a property "fingerprints" expected true got false
+FAIL RTCCertificate interface: operation getAlgorithm() assert_own_property: interface prototype object missing non-static operation expected property "getAlgorithm" missing
+PASS RTCCertificate must be primary interface of certificate 
+PASS Stringification of certificate 
+PASS RTCCertificate interface: certificate must inherit property "expires" with the proper type (0) 
+FAIL RTCCertificate interface: certificate must inherit property "fingerprints" with the proper type (1) assert_inherits: property "fingerprints" not found in prototype chain
+FAIL RTCCertificate interface: certificate must inherit property "getAlgorithm" with the proper type (2) assert_inherits: property "getAlgorithm" not found in prototype chain
+PASS RTCRtpSender interface: existence and properties of interface object 
+PASS RTCRtpSender interface object length 
+PASS RTCRtpSender interface object name 
+PASS RTCRtpSender interface: existence and properties of interface prototype object 
+PASS RTCRtpSender interface: existence and properties of interface prototype object's "constructor" property 
+PASS RTCRtpSender interface: attribute track 
+FAIL RTCRtpSender interface: attribute transport assert_true: The prototype object must have a property "transport" expected true got false
+FAIL RTCRtpSender interface: attribute rtcpTransport assert_true: The prototype object must have a property "rtcpTransport" expected true got false
+FAIL RTCRtpSender interface: operation getCapabilities(DOMString) assert_own_property: interface object missing static operation expected property "getCapabilities" missing
+FAIL RTCRtpSender interface: operation setParameters(RTCRtpParameters) assert_own_property: interface prototype object missing non-static operation expected property "setParameters" missing
+FAIL RTCRtpSender interface: operation getParameters() assert_own_property: interface prototype object missing non-static operation expected property "getParameters" missing
+FAIL RTCRtpSender interface: operation replaceTrack(MediaStreamTrack) assert_own_property: interface prototype object missing non-static operation expected property "replaceTrack" missing
+FAIL RTCRtpSender interface: attribute dtmf assert_true: The prototype object must have a property "dtmf" expected true got false
+PASS RTCRtpReceiver interface: existence and properties of interface object 
+PASS RTCRtpReceiver interface object length 
+PASS RTCRtpReceiver interface object name 
+PASS RTCRtpReceiver interface: existence and properties of interface prototype object 
+PASS RTCRtpReceiver interface: existence and properties of interface prototype object's "constructor" property 
+PASS RTCRtpReceiver interface: attribute track 
+FAIL RTCRtpReceiver interface: attribute transport assert_true: The prototype object must have a property "transport" expected true got false
+FAIL RTCRtpReceiver interface: attribute rtcpTransport assert_true: The prototype object must have a property "rtcpTransport" expected true got false
+FAIL RTCRtpReceiver interface: operation getCapabilities(DOMString) assert_own_property: interface object missing static operation expected property "getCapabilities" missing
+FAIL RTCRtpReceiver interface: operation getParameters() assert_own_property: interface prototype object missing non-static operation expected property "getParameters" missing
+PASS RTCRtpReceiver interface: operation getContributingSources() 
+PASS RTCRtpContributingSource interface: existence and properties of interface object 
+PASS RTCRtpContributingSource interface object length 
+PASS RTCRtpContributingSource interface object name 
+PASS RTCRtpContributingSource interface: existence and properties of interface prototype object 
+PASS RTCRtpContributingSource interface: existence and properties of interface prototype object's "constructor" property 
+PASS RTCRtpContributingSource interface: attribute timestamp 
+PASS RTCRtpContributingSource interface: attribute source 
+FAIL RTCRtpContributingSource interface: attribute audioLevel assert_true: The prototype object must have a property "audioLevel" expected true got false
+FAIL RTCRtpContributingSource interface: attribute voiceActivityFlag assert_true: The prototype object must have a property "voiceActivityFlag" expected true got false
+FAIL RTCRtpTransceiver interface: existence and properties of interface object assert_own_property: self does not have own property "RTCRtpTransceiver" expected property "RTCRtpTransceiver" missing
+FAIL RTCRtpTransceiver interface object length assert_own_property: self does not have own property "RTCRtpTransceiver" expected property "RTCRtpTransceiver" missing
+FAIL RTCRtpTransceiver interface object name assert_own_property: self does not have own property "RTCRtpTransceiver" expected property "RTCRtpTransceiver" missing
+FAIL RTCRtpTransceiver interface: existence and properties of interface prototype object assert_own_property: self does not have own property "RTCRtpTransceiver" expected property "RTCRtpTransceiver" missing
+FAIL RTCRtpTransceiver interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "RTCRtpTransceiver" expected property "RTCRtpTransceiver" missing
+FAIL RTCRtpTransceiver interface: attribute mid assert_own_property: self does not have own property "RTCRtpTransceiver" expected property "RTCRtpTransceiver" missing
+FAIL RTCRtpTransceiver interface: attribute sender assert_own_property: self does not have own property "RTCRtpTransceiver" expected property "RTCRtpTransceiver" missing
+FAIL RTCRtpTransceiver interface: attribute receiver assert_own_property: self does not have own property "RTCRtpTransceiver" expected property "RTCRtpTransceiver" missing
+FAIL RTCRtpTransceiver interface: attribute stopped assert_own_property: self does not have own property "RTCRtpTransceiver" expected property "RTCRtpTransceiver" missing
+FAIL RTCRtpTransceiver interface: attribute direction assert_own_property: self does not have own property "RTCRtpTransceiver" expected property "RTCRtpTransceiver" missing
+FAIL RTCRtpTransceiver interface: attribute currentDirection assert_own_property: self does not have own property "RTCRtpTransceiver" expected property "RTCRtpTransceiver" missing
+FAIL RTCRtpTransceiver interface: operation setDirection(RTCRtpTransceiverDirection) assert_own_property: self does not have own property "RTCRtpTransceiver" expected property "RTCRtpTransceiver" missing
+FAIL RTCRtpTransceiver interface: operation stop() assert_own_property: self does not have own property "RTCRtpTransceiver" expected property "RTCRtpTransceiver" missing
+FAIL RTCRtpTransceiver interface: operation setCodecPreferences([object Object]) assert_own_property: self does not have own property "RTCRtpTransceiver" expected property "RTCRtpTransceiver" missing
+FAIL RTCDtlsTransport interface: existence and properties of interface object assert_own_property: self does not have own property "RTCDtlsTransport" expected property "RTCDtlsTransport" missing
+FAIL RTCDtlsTransport interface object length assert_own_property: self does not have own property "RTCDtlsTransport" expected property "RTCDtlsTransport" missing
+FAIL RTCDtlsTransport interface object name assert_own_property: self does not have own property "RTCDtlsTransport" expected property "RTCDtlsTransport" missing
+FAIL RTCDtlsTransport interface: existence and properties of interface prototype object assert_own_property: self does not have own property "RTCDtlsTransport" expected property "RTCDtlsTransport" missing
+FAIL RTCDtlsTransport interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "RTCDtlsTransport" expected property "RTCDtlsTransport" missing
+FAIL RTCDtlsTransport interface: attribute transport assert_own_property: self does not have own property "RTCDtlsTransport" expected property "RTCDtlsTransport" missing
+FAIL RTCDtlsTransport interface: attribute state assert_own_property: self does not have own property "RTCDtlsTransport" expected property "RTCDtlsTransport" missing
+FAIL RTCDtlsTransport interface: operation getRemoteCertificates() assert_own_property: self does not have own property "RTCDtlsTransport" expected property "RTCDtlsTransport" missing
+FAIL RTCDtlsTransport interface: attribute onstatechange assert_own_property: self does not have own property "RTCDtlsTransport" expected property "RTCDtlsTransport" missing
+FAIL RTCIceTransport interface: existence and properties of interface object assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCIceTransport interface object length assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCIceTransport interface object name assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCIceTransport interface: existence and properties of interface prototype object assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCIceTransport interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCIceTransport interface: attribute role assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCIceTransport interface: attribute component assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCIceTransport interface: attribute state assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCIceTransport interface: attribute gatheringState assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCIceTransport interface: operation getLocalCandidates() assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCIceTransport interface: operation getRemoteCandidates() assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCIceTransport interface: operation getSelectedCandidatePair() assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCIceTransport interface: operation getLocalParameters() assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCIceTransport interface: operation getRemoteParameters() assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCIceTransport interface: attribute onstatechange assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCIceTransport interface: attribute ongatheringstatechange assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCIceTransport interface: attribute onselectedcandidatepairchange assert_own_property: self does not have own property "RTCIceTransport" expected property "RTCIceTransport" missing
+FAIL RTCTrackEvent interface: existence and properties of interface object assert_own_property: self does not have own property "RTCTrackEvent" expected property "RTCTrackEvent" missing
+FAIL RTCTrackEvent interface object length assert_own_property: self does not have own property "RTCTrackEvent" expected property "RTCTrackEvent" missing
+FAIL RTCTrackEvent interface object name assert_own_property: self does not have own property "RTCTrackEvent" expected property "RTCTrackEvent" missing
+FAIL RTCTrackEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "RTCTrackEvent" expected property "RTCTrackEvent" missing
+FAIL RTCTrackEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "RTCTrackEvent" expected property "RTCTrackEvent" missing
+FAIL RTCTrackEvent interface: attribute receiver assert_own_property: self does not have own property "RTCTrackEvent" expected property "RTCTrackEvent" missing
+FAIL RTCTrackEvent interface: attribute track assert_own_property: self does not have own property "RTCTrackEvent" expected property "RTCTrackEvent" missing
+FAIL RTCTrackEvent interface: attribute streams assert_own_property: self does not have own property "RTCTrackEvent" expected property "RTCTrackEvent" missing
+FAIL RTCTrackEvent interface: attribute transceiver assert_own_property: self does not have own property "RTCTrackEvent" expected property "RTCTrackEvent" missing
+FAIL RTCSctpTransport interface: existence and properties of interface object assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
+FAIL RTCSctpTransport interface object length assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
+FAIL RTCSctpTransport interface object name assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
+FAIL RTCSctpTransport interface: existence and properties of interface prototype object assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
+FAIL RTCSctpTransport interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
+FAIL RTCSctpTransport interface: attribute transport assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
+FAIL RTCSctpTransport interface: attribute maxMessageSize assert_own_property: self does not have own property "RTCSctpTransport" expected property "RTCSctpTransport" missing
+FAIL RTCDataChannel interface: existence and properties of interface object Cannot read property 'has_extended_attribute' of undefined
+PASS RTCDataChannel interface object length 
+PASS RTCDataChannel interface object name 
+FAIL RTCDataChannel interface: existence and properties of interface prototype object Cannot read property 'has_extended_attribute' of undefined
+PASS RTCDataChannel interface: existence and properties of interface prototype object's "constructor" property 
+PASS RTCDataChannel interface: attribute label 
+PASS RTCDataChannel interface: attribute ordered 
+FAIL RTCDataChannel interface: attribute maxPacketLifeTime assert_true: The prototype object must have a property "maxPacketLifeTime" expected true got false
+PASS RTCDataChannel interface: attribute maxRetransmits 
+PASS RTCDataChannel interface: attribute protocol 
+PASS RTCDataChannel interface: attribute negotiated 
+PASS RTCDataChannel interface: attribute id 
+FAIL RTCDataChannel interface: attribute priority assert_true: The prototype object must have a property "priority" expected true got false
+PASS RTCDataChannel interface: attribute readyState 
+PASS RTCDataChannel interface: attribute bufferedAmount 
+PASS RTCDataChannel interface: attribute bufferedAmountLowThreshold 
+PASS RTCDataChannel interface: attribute onopen 
+PASS RTCDataChannel interface: attribute onbufferedamountlow 
+PASS RTCDataChannel interface: attribute onerror 
+PASS RTCDataChannel interface: attribute onclose 
+PASS RTCDataChannel interface: operation close() 
+PASS RTCDataChannel interface: attribute onmessage 
+PASS RTCDataChannel interface: attribute binaryType 
+PASS RTCDataChannel interface: operation send(USVString) 
+PASS RTCDataChannel interface: operation send(Blob) 
+PASS RTCDataChannel interface: operation send(ArrayBuffer) 
+PASS RTCDataChannel interface: operation send(ArrayBufferView) 
+FAIL RTCDataChannelEvent interface: existence and properties of interface object Cannot read property 'has_extended_attribute' of undefined
+PASS RTCDataChannelEvent interface object length 
+PASS RTCDataChannelEvent interface object name 
+FAIL RTCDataChannelEvent interface: existence and properties of interface prototype object Cannot read property 'has_extended_attribute' of undefined
+PASS RTCDataChannelEvent interface: existence and properties of interface prototype object's "constructor" property 
+PASS RTCDataChannelEvent interface: attribute channel 
+FAIL RTCDTMFSender interface: existence and properties of interface object assert_own_property: self does not have own property "RTCDTMFSender" expected property "RTCDTMFSender" missing
+FAIL RTCDTMFSender interface object length assert_own_property: self does not have own property "RTCDTMFSender" expected property "RTCDTMFSender" missing
+FAIL RTCDTMFSender interface object name assert_own_property: self does not have own property "RTCDTMFSender" expected property "RTCDTMFSender" missing
+FAIL RTCDTMFSender interface: existence and properties of interface prototype object assert_own_property: self does not have own property "RTCDTMFSender" expected property "RTCDTMFSender" missing
+FAIL RTCDTMFSender interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "RTCDTMFSender" expected property "RTCDTMFSender" missing
+FAIL RTCDTMFSender interface: operation insertDTMF(DOMString,unsigned long,unsigned long) assert_own_property: self does not have own property "RTCDTMFSender" expected property "RTCDTMFSender" missing
+FAIL RTCDTMFSender interface: attribute ontonechange assert_own_property: self does not have own property "RTCDTMFSender" expected property "RTCDTMFSender" missing
+FAIL RTCDTMFSender interface: attribute toneBuffer assert_own_property: self does not have own property "RTCDTMFSender" expected property "RTCDTMFSender" missing
+FAIL RTCDTMFToneChangeEvent interface: existence and properties of interface object assert_own_property: self does not have own property "RTCDTMFToneChangeEvent" expected property "RTCDTMFToneChangeEvent" missing
+FAIL RTCDTMFToneChangeEvent interface object length assert_own_property: self does not have own property "RTCDTMFToneChangeEvent" expected property "RTCDTMFToneChangeEvent" missing
+FAIL RTCDTMFToneChangeEvent interface object name assert_own_property: self does not have own property "RTCDTMFToneChangeEvent" expected property "RTCDTMFToneChangeEvent" missing
+FAIL RTCDTMFToneChangeEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "RTCDTMFToneChangeEvent" expected property "RTCDTMFToneChangeEvent" missing
+FAIL RTCDTMFToneChangeEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "RTCDTMFToneChangeEvent" expected property "RTCDTMFToneChangeEvent" missing
+FAIL RTCDTMFToneChangeEvent interface: attribute tone assert_own_property: self does not have own property "RTCDTMFToneChangeEvent" expected property "RTCDTMFToneChangeEvent" missing
+PASS RTCStatsReport interface: existence and properties of interface object 
+PASS RTCStatsReport interface object length 
+PASS RTCStatsReport interface object name 
+PASS RTCStatsReport interface: existence and properties of interface prototype object 
+PASS RTCStatsReport interface: existence and properties of interface prototype object's "constructor" property 
+PASS RTCIdentityProviderGlobalScope interface: existence and properties of interface object 
+PASS RTCIdentityProviderRegistrar interface: existence and properties of interface object 
+FAIL RTCIdentityAssertion interface: existence and properties of interface object assert_own_property: self does not have own property "RTCIdentityAssertion" expected property "RTCIdentityAssertion" missing
+FAIL RTCIdentityAssertion interface object length assert_own_property: self does not have own property "RTCIdentityAssertion" expected property "RTCIdentityAssertion" missing
+FAIL RTCIdentityAssertion interface object name assert_own_property: self does not have own property "RTCIdentityAssertion" expected property "RTCIdentityAssertion" missing
+FAIL RTCIdentityAssertion interface: existence and properties of interface prototype object assert_own_property: self does not have own property "RTCIdentityAssertion" expected property "RTCIdentityAssertion" missing
+FAIL RTCIdentityAssertion interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "RTCIdentityAssertion" expected property "RTCIdentityAssertion" missing
+FAIL RTCIdentityAssertion interface: attribute idp assert_own_property: self does not have own property "RTCIdentityAssertion" expected property "RTCIdentityAssertion" missing
+FAIL RTCIdentityAssertion interface: attribute name assert_own_property: self does not have own property "RTCIdentityAssertion" expected property "RTCIdentityAssertion" missing
+FAIL RTCErrorEvent interface: existence and properties of interface object assert_own_property: self does not have own property "RTCErrorEvent" expected property "RTCErrorEvent" missing
+FAIL RTCErrorEvent interface object length assert_own_property: self does not have own property "RTCErrorEvent" expected property "RTCErrorEvent" missing
+FAIL RTCErrorEvent interface object name assert_own_property: self does not have own property "RTCErrorEvent" expected property "RTCErrorEvent" missing
+FAIL RTCErrorEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "RTCErrorEvent" expected property "RTCErrorEvent" missing
+FAIL RTCErrorEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "RTCErrorEvent" expected property "RTCErrorEvent" missing
+FAIL RTCErrorEvent interface: attribute error assert_own_property: self does not have own property "RTCErrorEvent" expected property "RTCErrorEvent" missing
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/interfaces.html b/third_party/WebKit/LayoutTests/external/wpt/webrtc/interfaces.html
new file mode 100644
index 0000000..e64286d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/interfaces.html
@@ -0,0 +1,57 @@
+<!doctype html>
+<html>
+  <head>
+    <title>WebRTC IDL Tests</title>
+  </head>
+  <body>
+    <script src=/resources/testharness.js></script>
+    <script src=/resources/testharnessreport.js></script>
+    <script src=/resources/WebIDLParser.js></script>
+    <script src=/resources/idlharness.js></script>
+    <script>
+      'use strict';
+
+      function generateCertificate() {
+        if (!RTCPeerConnection.generateCertificate)
+          return null;
+        return RTCPeerConnection.generateCertificate({
+          name: 'RSASSA-PKCS1-v1_5',
+          modulusLength: 2048,
+          publicExponent: new Uint8Array([1, 0, 1]),
+          hash: 'SHA-256'
+        })
+        .catch(() => {}); // ignore error
+      }
+
+      function doIdlTest([idlText, certificate]) {
+        const idlArray = new IdlArray();
+
+        idlArray.add_untested_idls('interface EventHandler {};');
+        idlArray.add_untested_idls('interface MediaStreamTrack {};');
+        idlArray.add_idls(idlText);
+
+        // TODO: Add object for all IDL interfaces
+        idlArray.add_objects({
+          'RTCPeerConnection': ['new RTCPeerConnection'],
+          'RTCSessionDescription': ['new RTCSessionDescription({ type: "offer" })'],
+          'RTCIceCandidate': ['new RTCIceCandidate'],
+          'RTCPeerConnectionIceEvent': ['new RTCPeerConnectionIceEvent("ice")'],
+          'RTCPeerConnectionIceErrorEvent': ['new RTCPeerConnectionIceErrorEvent("ice-error", { errorCode: 701 });'],
+        });
+
+        if (certificate) {
+          window.certificate = certificate;
+          idlArray.add_objects({'RTCCertificate': ['certificate']});
+        }
+
+        idlArray.test();
+      }
+
+      promise_test(() => {
+        return Promise.all([fetch('/interfaces/webrtc-pc.idl').then(response => response.text()),
+                            generateCertificate()])
+                      .then(doIdlTest);
+      }, 'Test driver');
+    </script>
+  </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Close-1000-reason.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Close-1000-reason.htm
new file mode 100644
index 0000000..8424d78
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Close-1000-reason.htm
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close WebSocket - Code is 1000 and reason</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create WebSocket - Close the Connection - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create WebSocket - Close the Connection - close(1000, reason) - readyState should be in CLOSED state and wasClean is TRUE - Connection should be closed");
+
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.close(1000, "Clean Close");
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be opened");
+            assert_equals(wsocket.readyState, 3, "readyState should be 3(CLOSED)");
+            assert_equals(evt.wasClean, true, "wasClean should be TRUE");
+            testClose.done();
+        }), true);
+
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Close-1000.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Close-1000.htm
new file mode 100644
index 0000000..1622109
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Close-1000.htm
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close WebSocket - Code is 1000</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create WebSocket - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create WebSocket - Close the Connection - close(1000) - readyState should be in CLOSED state and wasClean is TRUE - Connection should be closed");
+
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.close(1000);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be opened");
+            assert_equals(wsocket.readyState, 3, "readyState should be 3(CLOSED)");
+            assert_equals(evt.wasClean, true, "wasClean should be TRUE");
+            testClose.done();
+        }), true);
+
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Close-Reason-124Bytes.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Close-Reason-124Bytes.htm
new file mode 100644
index 0000000..82a661e2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Close-Reason-124Bytes.htm
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close WebSocket - Reason is more than 123 bytes long</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var test = async_test("W3C WebSocket API - Create WebSocket - Close the Connection - close(code, 'reason more than 123 bytes') - SYNTAX_ERR is thrown");
+
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', test.step_func(function (evt) {
+            var reason = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123";
+            assert_equals(reason.length, 124);
+            assert_throws("SYNTAX_ERR", function () { wsocket.close(1000, reason) });
+            test.done();
+        }), true);
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Close-reason-unpaired-surrogates.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Close-reason-unpaired-surrogates.htm
new file mode 100644
index 0000000..9ad8d618
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Close-reason-unpaired-surrogates.htm
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close WebSocket - Reason with unpaired surrogates</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create WebSocket - Close the Connection - close(reason with unpaired surrogates) - connection should get opened");
+        var testClose = async_test("W3C WebSocket API - Create WebSocket - Close the Connection - close(reason with unpaired surrogates) - connection should get closed");
+
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+        var replacementChar = "\uFFFD";
+        var reason = "\uD807";
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.close(1000, reason);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be opened");
+            assert_equals(evt.reason, replacementChar, "reason replaced with replacement character");
+            testClose.done();
+        }), true);
+
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Close-undefined.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Close-undefined.htm
new file mode 100644
index 0000000..d6c89afb
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Close-undefined.htm
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close WebSocket - Code is undefined</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var test = async_test();
+
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', test.step_func(function (evt) {
+            wsocket.close(undefined);
+            test.done();
+        }), true);
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-extensions-empty.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-extensions-empty.htm
new file mode 100644
index 0000000..2f9f7976
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-extensions-empty.htm
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create Secure WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create Secure WebSocket - wsocket.extensions should be set to '' after connection is established - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create Secure WebSocket - wsocket.extensions should be set to '' after connection is established - Connection should be closed");
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            assert_equals(wsocket.extensions, "", "extensions should be empty");
+            wsocket.close();
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be closed");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-url-with-space-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-url-with-space-expected.txt
new file mode 100644
index 0000000..f4448a51
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-url-with-space-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL W3C WebSocket API - Create Secure WebSocket - Pass a URL with a space - SYNTAX_ERR should be thrown assert_throws: function "function () { wsocket = CreateWebSocketWithSpaceInUrl(spaceUrl) }" did not throw
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-url-with-space.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-url-with-space.htm
new file mode 100644
index 0000000..d2dfe1bd
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-url-with-space.htm
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create Secure WebSocket - url with space</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+        test(function () {
+            var wsocket;
+            var spaceUrl = "web platform.test";
+            assert_throws("SYNTAX_ERR", function () { wsocket = CreateWebSocketWithSpaceInUrl(spaceUrl) });
+        }, "W3C WebSocket API - Create Secure WebSocket - Pass a URL with a space - SYNTAX_ERR should be thrown")
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-valid-url-array-protocols.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-valid-url-array-protocols.htm
new file mode 100644
index 0000000..d61a429c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-valid-url-array-protocols.htm
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create Secure WebSocket with valid url and array of protocols</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create Secure WebSocket - Pass a valid URL and array of protocol strings - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create Secure WebSocket - Pass a valid URL and array of protocol strings - Connection should be closed");
+
+        var wsocket = CreateWebSocket(true, false, true);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            assert_equals(wsocket.readyState, 1, "readyState should be 1(OPEN)");
+            wsocket.close();
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-valid-url-binaryType-blob.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-valid-url-binaryType-blob.htm
new file mode 100644
index 0000000..0261fb4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-valid-url-binaryType-blob.htm
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create Secure WebSocket - binaryType set correctly</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create Secure WebSocket - wsocket.binaryType should be set to 'blob' after connection is established - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create Secure WebSocket - wsocket.binaryType should be set to 'blob' after connection is established - Connection should be closed");
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            assert_equals(wsocket.binaryType, "blob", "binaryType should be set to Blob");
+            wsocket.close();
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-valid-url-protocol-setCorrectly.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-valid-url-protocol-setCorrectly.htm
new file mode 100644
index 0000000..a7f1510a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-valid-url-protocol-setCorrectly.htm
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create Secure WebSocket and verify if protocol is set correctly after connection</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+            var testOpen = async_test("W3C WebSocket API - Create Secure WebSocket - Pass a valid URL and protocol string - protocol should be set correctly - Connection should be opened");
+            var testClose = async_test("W3C WebSocket API - Create Secure WebSocket - Pass a valid URL and protocol string - Connection should be closed");
+
+            var wsocket = CreateWebSocket(true, true, false);
+            var isOpenCalled = false;
+
+            wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+                assert_equals(wsocket.protocol, "echo", "protocol should be set to echo");
+                wsocket.close();
+                isOpenCalled = true;
+                testOpen.done();
+            }), true);
+
+            wsocket.addEventListener('close', testClose.step_func(function (evt) {
+                assert_true(isOpenCalled, "WebSocket connection should be open");
+                assert_equals(evt.wasClean, true, "wasClean should be true");
+                    testClose.done();
+            }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-valid-url-protocol-string.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-valid-url-protocol-string.htm
new file mode 100644
index 0000000..7250b4e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-valid-url-protocol-string.htm
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create Secure WebSocket with valid url and protocol string</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create Secure WebSocket - Check readyState is 1");
+        var testClose = async_test("W3C WebSocket API - Create Secure WebSocket - Pass a valid URL and protocol string - Connection should be closed");
+
+        var wsocket = CreateWebSocket(true, true, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            assert_equals(wsocket.readyState, 1, "readyState should be 1(OPEN)");
+            wsocket.close();
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-valid-url.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-valid-url.htm
new file mode 100644
index 0000000..1fe6c0f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-valid-url.htm
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create Secure WebSocket with valid url</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create Secure WebSocket - Pass a valid URL  - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create Secure WebSocket - Pass a valid URL - Connection should be closed");
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            assert_equals(wsocket.readyState, 1, "readyState should be 1(OPEN)");
+            wsocket.close();
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-verify-url-set-non-default-port.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-verify-url-set-non-default-port.htm
new file mode 100644
index 0000000..63e49f4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-Secure-verify-url-set-non-default-port.htm
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create Secure WebSocket - wsocket.url is set correctly - non default port</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+        test(function () {
+            var urlNonDefaultPort = "wss://" + __SERVER__NAME + ":" + __NEW__SECURE__PORT + "/" + __PATH;
+            var wsocket = new WebSocket(urlNonDefaultPort);
+            assert_equals(wsocket.url, urlNonDefaultPort, "wsocket.url is set correctly");
+        }, "W3C WebSocket API - Create Secure WebSocket - wsocket.url should be set correctly")
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-asciiSep-protocol-string.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-asciiSep-protocol-string.htm
new file mode 100644
index 0000000..0d0480eb
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-asciiSep-protocol-string.htm
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create WebSocket - ascii protocol string with separator</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+        if(window.WebSocket) {
+            test(function () {
+                var asciiWithSep = "/echo";
+                var wsocket;
+                assert_throws("SYNTAX_ERR", function () { wsocket = CreateWebSocketWithAsciiSep(asciiWithSep) });
+            }, "W3C WebSocket API - Create WebSocket - Pass a valid URL and a protocol string with an ascii separator character - SYNTAX_ERR is thrown")
+        }
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-blocked-port-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-blocked-port-expected.txt
new file mode 100644
index 0000000..14d919c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-blocked-port-expected.txt
@@ -0,0 +1,69 @@
+This is a testharness.js-based test.
+Found 65 tests; 1 PASS, 64 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Basic check 
+FAIL WebSocket blocked port test 1 Failed to construct 'WebSocket': The port 1 is not allowed.
+FAIL WebSocket blocked port test 7 Failed to construct 'WebSocket': The port 7 is not allowed.
+FAIL WebSocket blocked port test 9 Failed to construct 'WebSocket': The port 9 is not allowed.
+FAIL WebSocket blocked port test 11 Failed to construct 'WebSocket': The port 11 is not allowed.
+FAIL WebSocket blocked port test 13 Failed to construct 'WebSocket': The port 13 is not allowed.
+FAIL WebSocket blocked port test 15 Failed to construct 'WebSocket': The port 15 is not allowed.
+FAIL WebSocket blocked port test 17 Failed to construct 'WebSocket': The port 17 is not allowed.
+FAIL WebSocket blocked port test 19 Failed to construct 'WebSocket': The port 19 is not allowed.
+FAIL WebSocket blocked port test 20 Failed to construct 'WebSocket': The port 20 is not allowed.
+FAIL WebSocket blocked port test 21 Failed to construct 'WebSocket': The port 21 is not allowed.
+FAIL WebSocket blocked port test 22 Failed to construct 'WebSocket': The port 22 is not allowed.
+FAIL WebSocket blocked port test 23 Failed to construct 'WebSocket': The port 23 is not allowed.
+FAIL WebSocket blocked port test 25 Failed to construct 'WebSocket': The port 25 is not allowed.
+FAIL WebSocket blocked port test 37 Failed to construct 'WebSocket': The port 37 is not allowed.
+FAIL WebSocket blocked port test 42 Failed to construct 'WebSocket': The port 42 is not allowed.
+FAIL WebSocket blocked port test 43 Failed to construct 'WebSocket': The port 43 is not allowed.
+FAIL WebSocket blocked port test 53 Failed to construct 'WebSocket': The port 53 is not allowed.
+FAIL WebSocket blocked port test 77 Failed to construct 'WebSocket': The port 77 is not allowed.
+FAIL WebSocket blocked port test 79 Failed to construct 'WebSocket': The port 79 is not allowed.
+FAIL WebSocket blocked port test 87 Failed to construct 'WebSocket': The port 87 is not allowed.
+FAIL WebSocket blocked port test 95 Failed to construct 'WebSocket': The port 95 is not allowed.
+FAIL WebSocket blocked port test 101 Failed to construct 'WebSocket': The port 101 is not allowed.
+FAIL WebSocket blocked port test 102 Failed to construct 'WebSocket': The port 102 is not allowed.
+FAIL WebSocket blocked port test 103 Failed to construct 'WebSocket': The port 103 is not allowed.
+FAIL WebSocket blocked port test 104 Failed to construct 'WebSocket': The port 104 is not allowed.
+FAIL WebSocket blocked port test 109 Failed to construct 'WebSocket': The port 109 is not allowed.
+FAIL WebSocket blocked port test 110 Failed to construct 'WebSocket': The port 110 is not allowed.
+FAIL WebSocket blocked port test 111 Failed to construct 'WebSocket': The port 111 is not allowed.
+FAIL WebSocket blocked port test 113 Failed to construct 'WebSocket': The port 113 is not allowed.
+FAIL WebSocket blocked port test 115 Failed to construct 'WebSocket': The port 115 is not allowed.
+FAIL WebSocket blocked port test 117 Failed to construct 'WebSocket': The port 117 is not allowed.
+FAIL WebSocket blocked port test 119 Failed to construct 'WebSocket': The port 119 is not allowed.
+FAIL WebSocket blocked port test 123 Failed to construct 'WebSocket': The port 123 is not allowed.
+FAIL WebSocket blocked port test 135 Failed to construct 'WebSocket': The port 135 is not allowed.
+FAIL WebSocket blocked port test 139 Failed to construct 'WebSocket': The port 139 is not allowed.
+FAIL WebSocket blocked port test 143 Failed to construct 'WebSocket': The port 143 is not allowed.
+FAIL WebSocket blocked port test 179 Failed to construct 'WebSocket': The port 179 is not allowed.
+FAIL WebSocket blocked port test 389 Failed to construct 'WebSocket': The port 389 is not allowed.
+FAIL WebSocket blocked port test 465 Failed to construct 'WebSocket': The port 465 is not allowed.
+FAIL WebSocket blocked port test 512 Failed to construct 'WebSocket': The port 512 is not allowed.
+FAIL WebSocket blocked port test 513 Failed to construct 'WebSocket': The port 513 is not allowed.
+FAIL WebSocket blocked port test 514 Failed to construct 'WebSocket': The port 514 is not allowed.
+FAIL WebSocket blocked port test 515 Failed to construct 'WebSocket': The port 515 is not allowed.
+FAIL WebSocket blocked port test 526 Failed to construct 'WebSocket': The port 526 is not allowed.
+FAIL WebSocket blocked port test 530 Failed to construct 'WebSocket': The port 530 is not allowed.
+FAIL WebSocket blocked port test 531 Failed to construct 'WebSocket': The port 531 is not allowed.
+FAIL WebSocket blocked port test 532 Failed to construct 'WebSocket': The port 532 is not allowed.
+FAIL WebSocket blocked port test 540 Failed to construct 'WebSocket': The port 540 is not allowed.
+FAIL WebSocket blocked port test 556 Failed to construct 'WebSocket': The port 556 is not allowed.
+FAIL WebSocket blocked port test 563 Failed to construct 'WebSocket': The port 563 is not allowed.
+FAIL WebSocket blocked port test 587 Failed to construct 'WebSocket': The port 587 is not allowed.
+FAIL WebSocket blocked port test 601 Failed to construct 'WebSocket': The port 601 is not allowed.
+FAIL WebSocket blocked port test 636 Failed to construct 'WebSocket': The port 636 is not allowed.
+FAIL WebSocket blocked port test 993 Failed to construct 'WebSocket': The port 993 is not allowed.
+FAIL WebSocket blocked port test 995 Failed to construct 'WebSocket': The port 995 is not allowed.
+FAIL WebSocket blocked port test 2049 Failed to construct 'WebSocket': The port 2049 is not allowed.
+FAIL WebSocket blocked port test 3659 Failed to construct 'WebSocket': The port 3659 is not allowed.
+FAIL WebSocket blocked port test 4045 Failed to construct 'WebSocket': The port 4045 is not allowed.
+FAIL WebSocket blocked port test 6000 Failed to construct 'WebSocket': The port 6000 is not allowed.
+FAIL WebSocket blocked port test 6665 Failed to construct 'WebSocket': The port 6665 is not allowed.
+FAIL WebSocket blocked port test 6666 Failed to construct 'WebSocket': The port 6666 is not allowed.
+FAIL WebSocket blocked port test 6667 Failed to construct 'WebSocket': The port 6667 is not allowed.
+FAIL WebSocket blocked port test 6668 Failed to construct 'WebSocket': The port 6668 is not allowed.
+FAIL WebSocket blocked port test 6669 Failed to construct 'WebSocket': The port 6669 is not allowed.
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-blocked-port.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-blocked-port.htm
new file mode 100644
index 0000000..aafaee6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-blocked-port.htm
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>WebSocket API - blocked port</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script>
+            async_test(t => {
+              const ws = CreateWebSocketWithBlockedPort(__PORT)
+              ws.onerror = t.unreached_func()
+              ws.onopen = t.step_func_done()
+            }, 'Basic check');
+            // list of bad ports according to
+            // https://fetch.spec.whatwg.org/#port-blocking
+            [
+                1,    // tcpmux
+                7,    // echo
+                9,    // discard
+                11,   // systat
+                13,   // daytime
+                15,   // netstat
+                17,   // qotd
+                19,   // chargen
+                20,   // ftp-data
+                21,   // ftp
+                22,   // ssh
+                23,   // telnet
+                25,   // smtp
+                37,   // time
+                42,   // name
+                43,   // nicname
+                53,   // domain
+                77,   // priv-rjs
+                79,   // finger
+                87,   // ttylink
+                95,   // supdup
+                101,  // hostriame
+                102,  // iso-tsap
+                103,  // gppitnp
+                104,  // acr-nema
+                109,  // pop2
+                110,  // pop3
+                111,  // sunrpc
+                113,  // auth
+                115,  // sftp
+                117,  // uucp-path
+                119,  // nntp
+                123,  // ntp
+                135,  // loc-srv / epmap
+                139,  // netbios
+                143,  // imap2
+                179,  // bgp
+                389,  // ldap
+                465,  // smtp+ssl
+                512,  // print / exec
+                513,  // login
+                514,  // shell
+                515,  // printer
+                526,  // tempo
+                530,  // courier
+                531,  // chat
+                532,  // netnews
+                540,  // uucp
+                556,  // remotefs
+                563,  // nntp+ssl
+                587,  // smtp
+                601,  // syslog-conn
+                636,  // ldap+ssl
+                993,  // imap+ssl
+                995,  // pop3+ssl
+                2049, // nfs
+                3659, // apple-sasl
+                4045, // lockd
+                6000, // x11
+                6665, // irc (alternate)
+                6666, // irc (alternate)
+                6667, // irc (default)
+                6668, // irc (alternate)
+                6669, // irc (alternate)
+            ].forEach(blockedPort => {
+              async_test(t => {
+                const ws = CreateWebSocketWithBlockedPort(blockedPort)
+                ws.onerror = t.step_func_done()
+                ws.onopen = t.unreached_func()
+              }, "WebSocket blocked port test " + blockedPort)
+            })
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-invalid-urls.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-invalid-urls.htm
new file mode 100644
index 0000000..c4a4c798
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-invalid-urls.htm
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create WebSocket - pass in list of invalid urls</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+        var wsocket;
+        test(function() {
+            assert_throws("SYNTAX_ERR", function () { wsocket = new WebSocket("/echo") });
+        }, "Url is /echo - should throw SYNTAX_ERR");
+
+        test(function () {
+            assert_throws("SYNTAX_ERR", function () { wsocket = new WebSocket("mailto:microsoft@microsoft.com") });
+        }, "Url is a mail address - should throw SYNTAX_ERR");
+
+        test(function () {
+            assert_throws("SYNTAX_ERR", function () { wsocket = new WebSocket("about:blank") });
+        }, "Url is about:blank - should throw SYNTAX_ERR");
+
+        test(function () {
+            assert_throws("SYNTAX_ERR", function () { wsocket = new WebSocket("?test") });
+        }, "Url is ?test - should throw SYNTAX_ERR");
+
+        test(function () {
+            assert_throws("SYNTAX_ERR", function () { wsocket = new WebSocket("#test") });
+        }, "Url is #test - should throw SYNTAX_ERR");
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-non-absolute-url.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-non-absolute-url.htm
new file mode 100644
index 0000000..2ed8ece
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-non-absolute-url.htm
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create WebSocket - non absolute url</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+        test(function () {
+            var wsocket;
+            assert_throws("SYNTAX_ERR", function () { wsocket = CreateWebSocketNonAbsolute() });
+        }, "W3C WebSocket API - Create WebSocket - Pass a non absolute URL - SYNTAX_ERR is thrown")
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-nonAscii-protocol-string.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-nonAscii-protocol-string.htm
new file mode 100644
index 0000000..fd34018
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-nonAscii-protocol-string.htm
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create WebSocket - non ascii protocol string</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+        if(window.WebSocket) {
+            test(function () {
+                var nonAsciiProtocol = "\u0080echo";
+                var wsocket;
+                assert_throws("SYNTAX_ERR", function () { wsocket = CreateWebSocketNonAsciiProtocol(nonAsciiProtocol) });
+            }, "W3C WebSocket API - Create WebSocket - Pass a valid URL and a protocol string with non-ascii values - SYNTAX_ERR is thrown")
+        }
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-protocol-with-space.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-protocol-with-space.htm
new file mode 100644
index 0000000..023a498
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-protocol-with-space.htm
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create WebSocket - protocol with space</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+        test(function () {
+            var wsocket;
+            assert_throws("SYNTAX_ERR", function () { wsocket = CreateWebSocketWithSpaceInProtocol("ec ho") });
+        }, "W3C WebSocket API - Create WebSocket - Pass a valid URL and a protocol string with a space in it - SYNTAX_ERR is thrown")
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-protocols-repeated-case-insensitive-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-protocols-repeated-case-insensitive-expected.txt
new file mode 100644
index 0000000..c3b58c7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-protocols-repeated-case-insensitive-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL W3C WebSocket API - Create WebSocket - Pass a valid URL and an array of protocol strings with repeated values but different case - SYNTAX_ERR is thrown assert_throws: function "function () { wsocket = CreateWebSocketWithRepeatedProtocolsCaseInsensitive() }" did not throw
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-protocols-repeated-case-insensitive.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-protocols-repeated-case-insensitive.htm
new file mode 100644
index 0000000..47225ef2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-protocols-repeated-case-insensitive.htm
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create WebSocket - repeated protocols with different case</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+        test(function () {
+            var wsocket;
+            assert_throws("SYNTAX_ERR", function () { wsocket = CreateWebSocketWithRepeatedProtocolsCaseInsensitive() });
+        }, "W3C WebSocket API - Create WebSocket - Pass a valid URL and an array of protocol strings with repeated values but different case - SYNTAX_ERR is thrown")
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-protocols-repeated.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-protocols-repeated.htm
new file mode 100644
index 0000000..6a62bca
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-protocols-repeated.htm
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create WebSocket - repeated protocols</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+        test(function () {
+            var wsocket;
+            assert_throws("SYNTAX_ERR", function () { wsocket = CreateWebSocketWithRepeatedProtocols() });
+        }, "W3C WebSocket API - Create WebSocket - Pass a valid URL and an array of protocol strings with repeated values - SYNTAX_ERR is thrown")
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-valid-url-array-protocols.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-valid-url-array-protocols.htm
new file mode 100644
index 0000000..3ebf3f56
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-valid-url-array-protocols.htm
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create WebSocket with valid url and array of protocols</title>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create WebSocket - Pass a valid URL and array of protocol strings - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create WebSocket - Pass a valid URL and array of protocol strings - Connection should be closed");
+
+        var wsocket = CreateWebSocket(false, false, true);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            assert_equals(wsocket.readyState, 1, "readyState should be 1(OPEN)");
+            wsocket.close();
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-valid-url-protocol-empty.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-valid-url-protocol-empty.htm
new file mode 100644
index 0000000..9146937b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-valid-url-protocol-empty.htm
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create WebSocket - wsocket.protocol is empty before connection is established</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+        test(function () {
+            var wsocket = CreateWebSocket(false, true, false);
+            assert_equals(wsocket.protocol, "", "protocol should be empty");
+            wsocket.close();
+        }, "W3C WebSocket API - Create WebSocket - wsocket.protocol should be empty before connection is established")
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-valid-url-protocol.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-valid-url-protocol.htm
new file mode 100644
index 0000000..0a6dd97f0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-valid-url-protocol.htm
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create WebSocket with a valid url and protocol string</title>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create WebSocket - Pass a valid URL and a protocol string - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create WebSocket - Pass a valid URL and a protocol string - Connection should be closed");
+
+        var wsocket = CreateWebSocket(false, true, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            assert_equals(wsocket.readyState, 1, "readyState should be 1(OPEN)");
+            wsocket.close();
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-valid-url.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-valid-url.htm
new file mode 100644
index 0000000..e74a7bfe
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-valid-url.htm
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create WebSocket with valid url</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create WebSocket - Pass a valid URL - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create WebSocket - Pass a valid URL - Connection should be closed");
+
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            assert_equals(wsocket.readyState, 1, "readyState should be 1(OPEN)");
+            wsocket.close();
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-verify-url-set-non-default-port.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-verify-url-set-non-default-port.htm
new file mode 100644
index 0000000..181794d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-verify-url-set-non-default-port.htm
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create WebSocket - wsocket.url is set correctly - non default port</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+        test(function () {
+            var urlNonDefaultPort = "ws://" + __SERVER__NAME + ":" + __NEW__PORT + "/" + __PATH;
+            var wsocket = new WebSocket(urlNonDefaultPort);
+            assert_equals(wsocket.url, urlNonDefaultPort, "wsocket.url is set correctly");
+        }, "W3C WebSocket API - Create WebSocket - wsocket.url should be set correctly");
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-wrong-scheme.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-wrong-scheme.htm
new file mode 100644
index 0000000..a0a9820
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Create-wrong-scheme.htm
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create WebSocket - non ws/wss scheme in url</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+        test(function () {
+            var wsocket;
+            assert_throws("SYNTAX_ERR", function () { wsocket = CreateWebSocketNonWsScheme() });
+        }, "W3C WebSocket API - Create WebSocket - Pass a URL with a non ws/wss scheme - SYNTAX_ERR is thrown")
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/README.md b/third_party/WebKit/LayoutTests/external/wpt/websockets/README.md
new file mode 100644
index 0000000..0e5ffd68
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/README.md
@@ -0,0 +1,2 @@
+These are the `WebSocket` tests for the
+[Web sockets chapter of the HTML Standard](https://html.spec.whatwg.org/multipage/comms.html#network).
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-1000-reason.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-1000-reason.htm
new file mode 100644
index 0000000..3dead6bf
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-1000-reason.htm
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close Secure WebSocket - Code is 1000 and reason</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(1000, reason) - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(1000, reason) - readyState should be in CLOSED state and wasClean is TRUE - Connection should be closed");
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.close(1000, "Clean Close");
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(wsocket.readyState, 3, "readyState should be 3(CLOSED)");
+            assert_equals(evt.wasClean, true, "wasClean should be TRUE");
+            testClose.done();
+        }), true);
+
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-1000-verify-code.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-1000-verify-code.htm
new file mode 100644
index 0000000..0cac622
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-1000-verify-code.htm
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close Secure WebSocket - Code is 1000 - verify code in CloseEvent is 1000</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(1000, reason) - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(1000, reason) - event.code == 1000 and event.reason = 'Clean Close'");
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.close(1000, "Clean Close");
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.code, 1000, "CloseEvent.code should be 1000");
+            assert_equals(evt.reason, "Clean Close", "CloseEvent.reason should be the same as the reason sent in close");
+            testClose.done();
+        }), true);
+
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-1000.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-1000.htm
new file mode 100644
index 0000000..3da8630
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-1000.htm
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close Secure WebSocket - Code is 1000</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(1000) - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(1000) - readyState should be in CLOSED state and wasClean is TRUE - Connection should be closed");
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.close(1000);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(wsocket.readyState, 3, "readyState should be 3(CLOSED)");
+            assert_equals(evt.wasClean, true, "wasClean should be TRUE");
+            testClose.done();
+        }), true);
+
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-1005-verify-code.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-1005-verify-code.htm
new file mode 100644
index 0000000..6414b770
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-1005-verify-code.htm
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close Secure WebSocket - verify return code is 1005</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close() - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close() - return close code is 1005 - Connection should be closed");
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.close();
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.code, 1005, "CloseEvent.code should be 1005");
+            assert_equals(evt.reason, "", "CloseEvent.reason should be empty");
+            testClose.done();
+        }), true);
+
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-1005.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-1005.htm
new file mode 100644
index 0000000..de8f51f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-1005.htm
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close Secure WebSocket - Code is 1005</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var test = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(1005) - see '7.1.5.  The WebSocket Connection Close Code' in http://www.ietf.org/rfc/rfc6455.txt");
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', test.step_func(function (evt) {
+            assert_throws("INVALID_ACCESS_ERR", function () { wsocket.close(1005, "1005 - reserved code") });
+            test.done();
+        }), true);
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-2999-reason.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-2999-reason.htm
new file mode 100644
index 0000000..223fc62
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-2999-reason.htm
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close Secure WebSocket - Code is 2999 and reason</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var test = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(2999, reason) - INVALID_ACCESS_ERR is thrown");
+
+        var wsocket = CreateWebSocket(true, false, false);
+
+        wsocket.addEventListener('open', test.step_func(function (evt) {
+            assert_throws("INVALID_ACCESS_ERR", function () { wsocket.close(2999, "Close not in range 3000-4999") });
+            test.done();
+        }), true);
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-3000-reason.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-3000-reason.htm
new file mode 100644
index 0000000..80a8be7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-3000-reason.htm
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close Secure WebSocket - Code is 3000 and reason</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(3000, reason) - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(3000, reason) - readyState should be in CLOSED state and wasClean is TRUE - Connection should be closed");
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.close(3000, "Clean Close with code - 3000");
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(wsocket.readyState, 3, "readyState should be 3(CLOSED)");
+            assert_equals(evt.wasClean, true, "wasClean should be TRUE");
+            testClose.done();
+        }), true);
+
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-3000-verify-code.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-3000-verify-code.htm
new file mode 100644
index 0000000..9d385d99
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-3000-verify-code.htm
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close Secure WebSocket - Code is 3000 - verify code in CloseEvent is 3000</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(3000, reason) - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(3000, reason) - verify return code is 3000 - Connection should be closed");
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.close(3000, "Clean Close");
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.code, 3000, "CloseEvent.code should be 3000");
+            testClose.done();
+        }), true);
+
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-4999-reason.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-4999-reason.htm
new file mode 100644
index 0000000..a6ea0694
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-4999-reason.htm
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close Secure WebSocket - Code is 4999 and reason</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(4999, reason) - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(4999, reason) - readyState should be in CLOSED state and wasClean is TRUE - Connection should be closed");
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.close(3000, "Clean Close with code - 4999");
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(wsocket.readyState, 3, "readyState should be 3(CLOSED)");
+            assert_equals(evt.wasClean, true, "wasClean should be TRUE");
+            testClose.done();
+        }), true);
+
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-Reason-124Bytes.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-Reason-124Bytes.htm
new file mode 100644
index 0000000..94feb0f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-Reason-124Bytes.htm
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close Secure WebSocket - Reason is more than 123 bytes long</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var test = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(code, 'reason more than 123 bytes') - SYNTAX_ERR is thrown");
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', test.step_func(function (evt) {
+            var reason = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123";
+            assert_equals(reason.length, 124);
+            assert_throws("SYNTAX_ERR", function () { wsocket.close(1000, reason) });
+            test.done();
+        }), true);
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-Reason-Unpaired-surrogates.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-Reason-Unpaired-surrogates.htm
new file mode 100644
index 0000000..6947173
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-Reason-Unpaired-surrogates.htm
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close Secure WebSocket - Reason with unpaired surrogates</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(reason with unpaired surrogates) - connection should get opened");
+        var testClose = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(reason with unpaired surrogates) - connection should get closed");
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+        var replacementChar = "\uFFFD";
+        var reason = "\uD807";
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.close(1000, reason);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be opened");
+            assert_equals(evt.reason, replacementChar, "reason replaced with replacement character");
+            testClose.done();
+        }), true);
+
+    </script>
+
+</body>
+</html>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-onlyReason.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-onlyReason.htm
new file mode 100644
index 0000000..278d7aa3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-onlyReason.htm
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close Secure WebSocket - Only reason</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var test = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - close(only reason) - INVALID_ACCESS_ERR is thrown");
+
+        var wsocket = CreateWebSocket(true, false, false);
+
+        wsocket.addEventListener('open', test.step_func(function (evt) {
+            assert_throws("INVALID_ACCESS_ERR", function () { wsocket.close("Close with only reason") });
+            test.done();
+        }), true);
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-readyState-Closed.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-readyState-Closed.htm
new file mode 100644
index 0000000..3ed38a8f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-readyState-Closed.htm
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close Secure WebSocket - verify readyState is 3 when onclose is fired</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - readyState should be in CLOSED state and wasClean is TRUE - Connection should be closed");
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.close();
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(wsocket.readyState, 3, "readyState should be 3(CLOSED)");
+            assert_equals(evt.wasClean, true, "wasClean should be TRUE");
+            testClose.done();
+        }), true);
+
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-readyState-Closing.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-readyState-Closing.htm
new file mode 100644
index 0000000..1048396
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-readyState-Closing.htm
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close Secure WebSocket - verify readyState is 2 before onclose is fired</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var test = async_test("W3C WebSocket API - Create Secure WebSocket - Close the Connection - readyState should be in CLOSING state just before onclose is called");
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', test.step_func(function (evt) {
+            wsocket.close();
+            assert_equals(wsocket.readyState, 2, "readyState should be 2(CLOSING)");
+            test.done();
+        }), true);
+
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-server-initiated-close.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-server-initiated-close.htm
new file mode 100644
index 0000000..4262754c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-server-initiated-close.htm
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close Secure WebSocket - Server Initiated close</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create Secure WebSocket - Server initiated Close - Client sends back a CLOSE - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create Secure WebSocket - Server initiated Close - Client sends back a CLOSE - readyState should be in CLOSED state and wasClean is TRUE - Connection should be closed");
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.send("Goodbye");
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(wsocket.readyState, 3, "readyState should be 3(CLOSED)");
+            assert_equals(evt.wasClean, true, "wasClean should be TRUE");
+            testClose.done();
+        }), true);
+
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-undefined.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-undefined.htm
new file mode 100644
index 0000000..9bd4861
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Close-undefined.htm
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Close Secure WebSocket - Code is undefined</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var test = async_test();
+
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', test.step_func(function (evt) {
+            wsocket.close(undefined);
+            test.done();
+        }), true);
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-65K-data.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-65K-data.htm
new file mode 100644
index 0000000..f9bbe376
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-65K-data.htm
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send 65K data - Secure WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send  65K data on a Secure WebSocket - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send 65K data on a Secure WebSocket - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send 65K data on a Secure WebSocket - Connection should be closed");
+
+        var data = "";
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            for (var i = 0; i < 65000; i++) {
+                data = data + "c";
+            }
+            wsocket.send(data);
+            assert_equals(data.length, wsocket.bufferedAmount);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_equals(evt.data, data);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-65K-arraybuffer.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-65K-arraybuffer.htm
new file mode 100644
index 0000000..64cfc02
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-65K-arraybuffer.htm
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send 65K binary data - ArrayBuffer - Secure WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send 65K binary data on a Secure WebSocket - ArrayBuffer - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send 65K binary data on a Secure WebSocket - ArrayBuffer - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send 65K binary data on a Secure WebSocket - ArrayBuffer - Connection should be closed");
+
+        var data = "";
+        var datasize = 65000;
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.binaryType = "arraybuffer";
+            data = new ArrayBuffer(datasize);
+            wsocket.send(data);
+            assert_equals(datasize, wsocket.bufferedAmount);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_equals(evt.data.byteLength, datasize);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybuffer.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybuffer.htm
new file mode 100644
index 0000000..0e068ff5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybuffer.htm
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send binary data - ArrayBuffer - Secure WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send binary data on a Secure WebSocket - ArrayBuffer - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send binary data on a Secure WebSocket - ArrayBuffer - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send binary data on a Secure WebSocket - ArrayBuffer - Connection should be closed");
+
+        var data = "";
+        var datasize = 15;
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.binaryType = "arraybuffer";
+            data = new ArrayBuffer(datasize);
+            wsocket.send(data);
+            assert_equals(datasize, wsocket.bufferedAmount);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_equals(evt.data.byteLength, datasize);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-float32.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-float32.htm
new file mode 100644
index 0000000..30a8010
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-float32.htm
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send binary data - ArrayBufferView - Float32Array - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Float32Array - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Float32Array - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Float32Array - Connection should be closed");
+
+        var data = "";
+        var datasize = 8;
+        var view;
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.binaryType = "arraybuffer";
+            data = new ArrayBuffer(datasize);
+            view = new Float32Array(data);
+            for(var i = 0; i < 2; i++) {
+                view[i] = i;
+            }
+            wsocket.send(view);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            var resultView = new Float32Array(evt.data);
+            for(var i = 0; i < resultView.length; i++) {
+                assert_equals(resultView[i], view[i], "ArrayBufferView returned is the same");
+            }
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-float64.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-float64.htm
new file mode 100644
index 0000000..1e121a8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-float64.htm
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send binary data - ArrayBufferView - Float32Array - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Float64Array - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Float64Array - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Float64Array - Connection should be closed");
+
+        var data = "";
+        var datasize = 8;
+        var view;
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.binaryType = "arraybuffer";
+            data = new ArrayBuffer(datasize);
+            view = new Float64Array(data);
+            for (var i = 0; i < 1; i++) {
+                view[i] = i;
+            }
+            wsocket.send(view);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            var resultView = new Float64Array(evt.data);
+            for(var i = 0; i < resultView.length; i++) {
+                assert_equals(resultView[i], view[i], "ArrayBufferView returned is the same");
+            }
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-int32.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-int32.htm
new file mode 100644
index 0000000..316c62c9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-int32.htm
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send binary data - ArrayBufferView - Int32Array - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Int32Array - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Int32Array - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Int32Array - Connection should be closed");
+
+        var data = "";
+        var datasize = 8;
+        var view;
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.binaryType = "arraybuffer";
+            data = new ArrayBuffer(datasize);
+            view = new Int32Array(data);
+            for(var i = 0; i < 2; i++) {
+                view[i] = i;
+            }
+            wsocket.send(view);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            var resultView = new Int32Array(evt.data);
+            for(var i = 0; i < resultView.length; i++) {
+                assert_equals(resultView[i], view[i], "ArrayBufferView returned is the same");
+            }
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-uint16-offset-length.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-uint16-offset-length.htm
new file mode 100644
index 0000000..1737d93b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-uint16-offset-length.htm
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send binary data - ArrayBufferView - Uint16Array with offset and length - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Uint16Array with offset and length - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Uint16Array with offset and length - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Uint16Array with offset and length - Connection should be closed");
+
+        var data = "";
+        var datasize = 8;
+        var view;
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.binaryType = "arraybuffer";
+            data = new ArrayBuffer(datasize);
+            view = new Uint16Array(data, 2, 2);
+            for(var i = 0; i < 4; i++) {
+                view[i] = i;
+            }
+            wsocket.send(view);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            var resultView = new Uint16Array(evt.data);
+            for(var i = 0; i < resultView.length; i++) {
+                assert_equals(resultView[i], view[i], "ArrayBufferView returned is the same");
+            }
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-uint32-offset.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-uint32-offset.htm
new file mode 100644
index 0000000..735bae5f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-uint32-offset.htm
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send binary data - ArrayBufferView - Uint32Array with offset - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Uint32Array with offset - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Uint32Array with offset - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Uint32Array with offset - Connection should be closed");
+
+        var data = "";
+        var datasize = 8;
+        var view;
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.binaryType = "arraybuffer";
+            data = new ArrayBuffer(datasize);
+            view = new Uint32Array(data, 0);
+            for(var i = 0; i < 2; i++) {
+                view[i] = i;
+            }
+            wsocket.send(view);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            var resultView = new Uint32Array(evt.data);
+            for(var i = 0; i < resultView.length; i++) {
+                assert_equals(resultView[i], view[i], "ArrayBufferView returned is the same");
+            }
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-uint8-offset-length.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-uint8-offset-length.htm
new file mode 100644
index 0000000..83e14351
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-uint8-offset-length.htm
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send binary data - ArrayBufferView - Uint8Array with offset and length - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Uint8Array with offset and length - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Uint8Array with offset and length - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Uint8Array with offset and length - Connection should be closed");
+
+        var data = "";
+        var datasize = 8;
+        var view;
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.binaryType = "arraybuffer";
+            data = new ArrayBuffer(datasize);
+            view = new Uint8Array(data, 2, 4);
+            for(var i = 0; i < 8; i++) {
+                view[i] = i;
+            }
+            wsocket.send(view);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            var resultView = new Uint8Array(evt.data);
+            for(var i = 0; i < resultView.length; i++) {
+                assert_equals(resultView[i], view[i], "ArrayBufferView returned is the same");
+            }
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-uint8-offset.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-uint8-offset.htm
new file mode 100644
index 0000000..413ec343
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-arraybufferview-uint8-offset.htm
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send binary data - ArrayBufferView - Uint8Array with offset - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Uint8Array with offset - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Uint8Array with offset - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Uint8Array with offset - Connection should be closed");
+
+        var data = "";
+        var datasize = 8;
+    var view;
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.binaryType = "arraybuffer";
+            data = new ArrayBuffer(datasize);
+        view = new Uint8Array(data, 2);
+        for(var i = 0; i < 8; i++) {
+        view[i] = i;
+        }
+            wsocket.send(view);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            var resultView = new Uint8Array(evt.data);
+        for(var i = 0; i < resultView.length; i++) {
+            assert_equals(resultView[i], view[i], "ArrayBufferView returned is the same");
+        }
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-blob.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-blob.htm
new file mode 100644
index 0000000..6d52aa7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-binary-blob.htm
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send binary data - Blob - Secure WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send binary data on a Secure WebSocket - Blob - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send binary data on a Secure WebSocket - Blob - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send binary data on a Secure WebSocket - Blob - Connection should be closed");
+
+        var data = "";
+        var datasize = 65000;
+        var isOpenCalled = false;
+
+        var wsocket = CreateWebSocket(true, false, false);
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.binaryType = "blob";
+            for (var i = 0; i < datasize; i++)
+                data += String.fromCharCode(0);
+            data = new Blob([data]);
+            isOpenCalled = true;
+            wsocket.send(data);
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_true(evt.data instanceof Blob);
+            assert_equals(evt.data.size, datasize);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_true(evt.wasClean, "wasClean should be true");
+            testClose.done();
+        }), true);
+
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-data.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-data.htm
new file mode 100644
index 0000000..d7c1595
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-data.htm
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send data - Secure WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send  data on a Secure WebSocket - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send data on a Secure WebSocket - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send data on a Secure WebSocket - Connection should be closed");
+
+        var data = "Message to send";
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.send(data);
+            assert_equals(data.length, wsocket.bufferedAmount);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_equals(evt.data, data);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-null.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-null.htm
new file mode 100644
index 0000000..0a203359
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-null.htm
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send null data - Secure WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send null data on a Secure WebSocket - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send null data on a Secure WebSocket - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send null data on a Secure WebSocket - Connection should be closed");
+
+        var data = null;
+        var nullReturned = false;
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.send(data);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            if ("null" == evt.data || "" == evt.data)
+                nullReturned = true;
+            assert_true(nullReturned);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-paired-surrogates.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-paired-surrogates.htm
new file mode 100644
index 0000000..959e307d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-paired-surrogates.htm
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send (paired surrogates) data - Secure WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send paired surrogates data on a Secure WebSocket - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send paired surrogates data on a Secure WebSocket - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send paired surrogates data on a Secure WebSocket - Connection should be closed");
+
+        var data = "\uD801\uDC07";
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.send(data);
+            assert_equals(data.length * 2, wsocket.bufferedAmount);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_equals(evt.data, data);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-unicode-data.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-unicode-data.htm
new file mode 100644
index 0000000..42de6416
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-unicode-data.htm
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send unicode data - Secure WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send  unicode data on a Secure WebSocket - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send unicode data on a Secure WebSocket - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send unicode data on a Secure WebSocket - Connection should be closed");
+
+        var data = "¥¥¥¥¥¥";
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.send(data);
+            assert_equals(data.length * 2, wsocket.bufferedAmount);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_equals(evt.data, data);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-unpaired-surrogates.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-unpaired-surrogates.htm
new file mode 100644
index 0000000..11df504
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Secure-Send-unpaired-surrogates.htm
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send unpaired surrogates - Secure WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send unpaired surrogates on a Secure WebSocket - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send unpaired surrogates on a Secure WebSocket - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send unpaired surrogates on a Secure WebSocket - Connection should be closed");
+
+        var data = "\uD807";
+        var replacementChar = "\uFFFD";
+        var wsocket = CreateWebSocket(true, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.send(data);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_equals(evt.data, replacementChar);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-0byte-data.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-0byte-data.htm
new file mode 100644
index 0000000..52ab7ca
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-0byte-data.htm
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send 0 byte data - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send 0 byte data on a WebSocket - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send 0 byte data on a WebSocket - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send 0 byte data on a WebSocket - Connection should be closed");
+
+        var data = "";
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.send(data);
+            assert_equals(data.length, wsocket.bufferedAmount);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_equals(evt.data, data);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-65K-data.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-65K-data.htm
new file mode 100644
index 0000000..7d223403
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-65K-data.htm
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send 65K data - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send 65K data on a WebSocket -  Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send 65K data on a WebSocket - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send 65K data on a WebSocket - Connection should be closed");
+
+        var data = "";
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            for (var i = 0; i < 65000; i++) {
+                data = data + "c";
+            }
+            wsocket.send(data);
+            assert_equals(data.length, wsocket.bufferedAmount);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_equals(evt.data, data);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-Unpaired-Surrogates.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-Unpaired-Surrogates.htm
new file mode 100644
index 0000000..6697e68
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-Unpaired-Surrogates.htm
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send unpaired surrogates - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send unpaired surrogates on a WebSocket - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send unpaired surrogates on a WebSocket - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send unpaired surrogates on a WebSocket - Connection should be closed");
+
+        var data = "\uD807";
+        var replacementChar = "\uFFFD";
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.send(data);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_equals(evt.data, replacementChar);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-before-open.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-before-open.htm
new file mode 100644
index 0000000..1aace54
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-before-open.htm
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send WebSocket - Send before connection in established</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+        test(function () {
+            var wsocket = CreateWebSocket(false, false, false);
+            assert_throws("INVALID_STATE_ERR", function () { wsocket.send("Message to send") });
+        }, "W3C WebSocket API - Send data on a WebSocket before connection is opened - INVALID_STATE_ERR is returned")
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-binary-65K-arraybuffer.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-binary-65K-arraybuffer.htm
new file mode 100644
index 0000000..95c12cf
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-binary-65K-arraybuffer.htm
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send 65K binary data - ArrayBuffer - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send 65K binary data on a WebSocket - ArrayBuffer - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send 65K binary data on a WebSocket - ArrayBuffer - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send 65K binary data on a WebSocket - ArrayBuffer - Connection should be closed");
+
+        var data = "";
+        var datasize = 65000;
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.binaryType = "arraybuffer";
+            data = new ArrayBuffer(datasize);
+            wsocket.send(data);
+            assert_equals(datasize, wsocket.bufferedAmount);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_equals(evt.data.byteLength, datasize);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-binary-arraybuffer.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-binary-arraybuffer.htm
new file mode 100644
index 0000000..b960b92
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-binary-arraybuffer.htm
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send binary data - ArrayBuffer - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBuffer - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBuffer - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBuffer - Connection should be closed");
+
+        var data = "";
+        var datasize = 15;
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.binaryType = "arraybuffer";
+            data = new ArrayBuffer(datasize);
+            wsocket.send(data);
+            assert_equals(datasize, wsocket.bufferedAmount);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_equals(evt.data.byteLength, datasize);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-binary-arraybufferview-int16-offset.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-binary-arraybufferview-int16-offset.htm
new file mode 100644
index 0000000..0ebd3ac
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-binary-arraybufferview-int16-offset.htm
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send binary data - ArrayBufferView - Int16Array with offset - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Int16Array with offset - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Int16Array with offset - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Int16Array with offset - Connection should be closed");
+
+        var data = "";
+        var datasize = 8;
+        var view;
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.binaryType = "arraybuffer";
+            data = new ArrayBuffer(datasize);
+            view = new Int16Array(data, 2);
+            for(var i = 0; i < 4; i++) {
+                view[i] = i;
+            }
+            wsocket.send(view);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            var resultView = new Int16Array(evt.data);
+            for(var i = 0; i < resultView.length; i++) {
+                assert_equals(resultView[i], view[i], "ArrayBufferView returned is the same");
+            }
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-binary-arraybufferview-int8.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-binary-arraybufferview-int8.htm
new file mode 100644
index 0000000..5336a87
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-binary-arraybufferview-int8.htm
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send binary data - ArrayBufferView - Int8Array - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Int8Array - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Int8Array - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send binary data on a WebSocket - ArrayBufferView - Int8Array - Connection should be closed");
+
+        var data = "";
+        var datasize = 8;
+        var int8View;
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.binaryType = "arraybuffer";
+            data = new ArrayBuffer(datasize);
+            int8View = new Int8Array(data);
+            for (var i = 0; i < 8; i++) {
+                int8View[i] = i;
+            }
+            wsocket.send(int8View);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            var resultView = new Int8Array(evt.data);
+            for (var i = 0; i < resultView.length; i++) {
+                assert_equals(resultView[i], int8View[i], "ArrayBufferView returned is the same");
+            }
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-binary-blob.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-binary-blob.htm
new file mode 100644
index 0000000..fa14f4c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-binary-blob.htm
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send binary data - Blob - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send binary data on a WebSocket - Blob - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send binary data on a WebSocket - Blob - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send binary data on a WebSocket - Blob - Connection should be closed");
+
+        var data = "";
+        var datasize = 65000;
+        var isOpenCalled = false;
+
+        var wsocket = CreateWebSocket(false, false, false);
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.binaryType = "blob";
+            for (var i = 0; i < datasize; i++)
+                data += String.fromCharCode(0);
+            data = new Blob([data]);
+            isOpenCalled = true;
+            wsocket.send(data);
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_true(evt.data instanceof Blob);
+            assert_equals(evt.data.size, datasize);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_true(evt.wasClean, "wasClean should be true");
+            testClose.done();
+        }), true);
+
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-data.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-data.htm
new file mode 100644
index 0000000..547a15f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-data.htm
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send data - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send data on a WebSocket - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send data on a WebSocket - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send data on a WebSocket - Connection should be closed");
+
+        var data = "Message to send";
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.send(data);
+            assert_equals(data.length, wsocket.bufferedAmount);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_equals(evt.data, data);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-data.worker.js b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-data.worker.js
new file mode 100644
index 0000000..f607fd7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-data.worker.js
@@ -0,0 +1,21 @@
+importScripts("/resources/testharness.js");
+importScripts('websocket.sub.js')
+
+var data = "test data";
+
+async_test(function(t) {
+
+    var wsocket = CreateWebSocket(false, false, false);
+
+    wsocket.addEventListener('open', function (e) {
+        wsocket.send(data)
+    }, true)
+
+    wsocket.addEventListener('message', t.step_func_done(function(e) {
+            assert_equals(e.data, data);
+            done();
+    }), true);
+
+}, "W3C WebSocket API - Send data on a WebSocket in a Worker")
+
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-null.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-null.htm
new file mode 100644
index 0000000..5b7a6f1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-null.htm
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send null data - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send null data on a WebSocket - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send null data on a WebSocket - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send null data on a WebSocket - Connection should be closed");
+
+        var data = null;
+        var nullReturned = false;
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.send(data);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            if ("null" == evt.data || "" == evt.data)
+                nullReturned = true;
+            assert_true(nullReturned);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-paired-surrogates.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-paired-surrogates.htm
new file mode 100644
index 0000000..4413221
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-paired-surrogates.htm
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send (paired surrogates) data - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send (paired surrogates) data on a WebSocket - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send (paired surrogates) data on a WebSocket - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send (paired surrogates) data on a WebSocket - Connection should be closed");
+
+        var data = "\uD801\uDC07";
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.send(data);
+            assert_equals(data.length * 2, wsocket.bufferedAmount);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_equals(evt.data, data);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-unicode-data.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-unicode-data.htm
new file mode 100644
index 0000000..aba79183
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/Send-unicode-data.htm
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Send unicode data - WebSocket</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Send unicode data on a WebSocket - Connection should be opened");
+        var testMessage = async_test("W3C WebSocket API - Send unicode data on a WebSocket - Message should be received");
+        var testClose = async_test("W3C WebSocket API - Send unicode data on a WebSocket - Connection should be closed");
+
+        var data = "¥¥¥¥¥¥";
+        var wsocket = CreateWebSocket(false, false, false);
+        var isOpenCalled = false;
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            wsocket.send(data);
+            assert_equals(data.length * 2, wsocket.bufferedAmount);
+            isOpenCalled = true;
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('message', testMessage.step_func(function (evt) {
+            assert_equals(evt.data, data);
+            wsocket.close();
+            testMessage.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(isOpenCalled, "WebSocket connection should be open");
+            assert_equals(evt.wasClean, true, "wasClean should be true");
+            testClose.done();
+        }), true);
+    </script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/binary/001.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/binary/001.html
new file mode 100644
index 0000000..4631ebc
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/binary/001.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<title>WebSockets: Send/Receive blob, blob size less than network array buffer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t){
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT + '/echo');
+  var data = "";
+  var datasize = 10;
+  ws.onopen = t.step_func(function(e) {
+   ws.binaryType = "blob";
+   data = new ArrayBuffer(datasize);
+   ws.send(data);
+  })
+  ws.onmessage = t.step_func(function(e) {
+    assert_true(e.data instanceof Blob);
+    assert_equals(e.data.size, datasize);
+    t.done();
+  })
+
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/binary/002.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/binary/002.html
new file mode 100644
index 0000000..f2fa16a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/binary/002.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<title>WebSockets: Send/Receive blob, blob size greater than network array buffer</title>
+<meta name=timeout content=long>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t){
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  var data = "";
+  var datasize = 100000;
+  ws.onopen = t.step_func(function(e) {
+   ws.binaryType = "blob";
+   data = new ArrayBuffer(datasize);
+   ws.send(data);
+  });
+  ws.onmessage = t.step_func(function(e) {
+    assert_true(e.data instanceof Blob);
+    assert_equals(e.data.size, datasize);
+    t.done();
+  });
+
+}, null, {timeout:20000});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/binary/004.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/binary/004.html
new file mode 100644
index 0000000..59b06d7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/binary/004.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<title>WebSockets: Send/Receive ArrayBuffer, size greater than network array buffer</title>
+<meta name=timeout content=long>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t){
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  var data = "";
+  var datasize = 100000;
+  ws.onopen = t.step_func(function(e) {
+   ws.binaryType = "arraybuffer";
+   data = new ArrayBuffer(datasize);
+   ws.send(data);
+  })
+  ws.onmessage = t.step_func(function(e) {
+    assert_equals(e.data.byteLength, datasize);
+    t.done();
+  })
+
+}, null, {timeout:20000});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/binary/005.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/binary/005.html
new file mode 100644
index 0000000..54c1aae
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/binary/005.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<title>WebSockets: Send/Receive ArrayBuffer, size less than network array buffer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t){
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  var data = "";
+  var datasize = 10;
+  ws.onopen = t.step_func(function(e) {
+   ws.binaryType = "arraybuffer";
+   data = new ArrayBuffer(datasize);
+   ws.send(data);
+  });
+  ws.onmessage = t.step_func(function(e) {
+    assert_equals(e.data.byteLength, datasize);
+    t.done();
+  });
+ });
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/binaryType-wrong-value.htm b/third_party/WebKit/LayoutTests/external/wpt/websockets/binaryType-wrong-value.htm
new file mode 100644
index 0000000..2bab671
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/binaryType-wrong-value.htm
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>W3C WebSocket API - Create Secure WebSocket - binaryType is set to something other than blob/arraybuffer</title>
+    <script type="text/javascript" src="/resources/testharness.js"></script>
+    <script type="text/javascript" src="/resources/testharnessreport.js"></script>
+    <script type="text/javascript" src="websocket.sub.js"></script>
+</head>
+<body>
+    <div id="log"></div>
+    <script type="text/javascript">
+
+        var testOpen = async_test("W3C WebSocket API - Create WebSocket - set binaryType to something other than blob or arraybuffer - SYNTAX_ERR is returned - Connection should be opened");
+        var testClose = async_test("W3C WebSocket API - Create WebSocket - set binaryType to something other than blob or arraybuffer - SYNTAX_ERR is returned - Connection should be closed");
+
+        var wsocket = CreateWebSocket(true, false, false);
+
+        wsocket.addEventListener('open', testOpen.step_func(function (evt) {
+            assert_equals(wsocket.binaryType, "blob");
+            wsocket.binaryType = "notBlobOrArrayBuffer";
+            assert_equals(wsocket.binaryType, "blob");
+            wsocket.close();
+            testOpen.done();
+        }), true);
+
+        wsocket.addEventListener('close', testClose.step_func(function (evt) {
+            assert_true(evt.wasClean, "wasClean should be true");
+            testClose.done();
+        }), true);
+
+    </script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/close-invalid.any.js b/third_party/WebKit/LayoutTests/external/wpt/websockets/close-invalid.any.js
new file mode 100644
index 0000000..a930495
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/close-invalid.any.js
@@ -0,0 +1,20 @@
+// META: script=websocket.sub.js
+
+[
+    [0, "0"],
+    [500, "500"],
+    [NaN, "NaN"],
+    ["string", "String"],
+    [null, "null"],
+    [0x10000 + 1000, "2**16+1000"],
+].forEach(function(t) {
+    [true, false].forEach(function(secure) {
+        test(function() {
+            var ws = CreateWebSocket(secure, false, false);
+            assert_throws("InvalidAccessError", function () {
+                ws.close(t[0]);
+            });
+            wsocket.onerror = this.unreached_func();
+        }, t[1] + " on a " + (secure ? "secure" : "insecure") + " websocket");
+    });
+});
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/closing-handshake/002.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/closing-handshake/002.html
new file mode 100644
index 0000000..d3f7ce0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/closing-handshake/002.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<title>WebSockets: server sends closing handshake</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t){
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo_exit');
+  ws.onmessage = ws.onerror = t.unreached_func();
+  ws.onopen = t.step_func(function(e) {
+    ws.send('Goodbye');
+  })
+  ws.onclose = t.step_func(function(e) {
+    assert_equals(e.wasClean, true, 'e.wasClean');
+    ws.onclose = t.unreached_func();
+    t.step_timeout(() => t.done(), 50);
+  });
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/closing-handshake/003.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/closing-handshake/003.html
new file mode 100644
index 0000000..648e77d6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/closing-handshake/003.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<title>WebSockets: client sends closing handshake</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT + '/echo');
+  ws.onmessage = ws.onerror = t.unreached_func();
+  ws.onopen = t.step_func(function(e) {
+    ws.close();
+  });
+  ws.onclose = t.step_func(function(e) {
+    assert_equals(e.code, 1005, 'e.code');
+    assert_equals(e.wasClean, true, 'e.wasClean');
+    ws.onclose = t.unreached_func();
+    t.step_timeout(() => t.done(), 50);
+  });
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/closing-handshake/004.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/closing-handshake/004.html
new file mode 100644
index 0000000..1519a4a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/closing-handshake/004.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<title>WebSockets: data after closing handshake</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo_close_data');
+  ws.onmessage = ws.onerror = t.unreached_func();
+
+  ws.onopen = t.step_func(function(e) {
+    ws.send('Goodbye');
+  })
+
+  ws.onclose = t.step_func(function(e) {
+    assert_equals(e.wasClean, true);
+    ws.onclose = t.unreached_func();
+    t.step_timeout(() => t.done(), 50);
+  })
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constants.js b/third_party/WebKit/LayoutTests/external/wpt/websockets/constants.js
new file mode 100644
index 0000000..8312cd2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constants.js
@@ -0,0 +1,12 @@
+//This file requires server-side substitutions and must be included as constants.js?pipe=sub
+
+var PORT = "{{ports[ws][0]}}";
+//FIXME: Add support for wss
+var PORT_SSL = "{{ports[ws][0]}}";
+
+var SCHEME_DOMAIN_PORT;
+if (location.search == '?wss') {
+  SCHEME_DOMAIN_PORT = 'wss://{{host}}:' + PORT_SSL;
+} else {
+  SCHEME_DOMAIN_PORT = 'ws://{{host}}:' + PORT;
+}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor.html
new file mode 100644
index 0000000..c135b32
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<title>WebSocket constructor</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="websocket.sub.js"></script>
+<div id="log"></div>
+<script>
+test(function() {
+  var ws = new WebSocket("ws://" + __SERVER__NAME + ":" + __PORT + "/" + __PATH,
+                         "echo", "Stray argument")
+  assert_true(ws instanceof WebSocket, "Expected a WebSocket instance.")
+}, "Calling the WebSocket constructor with too many arguments should not throw.")
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/001.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/001.html
new file mode 100644
index 0000000..2a868bf
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/001.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<title>WebSockets: new WebSocket() with no args</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {
+  assert_throws(new TypeError(), function(){new WebSocket()});
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/002.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/002.html
new file mode 100644
index 0000000..94015979
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/002.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<title>WebSockets: new WebSocket(invalid url)</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {assert_throws("SyntaxError", function(){new WebSocket("/test")})});
+test(function() {assert_throws("SyntaxError", function(){new WebSocket("ws://foo bar.com/")})});
+test(function() {assert_throws("SyntaxError", function(){new WebSocket("wss://foo bar.com/")})});
+test(function() {assert_throws("SyntaxError", function(){new WebSocket("http://"+location.host+"/")})});
+test(function() {assert_throws("SyntaxError", function(){new WebSocket("mailto:example@example.org")})});
+test(function() {assert_throws("SyntaxError", function(){new WebSocket("about:blank")})});
+test(function() {assert_throws("SyntaxError", function(){new WebSocket(SCHEME_DOMAIN_PORT+"/#")})});
+test(function() {assert_throws("SyntaxError", function(){new WebSocket(SCHEME_DOMAIN_PORT+"/#test")})});
+test(function() {assert_throws("SyntaxError", function(){new WebSocket("?test")})});
+test(function() {assert_throws("SyntaxError", function(){new WebSocket("#test")})});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/004.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/004.html
new file mode 100644
index 0000000..f358021
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/004.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<title>WebSockets: new WebSocket(url, invalid protocol)</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+// empty string
+test(function() {
+  assert_throws("SyntaxError", function() {
+    new WebSocket(SCHEME_DOMAIN_PORT + '/empty-message', "")
+  })
+});
+
+// chars below U+0020 except U+0000; U+0000 is tested in a separate test
+for (var i = 1; i < 0x20; ++i) {
+  test(function() {
+    assert_throws("SyntaxError", function() {
+      new WebSocket(SCHEME_DOMAIN_PORT + '/empty-message',
+                    "a"+String.fromCharCode(i)+"b")
+    }, 'char code '+i);
+  })
+}
+// some chars above U+007E
+for (var i = 0x7F; i < 0x100; ++i) {
+  test(function() {
+    assert_throws("SyntaxError", function() {
+      new WebSocket(SCHEME_DOMAIN_PORT + '/empty-message',
+                    "a"+String.fromCharCode(i)+"b")
+    }, 'char code '+i);
+  })
+}
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/005.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/005.html
new file mode 100644
index 0000000..63e61ddb
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/005.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<title>WebSockets: return value</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {
+  assert_true(new WebSocket(SCHEME_DOMAIN_PORT + '/empty-message') instanceof WebSocket);
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/006.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/006.html
new file mode 100644
index 0000000..e704229e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/006.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<title>WebSockets: converting first arguments</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var a = document.createElement('a');
+  a.href = SCHEME_DOMAIN_PORT+'/echo';
+  var ws = new WebSocket(a); // should stringify arguments; <a> stringifies to its .href
+  assert_equals(ws.url, a.href);
+  ws.onopen = t.step_func(function(e) {
+    ws.send('test');
+  });
+  ws.onmessage = t.step_func(function(e) {
+    assert_equals(e.data, 'test');
+    ws.onclose = t.step_func(function(e) {
+      ws.onclose = t.unreached_func();
+      t.step_timeout(() => t.done(), 50);
+    });
+    ws.close();
+  });
+  ws.onerror = ws.onclose = t.unreached_func();
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/007.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/007.html
new file mode 100644
index 0000000..6f141a5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/007.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<title>WebSockets: new WebSocket(url, null char)</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {
+  assert_throws("SyntaxError", function() {
+    new WebSocket(SCHEME_DOMAIN_PORT + '/empty-message',
+                  'a' + String.fromCharCode(0) + 'b')
+  })
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/008.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/008.html
new file mode 100644
index 0000000..f425ff0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/008.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>WebSockets: new WebSocket(url with not blocked port)</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+//Pass condition is to not throw
+test(function(){new WebSocket('ws://example.invalid:80/')});
+test(function(){new WebSocket('ws://example.invalid:443/')});
+test(function(){new WebSocket('wss://example.invalid:80/')});
+test(function(){new WebSocket('wss://example.invalid:443/')});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/009.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/009.html
new file mode 100644
index 0000000..7352afa
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/009.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<title>WebSockets: protocol</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/protocol', 'foobar');
+
+  ws.onmessage = t.step_func(function(e) {
+    assert_equals(ws.protocol, 'foobar');
+    ws.onclose = t.step_func(function(e) {
+      ws.onclose = t.unreached_func();
+      t.step_timeout(() => t.done(), 50);
+    })
+    ws.close();
+  })
+  ws.onerror = t.unreached_func();
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/010.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/010.html
new file mode 100644
index 0000000..95ec83d1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/010.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<title>WebSockets: protocol in response but no requested protocol</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/handshake_protocol');
+  ws.onerror = ws.onmessage = ws.onclose = t.step_func(e => assert_unreached(e.type));
+  ws.onopen = t.step_func(function(e) {
+    ws.onclose = t.step_func(function(e) {
+      ws.onclose = t.step_func(e => assert_unreached(e.type));
+      t.step_timeout(() => t.done(), 50);
+    })
+    ws.close();
+  })
+});
+</script>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/011.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/011.html
new file mode 100644
index 0000000..6f55bc0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/011.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<title>WebSockets: protocol mismatch</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/handshake_protocol', 'FOOBAR');
+  var gotOpen = false;
+  var gotError = false;
+  ws.onopen = t.step_func(function(e) {
+    gotOpen = true;
+  })
+  ws.onerror = t.step_func(function(e) {
+    gotError = true;
+  })
+  ws.onclose = t.step_func(function(e) {
+    assert_true(gotOpen, 'got open');
+    assert_true(gotError, 'got error');
+    ws.onclose = t.unreached_func();
+    t.step_timeout(() => t.done(), 50);
+  })
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/012.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/012.html
new file mode 100644
index 0000000..0f68d3e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/012.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<title>WebSockets: no protocol in response</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/handshake_no_protocol', 'foobar');
+  ws.onclose = t.step_func(function(e) {
+    ws.onclose = t.unreached_func();
+    t.step_timeout(() => t.done(), 50);
+  })
+  ws.onmessage = t.unreached_func();
+});
+</script>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/013.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/013.html
new file mode 100644
index 0000000..fe777af
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/013.html
@@ -0,0 +1,41 @@
+<!doctype html>
+<title>WebSockets: multiple WebSocket objects</title>
+<meta name=timeout content=long>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  // test that the events are fired as they should when opening 25 websockets and
+  // sending a message on each and then closing when getting the message back
+  var ws = [];
+  var events = 0;
+  for (var i = 0; i < 25; ++i) {
+    ws[i] = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+    ws[i].id = i;
+    ws[i].onopen = t.step_func(function(e) {
+      events++;
+      this.send(this.id);
+      this.onopen = t.step_func(function() {assert_unreached()});
+    }, ws[i]);
+    ws[i].onmessage = t.step_func(function(e) {
+      events++;
+      assert_equals(e.data, ''+this.id);
+      this.close();
+      this.onmessage = t.step_func(function() {assert_unreached()});
+    }, ws[i]);
+    ws[i].onclose = t.step_func(function(e) {
+      events++;
+      if (events == 75) {
+        t.done();
+      }
+      this.onclose = t.step_func(function() {assert_unreached()});
+    }, ws[i]);
+    ws[i].onerror = t.step_func(function() {assert_unreached()});
+  }
+}, null, {timeout:25000});
+</script>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/014.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/014.html
new file mode 100644
index 0000000..579a5d3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/014.html
@@ -0,0 +1,39 @@
+<!doctype html>
+<title>WebSockets: serialize establish a connection</title>
+<meta name=timeout content=long>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+
+async_test(function(t) {
+  var ws = [];
+  var events = 0;
+  var prevDate;
+  var date;
+  for (var i = 0; i < 4; ++i) {
+    ws[i] = new WebSocket(SCHEME_DOMAIN_PORT+'/handshake_sleep_2');
+    ws[i].id = i;
+    ws[i].onopen = t.step_func(function(e) {
+      events++;
+      date = new Date();
+      if (prevDate) {
+        assert_greater_than(date - prevDate, 1000);
+      }
+      prevDate = date;
+      this.onopen = t.step_func(function() {assert_unreached()});
+    }.bind(ws[i]))
+    ws[i].onclose = t.step_func(function() {
+      events++;
+      if (events == 8) {
+        t.done();
+      }
+      this.onclose = t.step_func(function() {assert_unreached()});
+    }.bind(ws[i]));
+    ws[i].onerror = ws[i].onmessage = t.step_func(function() {assert_unreached()});
+  }
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/016.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/016.html
new file mode 100644
index 0000000..a1bf281
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/016.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<meta charset=windows-1252>
+<title>WebSockets: non-ascii URL in query, document encoding windows-1252</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo-query_v13?åäö');
+  ws.onclose = t.step_func(function() {assert_unreached()});
+  ws.onmessage = t.step_func(function(e) {
+    assert_equals(e.data, '%C3%A5%C3%A4%C3%B6');
+    t.done();
+  });
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/017.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/017.html
new file mode 100644
index 0000000..8a7960d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/017.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<title>WebSockets: too few slashes after ws: and wss:</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var tests = [
+  ['ws:', PORT],
+  ['ws:/', PORT],
+  ['wss:', PORT_SSL],
+  ['wss:/', PORT_SSL]
+];
+//Pass condition is to not throw
+for (var i = 0; i < tests.length; ++i) {
+  test(function(){new WebSocket(tests[i][0] + location.hostname + ':' + tests[i][1] + '/echo')}, tests[i][0]);
+}
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/018.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/018.html
new file mode 100644
index 0000000..d96d4be
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/018.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<title>WebSockets: NULL char in url</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo-query?x\u0000y\u0000');
+  ws.onmessage = t.step_func(function(e) {
+    assert_equals(e.data, 'x%00y');
+    ws.close();
+    t.done();
+  })
+  ws.onclose = ws.onerror = t.step_func(function(e) {assert_unreached(e.type)});
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/019.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/019.html
new file mode 100644
index 0000000..b56745a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/019.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<title>WebSockets: uppercase 'WS:'</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var scheme = SCHEME_DOMAIN_PORT.split('://')[0];
+  var domain = SCHEME_DOMAIN_PORT.split('://')[1];
+  var ws = new WebSocket(scheme.toUpperCase()+'://'+domain+'/echo');
+  ws.onopen = t.step_func(function(e) {
+    ws.close();
+    t.done();
+  })
+  ws.onclose = ws.onerror = ws.onmessage = t.step_func(function() {assert_unreached()});
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/020.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/020.html
new file mode 100644
index 0000000..55ca993
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/020.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<title>WebSockets: uppercase host</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var scheme = SCHEME_DOMAIN_PORT.split('://')[0];
+  var domain = SCHEME_DOMAIN_PORT.split('://')[1];
+  var ws = new WebSocket(scheme+'://'+domain.toUpperCase()+'/echo');
+  ws.onopen = t.step_func(function(e) {
+    ws.close();
+    t.done();
+  });
+  ws.onclose = ws.onerror = ws.onmessage = t.step_func(function() {assert_unreached()});
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/021.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/021.html
new file mode 100644
index 0000000..80156540
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/021.html
@@ -0,0 +1,11 @@
+<!doctype html>
+<title>WebSockets: Same sub protocol twice</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {assert_throws("SyntaxError", function(){new WebSocket("ws://certo2.oslo.osa/protocol_array",["foobar, foobar"])})});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/022.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/022.html
new file mode 100644
index 0000000..690748f5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/constructor/022.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<title>WebSockets: protocol array</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/protocol_array',['foobar','foobar2']);
+  ws.onmessage = t.step_func(function(e) {
+    assert_equals(ws.protocol, 'foobar');
+    ws.onclose = t.step_func(function(e) {
+      ws.onclose = t.unreached_func();
+      t.step_timeout(() => t.done(), 50);
+    });
+    ws.close();
+  });
+  ws.onerror = t.unreached_func();
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/001.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/001.html
new file mode 100644
index 0000000..4f3514a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/001.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<title>WebSockets: Cookie in request</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var cookie_id = ((new Date())-0) + '.' + Math.random();
+async_test(function(t) {
+  if (window.WebSocket) {
+    document.cookie = 'ws_test_'+cookie_id+'=test; Path=/';
+  }
+  t.add_cleanup(function() {
+    // remove cookie
+    document.cookie = 'ws_test_'+cookie_id+'=; Path=/; Expires=Sun, 06 Nov 1994 08:49:37 GMT';
+  });
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo-cookie');
+  ws.onmessage = t.step_func(function(e) {
+    assert_regexp_match(e.data, new RegExp('ws_test_'+cookie_id+'=test'));
+    ws.close();
+    t.done();
+  });
+  ws.onerror = ws.onclose = t.step_func(function(e) {assert_unreached(e.type)});
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/002.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/002.html
new file mode 100644
index 0000000..934d4e9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/002.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<title>WebSockets: Set-Cookie in response</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var cookie_id = ((new Date())-0) + '.' + Math.random();
+async_test(function(t) {
+  t.add_cleanup(function() {
+    // remove cookie
+    document.cookie = 'ws_test_'+cookie_id+'=; Path=/; Expires=Sun, 06 Nov 1994 08:49:37 GMT';
+  });
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/set-cookie?'+cookie_id);
+  ws.onopen = t.step_func(function(e) {
+    assert_regexp_match(document.cookie, new RegExp('ws_test_'+cookie_id+'=test'));
+    ws.close();
+    t.done();
+  });
+  ws.onerror = ws.onclose = t.step_func(function(e) {assert_unreached(e.type)});
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/003.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/003.html
new file mode 100644
index 0000000..eb27437
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/003.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<title>WebSockets: sending HttpOnly cookies in ws request</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+setup({explict_done:true})
+var cookie_id = ((new Date())-0) + '.' + Math.random();
+
+var t = async_test(function(t) {
+  var iframe = document.createElement('iframe');
+  t.add_cleanup(function() {
+    // remove cookie
+    iframe.src = 'support/set-cookie.py?'+encodeURIComponent('ws_test_'+cookie_id+'=; Path=/; HttpOnly; Expires=Sun, 06 Nov 1994 08:49:37 GMT');
+    iframe.onload = done;
+  });
+  iframe.src = 'support/set-cookie.py?'+encodeURIComponent('ws_test_'+cookie_id+'=test; Path=/; HttpOnly');
+  iframe.onload = t.step_func(function() {
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo-cookie');
+    ws.onmessage = t.step_func(function(e) {
+      ws.close();
+      assert_regexp_match(e.data, new RegExp('ws_test_'+cookie_id+'=test'));
+      t.done();
+    });
+    ws.onerror = ws.onclose = t.step_func(function(e) {assert_unreached(e.type)});
+  });
+  document.body.appendChild(iframe);
+}, null, {timeout:9900});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/004.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/004.html
new file mode 100644
index 0000000..c172892b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/004.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<title>WebSockets: setting HttpOnly cookies in ws response, checking document.cookie</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+setup({explicit_done:true})
+var cookie_id = ((new Date())-0) + '.' + Math.random();
+
+var t = async_test(function(t) {
+  var iframe = document.createElement('iframe');
+  t.add_cleanup(function() {
+    // remove cookie
+    iframe.src = 'support/set-cookie.py?'+encodeURIComponent('ws_test_'+cookie_id+'=; Path=/; HttpOnly; Expires=Sun, 06 Nov 1994 08:49:37 GMT');
+    iframe.onload = done;
+  });
+  var url = SCHEME_DOMAIN_PORT+'/set-cookie_http?'+cookie_id;
+  var ws = new WebSocket(url);
+  ws.onopen = t.step_func(function(e) {
+    ws.close();
+    assert_false(new RegExp('ws_test_'+cookie_id+'=test').test(document.cookie));
+    t.done();
+  });
+  ws.onerror = ws.onclose = t.step_func(function(e) {assert_unreached(e.type)});
+  document.body.appendChild(iframe);
+}, null, {timeout:9900})
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/005.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/005.html
new file mode 100644
index 0000000..731fbfa
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/005.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<title>WebSockets: setting HttpOnly cookies in ws response, checking ws request</title>
+<meta name=timeout content=long>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+setup({explicit_done:true})
+var cookie_id = ((new Date())-0) + '.' + Math.random();
+
+var t = async_test(function(t) {
+  var iframe = document.createElement('iframe');
+  t.add_cleanup(function() {
+    // remove cookie
+    iframe.src = 'support/set-cookie.py?'+encodeURIComponent('ws_test_'+cookie_id+'=; Path=/; HttpOnly; Expires=Sun, 06 Nov 1994 08:49:37 GMT');
+    iframe.onload = done;
+  });
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/set-cookie_http?'+cookie_id);
+  ws.onopen = t.step_func(function(e) {
+    var ws2 = new WebSocket(SCHEME_DOMAIN_PORT+'/echo-cookie');
+    ws2.onmessage = t.step_func(function(e) {
+      ws.close();
+      ws2.close();
+      assert_regexp_match(e.data, new RegExp('ws_test_'+cookie_id+'=test'));
+      t.done();
+    });
+  });
+  ws.onerror = ws.onclose = t.step_func(function(e) {assert_unreached(e.type)});
+  document.body.appendChild(iframe);
+})
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/006.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/006.html
new file mode 100644
index 0000000..7e97587
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/006.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<title>WebSockets: setting Secure cookie with document.cookie, checking ws request</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var cookie_id = ((new Date())-0) + '.' + Math.random();
+async_test(function(t) {
+  if (window.WebSocket) {
+    document.cookie = 'ws_test_'+cookie_id+'=test; Path=/; Secure';
+  }
+  t.add_cleanup(function() {
+    // remove cookie
+    document.cookie = 'ws_test_'+cookie_id+'=; Path=/; Secure; Expires=Sun, 06 Nov 1994 08:49:37 GMT';
+  });
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo-cookie');
+  ws.onmessage = t.step_func(function(e) {
+    ws.close();
+    if (SCHEME_DOMAIN_PORT.substr(0,3) == 'wss') {
+      assert_regexp_match(e.data, new RegExp('ws_test_'+cookie_id+'=test'));
+    } else {
+      assert_false(new RegExp('ws_test_'+cookie_id+'=test').test(e.data));
+    }
+    t.done();
+  })
+  ws.onerror = ws.onclose = t.step_func(function(e) {assert_unreached(e.type)});
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/007.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/007.html
new file mode 100644
index 0000000..f4fc8c6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/007.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<title>WebSockets: when to process set-cookie fields in ws response</title>
+<meta name=timeout content=long>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var cookie_id = ((new Date())-0) + '.' + Math.random();
+async_test(function(t) {
+  t.add_cleanup(function() {
+    // remove cookie
+    document.cookie = 'ws_test_'+cookie_id+'; Path=/; Expires=Sun, 06 Nov 1994 08:49:37 GMT';
+  });
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/set-cookie?'+cookie_id);
+  ws.onopen = t.step_func(function(e) {
+    ws.close();
+    assert_regexp_match(document.cookie, new RegExp('ws_test_'+cookie_id+'=test'));
+    t.done();
+  });
+  ws.onerror = ws.onclose = t.step_func(function() {assert_unreached()});
+
+  // sleep for 2 seconds with sync xhr
+  var sleep = new XMLHttpRequest();
+  sleep.open('GET', '/common/blank.html?pipe=trickle(d2)', false);
+  sleep.send(null);
+
+  if (new RegExp('ws_test_'+cookie_id+'=test').test(document.cookie)) {
+    assert_unreached('cookie was set during script execution');
+  }
+}, null, {timeout:12000});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/support/set-cookie.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/support/set-cookie.py
new file mode 100644
index 0000000..8a47d7c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/cookies/support/set-cookie.py
@@ -0,0 +1,5 @@
+import urllib
+
+def main(request, response):
+    response.headers.set('Set-Cookie', urllib.unquote(request.url_parts.query))
+    return [("Content-Type", "text/plain")], ""
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/eventhandlers.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/eventhandlers.html
new file mode 100644
index 0000000..95aeb0b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/eventhandlers.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<title>WebSocket event handlers</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="websocket.sub.js"></script>
+<div id="log"></div>
+<script>
+function testEventHandler(name) {
+  test(function() {
+    var ws = new WebSocket("ws://" + __SERVER__NAME + ":" + __PORT + "/" + __PATH,
+                           "echo")
+    assert_equals(ws["on" + name], null);
+    ws["on" + name] = function() {};
+    ws["on" + name] = 2;
+    assert_equals(ws["on" + name], null);
+  }, "Event handler for " + name + " should have [TreatNonCallableAsNull]")
+}
+["open", "error", "close", "message"].forEach(testEventHandler);
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/extended-payload-length.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/extended-payload-length.html
new file mode 100644
index 0000000..9e586a98
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/extended-payload-length.html
@@ -0,0 +1,67 @@
+<!doctype html>
+<title>WebSockets : Boundary-value tests for the 'Extended payload length' field in RFC6455 section5.2 'Base Framing Protocol'</title>
+<meta name=timeout content=long>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t){
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+    var datasize = 125;
+    var data = null;
+    ws.onopen = t.step_func(function(e) {
+        data = new Array(datasize + 1).join('a');
+        ws.send(data);
+    });
+    ws.onmessage = t.step_func(function(e) {
+        assert_equals(e.data, data);
+        t.done();
+    });
+}, "Application data is 125 byte which means any 'Extended payload length' field isn't used at all.", {timeout:20000});
+
+async_test(function(t){
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+    var datasize = 126;
+    var data = null;
+    ws.onopen = t.step_func(function(e) {
+        data = new Array(datasize + 1).join('a');
+        ws.send(data);
+    });
+    ws.onmessage = t.step_func(function(e) {
+        assert_equals(e.data, data);
+        t.done();
+    });
+}, "Application data is 126 byte which starts to use the 16 bit 'Extended payload length' field.", {timeout:20000});
+
+async_test(function(t){
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+    var datasize = 0xFFFF;
+    var data = null;
+    ws.onopen = t.step_func(function(e) {
+        data = new Array(datasize + 1).join('a');
+        ws.send(data);
+    });
+    ws.onmessage = t.step_func(function(e) {
+        assert_equals(e.data, data);
+        t.done();
+    });
+}, "Application data is 0xFFFF byte which means the upper bound of the 16 bit 'Extended payload length' field.", {timeout:20000});
+
+async_test(function(t){
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+    var datasize = 0xFFFF + 1;
+    var data = null;
+    ws.onopen = t.step_func(function(e) {
+        data = new Array(datasize + 1).join('a');
+        ws.send(data);
+    });
+    ws.onmessage = t.step_func(function(e) {
+        assert_equals(e.data, data);
+        t.done();
+    });
+}, "Application data is (0xFFFF + 1) byte which starts to use the 64 bit 'Extended payload length' field", {timeout:20000});
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo-cookie_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo-cookie_wsh.py
new file mode 100755
index 0000000..367d031
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo-cookie_wsh.py
@@ -0,0 +1,12 @@
+#!/usr/bin/python
+
+from mod_pywebsocket import msgutil
+
+def web_socket_do_extra_handshake(request):
+    request.ws_cookie = request.headers_in.get('Cookie')
+
+def web_socket_transfer_data(request):
+    if request.ws_cookie is not None:
+        msgutil.send_message(request, request.ws_cookie)
+    else:
+        msgutil.send_message(request, '(none)')
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo-query_v13_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo-query_v13_wsh.py
new file mode 100755
index 0000000..4083c49
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo-query_v13_wsh.py
@@ -0,0 +1,11 @@
+#!/usr/bin/python
+
+from mod_pywebsocket import msgutil, util
+
+def web_socket_do_extra_handshake(request):
+    pass
+
+def web_socket_transfer_data(request):
+    while True:
+        msgutil.send_message(request, request.unparsed_uri.split('?')[1] or '')
+        return
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo-query_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo-query_wsh.py
new file mode 100755
index 0000000..8fd7ac3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo-query_wsh.py
@@ -0,0 +1,9 @@
+#!/usr/bin/python
+
+from mod_pywebsocket import msgutil, util
+
+def web_socket_do_extra_handshake(request):
+    pass  # Always accept.
+
+def web_socket_transfer_data(request):
+    msgutil.send_message(request, request.unparsed_uri.split('?', 1)[1] or '')
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo_close_data_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo_close_data_wsh.py
new file mode 100755
index 0000000..4da4ce61
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo_close_data_wsh.py
@@ -0,0 +1,22 @@
+#!/usr/bin/python
+from mod_pywebsocket import msgutil
+
+_GOODBYE_MESSAGE = u'Goodbye'
+
+def web_socket_do_extra_handshake(request):
+    # This example handler accepts any request. See origin_check_wsh.py for how
+    # to reject access from untrusted scripts based on origin value.
+
+    pass  # Always accept.
+
+
+def web_socket_transfer_data(request):
+    while True:
+        line = request.ws_stream.receive_message()
+        if line is None:
+            return
+        if isinstance(line, unicode):
+            if line == _GOODBYE_MESSAGE:
+                return
+                request.ws_stream.send_message(line, binary=False)
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo_exit_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo_exit_wsh.py
new file mode 100755
index 0000000..200b92e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo_exit_wsh.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+from mod_pywebsocket import msgutil
+
+_GOODBYE_MESSAGE = u'Goodbye'
+
+def web_socket_do_extra_handshake(request):
+    # This example handler accepts any request. See origin_check_wsh.py for how
+    # to reject access from untrusted scripts based on origin value.
+
+    pass  # Always accept.
+
+
+def web_socket_transfer_data(request):
+    while True:
+        line = request.ws_stream.receive_message()
+        if line is None:
+            return
+        if isinstance(line, unicode):
+            if line == _GOODBYE_MESSAGE:
+                return
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo_raw_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo_raw_wsh.py
new file mode 100755
index 0000000..c3a030c9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo_raw_wsh.py
@@ -0,0 +1,15 @@
+#!/usr/bin/python
+
+from mod_pywebsocket import msgutil
+import urllib
+
+
+def web_socket_do_extra_handshake(request):
+    pass  # Always accept.
+
+def web_socket_transfer_data(request):
+    while True:
+        line = msgutil.receive_message(request)
+        if line == 'exit':
+            return
+        request.connection.write(line.decode("string-escape"))
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo_wsh.py
new file mode 100755
index 0000000..41bcd16
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/echo_wsh.py
@@ -0,0 +1,36 @@
+#!/usr/bin/python
+from mod_pywebsocket import msgutil
+from mod_pywebsocket import common
+
+_GOODBYE_MESSAGE = u'Goodbye'
+
+def web_socket_do_extra_handshake(request):
+    # This example handler accepts any request. See origin_check_wsh.py for how
+    # to reject access from untrusted scripts based on origin value.
+    if request.ws_requested_protocols:
+        if "echo" in request.ws_requested_protocols:
+            request.ws_protocol = "echo"
+
+
+def web_socket_transfer_data(request):
+    while True:
+        line = request.ws_stream.receive_message()
+        if line is None:
+            return
+        if isinstance(line, unicode):
+            request.ws_stream.send_message(line, binary=False)
+            if line == _GOODBYE_MESSAGE:
+                return
+        else:
+            request.ws_stream.send_message(line, binary=True)
+
+def web_socket_passive_closing_handshake(request):
+    # Echo close status code and reason
+    code, reason = request.ws_close_code, request.ws_close_reason
+
+    # No status received is a reserved pseudo code representing an empty code,
+    # so echo back an empty code in this case.
+    if code == common.STATUS_NO_STATUS_RECEIVED:
+        code = None
+
+    return code, reason
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/empty-message_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/empty-message_wsh.py
new file mode 100755
index 0000000..0eb107f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/empty-message_wsh.py
@@ -0,0 +1,13 @@
+#!/usr/bin/python
+
+from mod_pywebsocket import msgutil
+
+def web_socket_do_extra_handshake(request):
+    pass  # Always accept.
+
+def web_socket_transfer_data(request):
+    line = msgutil.receive_message(request)
+    if line == "":
+        msgutil.send_message(request, 'pass')
+    else:
+        msgutil.send_message(request, 'fail')
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/handshake_no_protocol_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/handshake_no_protocol_wsh.py
new file mode 100755
index 0000000..3e6b8e6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/handshake_no_protocol_wsh.py
@@ -0,0 +1,12 @@
+#!/usr/bin/python
+
+from mod_pywebsocket import common, msgutil, util
+from mod_pywebsocket.handshake import hybi
+
+def web_socket_do_extra_handshake(request):
+    request.connection.write('HTTP/1.1 101 Switching Protocols:\x0D\x0AConnection: Upgrade\x0D\x0AUpgrade: WebSocket\x0D\x0ASec-WebSocket-Origin: '+request.ws_origin+'\x0D\x0ASec-WebSocket-Accept: '+hybi.compute_accept(request.headers_in.get(common.SEC_WEBSOCKET_KEY_HEADER))[0]+'\x0D\x0A\x0D\x0A')
+    return
+
+def web_socket_transfer_data(request):
+    while True:
+        return
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/handshake_protocol_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/handshake_protocol_wsh.py
new file mode 100755
index 0000000..d3ebb27
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/handshake_protocol_wsh.py
@@ -0,0 +1,12 @@
+#!/usr/bin/python
+
+from mod_pywebsocket import common, msgutil, util
+from mod_pywebsocket.handshake import hybi
+
+def web_socket_do_extra_handshake(request):
+    request.connection.write('HTTP/1.1 101 Switching Protocols:\x0D\x0AConnection: Upgrade\x0D\x0AUpgrade: WebSocket\x0D\x0ASec-WebSocket-Protocol: foobar\x0D\x0ASec-WebSocket-Origin: '+request.ws_origin+'\x0D\x0ASec-WebSocket-Accept: '+hybi.compute_accept(request.headers_in.get(common.SEC_WEBSOCKET_KEY_HEADER))[0]+'\x0D\x0A\x0D\x0A')
+    return
+
+def web_socket_transfer_data(request):
+    while True:
+        return
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/handshake_sleep_2_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/handshake_sleep_2_wsh.py
new file mode 100755
index 0000000..3367ed8f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/handshake_sleep_2_wsh.py
@@ -0,0 +1,10 @@
+#!/usr/bin/python
+
+from mod_pywebsocket import msgutil
+import time
+
+def web_socket_do_extra_handshake(request):
+    time.sleep(2)
+
+def web_socket_transfer_data(request):
+    pass
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/invalid_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/invalid_wsh.py
new file mode 100755
index 0000000..886e970b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/invalid_wsh.py
@@ -0,0 +1,9 @@
+#!/usr/bin/python
+
+from mod_pywebsocket import msgutil
+
+def web_socket_do_extra_handshake(request):
+    request.connection.write("FOO BAR BAZ\r\n\r\n")
+
+def web_socket_transfer_data(request):
+    pass
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/origin_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/origin_wsh.py
new file mode 100755
index 0000000..ce5f3a7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/origin_wsh.py
@@ -0,0 +1,11 @@
+#!/usr/bin/python
+
+from mod_pywebsocket import msgutil
+
+
+def web_socket_do_extra_handshake(request):
+    pass # Always accept.
+
+
+def web_socket_transfer_data(request):
+    msgutil.send_message(request, request.ws_origin)
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/protocol_array_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/protocol_array_wsh.py
new file mode 100755
index 0000000..5d46c58
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/protocol_array_wsh.py
@@ -0,0 +1,14 @@
+#!/usr/bin/python
+
+from mod_pywebsocket import msgutil, util
+
+def web_socket_do_extra_handshake(request):
+    line = request.headers_in.get('Sec-WebSocket-Protocol')
+    request.ws_protocol = line.split(',', 1)[0]
+
+#pass
+
+def web_socket_transfer_data(request):
+    while True:
+        msgutil.send_message(request, request.ws_protocol)
+        return
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/protocol_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/protocol_wsh.py
new file mode 100755
index 0000000..96a4525
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/protocol_wsh.py
@@ -0,0 +1,12 @@
+#!/usr/bin/python
+
+from mod_pywebsocket import msgutil, util
+
+def web_socket_do_extra_handshake(request):
+    request.ws_protocol = request.headers_in.get('Sec-WebSocket-Protocol')
+#pass
+
+def web_socket_transfer_data(request):
+    while True:
+        msgutil.send_message(request, request.ws_protocol)
+        return
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/set-cookie-secure_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/set-cookie-secure_wsh.py
new file mode 100755
index 0000000..0daf728
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/set-cookie-secure_wsh.py
@@ -0,0 +1,15 @@
+#!/usr/bin/python
+import urlparse
+
+from mod_pywebsocket import common, msgutil, util
+from mod_pywebsocket.handshake import hybi
+
+
+def web_socket_do_extra_handshake(request):
+    url_parts = urlparse.urlsplit(request.uri)
+    request.connection.write('HTTP/1.1 101 Switching Protocols:\x0D\x0AConnection: Upgrade\x0D\x0AUpgrade: WebSocket\x0D\x0ASet-Cookie: ws_test_'+(url_parts.query or '')+'=test; Secure; Path=/\x0D\x0ASec-WebSocket-Origin: '+request.ws_origin+'\x0D\x0ASec-WebSocket-Accept: '+hybi.compute_accept(request.headers_in.get(common.SEC_WEBSOCKET_KEY_HEADER))[0]+'\x0D\x0A\x0D\x0A')
+    return
+
+def web_socket_transfer_data(request):
+    while True:
+        return
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/set-cookie_http_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/set-cookie_http_wsh.py
new file mode 100755
index 0000000..1478424
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/set-cookie_http_wsh.py
@@ -0,0 +1,14 @@
+#!/usr/bin/python
+
+from mod_pywebsocket import common, msgutil, util
+from mod_pywebsocket.handshake import hybi
+import urlparse
+
+def web_socket_do_extra_handshake(request):
+    url_parts = urlparse.urlsplit(request.uri)
+    request.connection.write('HTTP/1.1 101 Switching Protocols:\x0D\x0AConnection: Upgrade\x0D\x0AUpgrade: WebSocket\x0D\x0ASet-Cookie: ws_test_'+(url_parts.query or '')+'=test; Path=/; HttpOnly\x0D\x0ASec-WebSocket-Origin: '+request.ws_origin+'\x0D\x0ASec-WebSocket-Accept: '+hybi.compute_accept(request.headers_in.get(common.SEC_WEBSOCKET_KEY_HEADER))[0]+'\x0D\x0A\x0D\x0A')
+    return
+
+def web_socket_transfer_data(request):
+    while True:
+        return
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/set-cookie_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/set-cookie_wsh.py
new file mode 100755
index 0000000..b0e6504
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/set-cookie_wsh.py
@@ -0,0 +1,15 @@
+#!/usr/bin/python
+import urlparse
+
+from mod_pywebsocket import common, msgutil, util
+from mod_pywebsocket.handshake import hybi
+
+
+def web_socket_do_extra_handshake(request):
+    url_parts = urlparse.urlsplit(request.uri)
+    request.connection.write('HTTP/1.1 101 Switching Protocols:\x0D\x0AConnection: Upgrade\x0D\x0AUpgrade: WebSocket\x0D\x0ASet-Cookie: ws_test_'+(url_parts.query or '')+'=test; Path=/\x0D\x0ASec-WebSocket-Origin: '+request.ws_origin+'\x0D\x0ASec-WebSocket-Accept: '+hybi.compute_accept(request.headers_in.get(common.SEC_WEBSOCKET_KEY_HEADER))[0]+'\x0D\x0A\x0D\x0A')
+    return
+
+def web_socket_transfer_data(request):
+    while True:
+        return
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/simple_handshake_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/simple_handshake_wsh.py
new file mode 100755
index 0000000..0750099
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/simple_handshake_wsh.py
@@ -0,0 +1,13 @@
+#!/usr/bin/python
+
+from mod_pywebsocket import common, msgutil, util
+from mod_pywebsocket.handshake import hybi
+
+
+def web_socket_do_extra_handshake(request):
+    request.connection.write('HTTP/1.1 101 Switching Protocols:\x0D\x0AConnection: Upgrade\x0D\x0AUpgrade: WebSocket\x0D\x0ASet-Cookie: ws_test=test\x0D\x0ASec-WebSocket-Origin: '+request.ws_origin+'\x0D\x0ASec-WebSocket-Accept: '+hybi.compute_accept(request.headers_in.get(common.SEC_WEBSOCKET_KEY_HEADER))[0]+'\x0D\x0A\x0D\x0A')
+    return
+
+def web_socket_transfer_data(request):
+    while True:
+        return
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/sleep_10_v13_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/sleep_10_v13_wsh.py
new file mode 100755
index 0000000..e1a6d964
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/sleep_10_v13_wsh.py
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+
+import sys, urllib, time
+from mod_pywebsocket import common, msgutil, util
+
+def web_socket_do_extra_handshake(request):
+    request.connection.write('x')
+    time.sleep(2)
+    request.connection.write('x')
+    time.sleep(2)
+    request.connection.write('x')
+    time.sleep(2)
+    request.connection.write('x')
+    time.sleep(2)
+    request.connection.write('x')
+    time.sleep(2)
+    return
+
+def web_socket_transfer_data(request):
+    while True:
+        line = msgutil.receive_message(request)
+        if line == 'Goodbye':
+            return
+        request.ws_stream.send_message(line, binary=False)
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/stash_responder_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/stash_responder_wsh.py
new file mode 100755
index 0000000..bc6f4fd6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/stash_responder_wsh.py
@@ -0,0 +1,45 @@
+#!/usr/bin/python
+import urlparse, json
+from mod_pywebsocket import common, msgutil, util
+from mod_pywebsocket.handshake import hybi
+from wptserve import stash
+
+address, authkey = stash.load_env_config()
+stash = stash.Stash("/stash_responder", address=address, authkey=authkey)
+
+def web_socket_do_extra_handshake(request):
+    return
+
+def web_socket_transfer_data(request):
+    while True:
+        line = request.ws_stream.receive_message()
+        if line == "echo":
+            query = request.unparsed_uri.split('?')[1]
+            GET = dict(urlparse.parse_qsl(query))
+
+            # TODO(kristijanburnik): This code should be reused from
+            # /mixed-content/generic/expect.py or implemented more generally
+            # for other tests.
+            path = GET.get("path", request.unparsed_uri.split('?')[0])
+            key = GET["key"]
+            action = GET["action"]
+
+            if action == "put":
+              value = GET["value"]
+              stash.take(key=key, path=path)
+              stash.put(key=key, value=value, path=path)
+              response_data = json.dumps({"status": "success", "result": key})
+            elif action == "purge":
+             value = stash.take(key=key, path=path)
+             response_data = json.dumps({"status": "success", "result": value})
+            elif action == "take":
+              value = stash.take(key=key, path=path)
+              if value is None:
+                  status = "allowed"
+              else:
+                  status = "blocked"
+              response_data = json.dumps({"status": status, "result": value})
+
+            msgutil.send_message(request, response_data)
+
+            return
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/wrong_accept_key_wsh.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/wrong_accept_key_wsh.py
new file mode 100755
index 0000000..f504a81
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/handlers/wrong_accept_key_wsh.py
@@ -0,0 +1,13 @@
+#!/usr/bin/python
+
+import sys, urllib, time
+from mod_pywebsocket import common, msgutil, util
+
+def web_socket_do_extra_handshake(request):
+    request.connection.write('HTTP/1.1 101 Switching Protocols:\x0D\x0AConnection: Upgrade\x0D\x0AUpgrade: WebSocket\x0D\x0ASec-WebSocket-Origin: '+request.ws_origin+'\x0D\x0ASec-WebSocket-Accept: thisisawrongacceptkey\x0D\x0A\x0D\x0A')
+    return
+
+def web_socket_transfer_data(request):
+    while True:
+        request.ws_stream.send_message('test', binary=False)
+        return
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/CloseEvent/clean-close.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/CloseEvent/clean-close.html
new file mode 100644
index 0000000..acc71851
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/CloseEvent/clean-close.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<title>WebSockets: wasClean, true</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  ws.onopen = t.step_func(function(e) {
+    ws.send('Test');
+  });
+  ws.onmessage = t.step_func(function(e) {
+    ws.close();
+  });
+  ws.onclose = t.step_func(function(e) {
+    assert_equals(e.wasClean,true);
+    t.done();
+  });
+}, null, {timeout:2000});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/CloseEvent/constructor.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/CloseEvent/constructor.html
new file mode 100644
index 0000000..1ed86bd
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/CloseEvent/constructor.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>CloseEvent: constructor</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id=log></div>
+<script>
+test(function() {
+  var event = new CloseEvent("foo");
+  assert_true(event instanceof CloseEvent, "should be a CloseEvent");
+  assert_equals(event.type, "foo");
+  assert_false(event.bubbles, "bubbles");
+  assert_false(event.cancelable, "cancelable");
+  assert_false(event.wasClean, "wasClean");
+  assert_equals(event.code, 0);
+  assert_equals(event.reason, "");
+}, "new CloseEvent() without dictionary");
+
+test(function() {
+  var event = new CloseEvent("foo", {
+    bubbles: true,
+    cancelable: true,
+    wasClean: true,
+    code: 7,
+    reason: "x",
+  });
+  assert_true(event instanceof CloseEvent, "should be a CloseEvent");
+  assert_equals(event.type, "foo");
+  assert_true(event.bubbles, "bubbles");
+  assert_true(event.cancelable, "cancelable");
+  assert_true(event.wasClean, "wasClean");
+  assert_equals(event.code, 7);
+  assert_equals(event.reason, "x");
+}, "new CloseEvent() with dictionary");
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/CloseEvent/historical.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/CloseEvent/historical.html
new file mode 100644
index 0000000..24528a86
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/CloseEvent/historical.html
@@ -0,0 +1,12 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>CloseEvent: historical initialization</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id=log></div>
+<script>
+test(function() {
+  assert_false("initCloseEvent" in CloseEvent.prototype);
+  assert_false("initCloseEvent" in new CloseEvent('close'));
+}, "initCloseEvent");
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer.html
new file mode 100644
index 0000000..faf0978
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>WebSockets: bufferedAmount for ArrayBuffer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  var datasize = 10;
+  ws.onopen = t.step_func(function(e) {
+    ws.binaryType = "arraybuffer";
+    var data = new ArrayBuffer(datasize);
+    ws.send(data);
+    assert_equals(ws.bufferedAmount, data.byteLength);
+  })
+  ws.onmessage = t.step_func(function(e) {
+    assert_equals(e.data.byteLength, datasize);
+    t.done();
+  })
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob.html
new file mode 100644
index 0000000..3af1d93
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>WebSockets: bufferedAmount for blob</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  var datasize = 10;
+  ws.onopen = t.step_func(function(e) {
+    ws.binaryType = "blob";
+    var data = new ArrayBuffer(datasize);
+    ws.send(data);
+    assert_equals(ws.bufferedAmount, data.byteLength);
+  });
+  ws.onmessage = t.step_func(function(e) {
+    assert_true(e.data instanceof Blob);
+    assert_equals(e.data.size, datasize);
+    t.done();
+  });
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-getter.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-getter.html
new file mode 100644
index 0000000..a6bd5301
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-getter.html
@@ -0,0 +1,18 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>WebSockets: defineProperty getter for bufferedAmount</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function(){
+  Object.defineProperty(WebSocket.prototype, 'bufferedAmount', {
+    get: function() { return 'foo'; }
+  });
+  var ws = new WebSocket('ws://example.invalid/');
+  assert_equals(ws.bufferedAmount, 'foo');
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-setter.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-setter.html
new file mode 100644
index 0000000..feddfb90
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-setter.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>WebSockets: defineProperty setter for bufferedAmount</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {
+  window.setter_ran = false;
+  Object.defineProperty(WebSocket.prototype, 'bufferedAmount', {
+    set: function(v) { window[v] = true; }
+  });
+  var ws = new WebSocket('ws://example.invalid/');
+  ws.bufferedAmount = 'setter_ran';
+  assert_true(setter_ran);
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-deleting.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-deleting.html
new file mode 100644
index 0000000..68c47e4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-deleting.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>WebSockets: delete bufferedAmount</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function(){
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  assert_equals(ws.bufferedAmount, 0, 'after creation');
+  ws.close();
+  delete ws.bufferedAmount;
+  assert_equals(ws.bufferedAmount, 0,
+                'after attempt to delete ws.bufferedAmount');
+  delete WebSocket.prototype.bufferedAmount;
+  assert_equals(ws.bufferedAmount, undefined,
+                'after attempt to delete WebSocket.prototype.bufferedAmount');
+});
+</script>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-getting.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-getting.html
new file mode 100644
index 0000000..0398b0a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-getting.html
@@ -0,0 +1,53 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>WebSockets: bufferedAmount after send()ing</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t){
+  // bufferedAmount should increase sync in the send() method and decrease between
+  // events in the event loop (so never while script is running).
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  ws.onopen = t.step_func(function(e) {
+    ws.send('x');
+    assert_equals(ws.bufferedAmount, 1, 'bufferedAmount after sent "x"');
+    ws.send('\u00E5');
+    assert_equals(ws.bufferedAmount, 1+2, 'bufferedAmount after sent "x", "\u00E5"');
+    ws.send('\u5336');
+    assert_equals(ws.bufferedAmount, 1+2+3, 'bufferedAmount after sent "x", "\u00E5", "\u5336"');
+    ws.send('\uD801\uDC7E');
+    assert_equals(ws.bufferedAmount, 1+2+3+4, 'bufferedAmount after sent "x", "\u00E5", "\u5336", "\uD801\uDC7E"');
+  })
+  var i = 0;
+  ws.onmessage = t.step_func(function(e) {
+    i++;
+    switch(i) {
+      case 1:
+        assert_equals(e.data, 'x');
+        assert_true(ws.bufferedAmount < 2+3+4 + 1, 'bufferedAmount after received "x"');
+        break;
+      case 2:
+        assert_equals(e.data, '\u00E5');
+        assert_true(ws.bufferedAmount < 3+4 + 1, 'bufferedAmount after received "x", "\u00E5"');
+        break;
+      case 3:
+        assert_equals(e.data, '\u5336');
+        assert_true(ws.bufferedAmount < 4 + 1, 'bufferedAmount after received "x", "\u00E5", "\u5336"');
+        break;
+      case 4:
+        assert_equals(e.data, '\uD801\uDC7E');
+        assert_equals(ws.bufferedAmount, 0, 'bufferedAmount after received "x", "\u00E5", "\u5336", "\uD801\uDC7E"');
+        t.done();
+        break;
+      default:
+        assert_unreached(i);
+    }
+  })
+  ws.onerror = ws.onclose = t.step_func(function() {assert_unreached()});
+});
+</script>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-initial.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-initial.html
new file mode 100644
index 0000000..55e9cf9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-initial.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>WebSockets: getting bufferedAmount</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function(){
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  assert_equals(ws.bufferedAmount, 0);
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-large.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-large.html
new file mode 100644
index 0000000..6774237
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-large.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>WebSockets: bufferedAmount for 65K data</title>
+<meta name=timeout content=long>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  var data = "";
+  ws.onopen = t.step_func(function(e) {
+    for (var i = 0; i < 65000; i++) {
+      data = data + "x";
+    }
+    ws.send(data);
+    assert_equals(data.length, ws.bufferedAmount);
+  });
+  ws.onmessage = t.step_func(function(e) {
+    assert_equals(e.data, data);
+    t.done();
+  })
+}, null, {timeout:20000});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-readonly.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-readonly.html
new file mode 100644
index 0000000..8200b75
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-readonly.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>WebSockets: setting bufferedAmount</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function(){
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  ws.bufferedAmount = 5;
+  assert_equals(ws.bufferedAmount, 0);
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-unicode.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-unicode.html
new file mode 100644
index 0000000..49b1330
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-unicode.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>WebSockets: bufferedAmount for unicode data</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  var data = "¥¥¥¥¥¥";
+  ws.onopen = t.step_func(function(e) {
+    ws.send(data);
+    assert_equals(data.length * 2, ws.bufferedAmount);
+  });
+  ws.onmessage = t.step_func(function(e) {
+    assert_equals(e.data, data);
+    t.done();
+  });
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-basic.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-basic.html
new file mode 100644
index 0000000..ab6c93b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-basic.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<title>WebSockets: close()</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  ws.onclose = t.step_func(function(e) {
+    assert_equals(e instanceof CloseEvent, true, 'e instanceof CloseEvent');
+    assert_equals(e.wasClean, false, 'e.wasClean');
+    e.wasClean = true;
+    assert_equals(e.wasClean, false, 'e.wasClean = true');
+    delete e.wasClean;
+    assert_equals(e.wasClean, false, 'delete e.wasClean');
+    delete CloseEvent.prototype.wasClean;
+    assert_equals(e.wasClean, undefined, 'delete CloseEvent.prototype.wasClean');
+    t.done();
+  });
+  ws.close();
+  assert_equals(ws.readyState, ws.CLOSING);
+}, undefined, {timeout:9900});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-connecting.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-connecting.html
new file mode 100644
index 0000000..009d6b06
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-connecting.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<title>WebSockets: close() when connecting</title>
+<meta name=timeout content=long>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/sleep_10_v13');
+  t.step_timeout(function() {
+    assert_equals(ws.readyState, ws.CONNECTING);
+    ws.close();
+    assert_equals(ws.readyState, ws.CLOSING);
+    ws.onclose = t.step_func(function(e) {
+      assert_equals(ws.readyState, ws.CLOSED);
+      assert_equals(e.wasClean, false);
+      t.done();
+    });
+  }, 1000);
+  ws.onopen = ws.onclose = t.unreached_func();
+}, undefined, {timeout:12000});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-multiple.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-multiple.html
new file mode 100644
index 0000000..c6da41a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-multiple.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<title>WebSockets: close() several times</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var i = 0;
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  ws.onclose = t.step_func(function(e) {
+    i++;
+  });
+  ws.close();
+  ws.close();
+  ws.close();
+  var f = t.step_func(function() {
+    if (i < 1) {
+      t.step_timeout(f, 500);
+      return;
+    }
+    assert_equals(i, 1);
+    t.done()
+  });
+  t.step_timeout(f, 500);
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-nested.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-nested.html
new file mode 100644
index 0000000..fa30c83
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-nested.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<title>WebSockets: close() in close event handler</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  var i = 0;
+  ws.onclose = t.step_func(function(e) {
+    i++;
+    if (i == 1) {
+      assert_equals(ws.readyState, ws.CLOSED);
+      ws.close();
+      assert_equals(ws.readyState, ws.CLOSED);
+    }
+    t.step_timeout(function() {
+      assert_equals(i, 1);
+      t.done();
+    }, 50);
+  });
+  ws.close();
+  assert_equals(ws.readyState, ws.CLOSING);
+}, undefined, {timeout:9900});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-replace.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-replace.html
new file mode 100644
index 0000000..a3d29d0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-replace.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>WebSockets: replacing close</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  ws.close = 5;
+  assert_equals(ws.close, 5);
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-return.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-return.html
new file mode 100644
index 0000000..c752c42
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/close/close-return.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>WebSockets: close() return value</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  assert_equals(ws.close(), undefined);
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/001.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/001.html
new file mode 100644
index 0000000..efc249aa
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/001.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<title>WebSockets: getting constants on constructor</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var constants = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];
+for (var i = 0; i < constants.length; ++i) {
+  test(function(){
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+    assert_equals(WebSocket[constants[i]], i, 'WebSocket.'+constants[i]);
+  }, "Constants on constructors " + constants[i]);
+};
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/002.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/002.html
new file mode 100644
index 0000000..7280e09b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/002.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<title>WebSockets: setting constants</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+// this test is testing WebIDL stuff
+var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+var constants = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];
+for (var i = 0; i < constants.length; ++i) {
+  test(function() {
+    WebSocket[constants[i]] = 5; // should be ignored, has { ReadOnly }
+    WebSocket.prototype[constants[i]] = 5; // should be ignored, has { ReadOnly }
+    ws[constants[i]] = 5; // should be ignored, { ReadOnly } is inherited from prototype
+    assert_equals(WebSocket[constants[i]], i, 'WebSocket.'+constants[i]);
+    assert_equals(WebSocket.prototype[constants[i]], i, 'WebSocket.prototype.'+constants[i]);
+    assert_equals(ws[constants[i]], i, 'ws.'+constants[i]);
+  }, "Readonly constants " + constants[i]);
+};
+</script>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/003.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/003.html
new file mode 100644
index 0000000..cdb06e5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/003.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<title>WebSockets: deleting constants</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var constants = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];
+for (var i = 0; i < constants.length; ++i) {
+  test(function(){
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+    delete WebSocket[constants[i]]; // should be ignored, has { DontDelete }
+    delete WebSocket.prototype[constants[i]]; // should be ignored, has { DontDelete }
+    delete ws[constants[i]]; // should be ignored, there is no such property on the object
+    assert_equals(WebSocket[constants[i]], i, 'WebSocket.'+constants[i]);
+    assert_equals(WebSocket.prototype[constants[i]], i, 'WebSocket.prototype.'+constants[i]);
+    assert_equals(ws[constants[i]], i, 'ws.'+constants[i]);
+  })
+};
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/004.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/004.html
new file mode 100644
index 0000000..a5b7649
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/004.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>WebSockets: getting constants on prototype and object</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var constants = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];
+for (var i = 0; i < constants.length; ++i) {
+  test(function() {
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+    assert_equals(WebSocket.prototype[constants[i]], i);
+   }, 'WebSocket.prototype.'+constants[i]);
+   test(function() {
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+    assert_equals(ws[constants[i]], i);
+  }, 'ws.'+constants[i]);
+};
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/005.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/005.html
new file mode 100644
index 0000000..b3c2e93
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/005.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<title>WebSockets: defineProperty getter for constants</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var constants = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];
+for (var i = 0; i < constants.length; ++i) {
+  test(function() {
+    assert_throws(new TypeError(), function() {
+      Object.defineProperty(WebSocket.prototype, constants[i], {
+        get: function() { return 'foo'; }
+      });
+    });
+  }, "defineProperty getter " + constants[i]);
+};
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/006.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/006.html
new file mode 100644
index 0000000..7021934
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/constants/006.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<title>WebSockets: defineProperty setter for constants</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var constants = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];
+for (var i = 0; i < constants.length; ++i) {
+  test(function() {
+    assert_throws(new TypeError(), function(){
+      Object.defineProperty(WebSocket.prototype, constants[i], {
+        set: function() { return 'foo'; }
+      });
+    });
+  }, "defineProperty setter " + constants[i])
+};
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/001.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/001.html
new file mode 100644
index 0000000..4af7636
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/001.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<title>WebSockets: getting on*</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var events = ['open', 'message', 'error', 'close'];
+for (var i = 0; i < events.length; ++i) {
+  test(function(){
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+    assert_equals(ws['on'+events[i]], null, 'on'+events[i]);
+  });
+};
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/002.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/002.html
new file mode 100644
index 0000000..279e0c5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/002.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<title>WebSockets: setting on*</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var events = ['open', 'message', 'error', 'close'];
+for (var i = 0; i < events.length; ++i) {
+  test(function(){
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+    var foo = function () {};
+    ws['on'+events[i]] = foo;
+    assert_equals(ws['on'+events[i]], foo);
+  });
+}
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/003.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/003.html
new file mode 100644
index 0000000..a9b76d8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/003.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>WebSockets: listening for events with onopen</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  var foo = t.step_func(function (e) {
+    if (e.detail == 5)
+      t.done();
+  })
+  ws.onopen = foo;
+  var ev = document.createEvent('UIEvents');
+  ev.initUIEvent('open', false, false, window, 5);
+  ws.dispatchEvent(ev);
+}, null, {timeout:2000});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/004.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/004.html
new file mode 100644
index 0000000..0c384a6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/004.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<title>WebSockets: members of EventTarget</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function(){
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  assert_equals(typeof ws.addEventListener, 'function');
+  assert_equals(typeof ws.removeEventListener, 'function');
+  assert_equals(typeof ws.dispatchEvent, 'function');
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/006.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/006.html
new file mode 100644
index 0000000..f7ccf10
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/006.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<title>WebSockets: 'on*' in ws</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function(){
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  assert_equals('onopen' in ws, true, 'onopen');
+  assert_equals('onmessage' in ws, true, 'onmessage');
+  assert_equals('onerror' in ws, true, 'onerror');
+  assert_equals('onclose' in ws, true, 'onclose');
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/007.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/007.html
new file mode 100644
index 0000000..4305097d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/007.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>WebSockets: listening for events with onmessage</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  var foo = t.step_func(function (e) {
+    if (e.detail == 5)
+      t.done();
+  })
+  ws.onmessage = foo;
+  var ev = document.createEvent('UIEvents');
+  ev.initUIEvent('message', false, false, window, 5);
+  ws.dispatchEvent(ev);
+}, null, {timeout:2000});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/008.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/008.html
new file mode 100644
index 0000000..dd06f0d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/008.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<title>WebSockets: listening for events with onerror</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  var run = false;
+  var foo = t.step_func(function (e) {
+    run = true;
+    assert_equals(e.detail, 5)
+  });
+  ws.onerror = foo;
+  var ev = document.createEvent('UIEvents');
+  ev.initUIEvent('error', false, false, window, 5);
+  ws.dispatchEvent(ev);
+  assert_true(run);
+  t.done();
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/009.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/009.html
new file mode 100644
index 0000000..dc25884ce
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/009.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>WebSockets: listening for events with onclose</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  var foo = t.step_func(function (e) {
+    if (e.detail == 5)
+      t.done();
+  });
+  ws.onclose = foo;
+  var ev = document.createEvent('UIEvents');
+  ev.initUIEvent('close', false, false, window, 5);
+  ws.dispatchEvent(ev);
+}, null, {timeout:2000});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/010.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/010.html
new file mode 100644
index 0000000..f4a4850
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/010.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>WebSockets: setting event handlers to undefined</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var events = ['onclose', 'onopen', 'onerror', 'onmessage'];
+for (var i = 0; i < events.length; ++i) {
+  test(function(){
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/empty-message');
+    var foo = function() {}
+    ws[events[i]] = foo;
+    assert_equals(ws[events[i]], foo, events[i]);
+    ws[events[i]] = undefined;
+    assert_equals(ws[events[i]], null, events[i]);
+  });
+}
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/011.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/011.html
new file mode 100644
index 0000000..918becc
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/011.html
@@ -0,0 +1,18 @@
+<!doctype html>
+<title>WebSockets: setting event handlers to 1</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var events = ['onclose', 'onopen', 'onerror', 'onmessage'];
+for (var i = 0; i < events.length; ++i) {
+  test(function(t) {
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/empty-message');
+    ws[events[i]] = 1;
+    assert_equals(ws[events[i]], null);
+  }, events[i]);
+};
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/012.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/012.html
new file mode 100644
index 0000000..633f02c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/012.html
@@ -0,0 +1,18 @@
+<!doctype html>
+<title>WebSockets: setting event handlers to ";"</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var events = ['onclose', 'onopen', 'onerror', 'onmessage'];
+for (var i = 0; i < events.length; ++i) {
+  test(function(t) {
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/empty-message');
+    ws[events[i]] = ";";
+    assert_equals(ws[events[i]], null);
+  }, events[i]);
+};
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/013.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/013.html
new file mode 100644
index 0000000..46550512
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/013.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<title>WebSockets: setting event handlers to {handleEvent:function(){}}</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var events = ['onclose', 'onopen', 'onerror', 'onmessage'];
+for (var i = 0; i < events.length; ++i) {
+  test(function(t) {
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/empty-message');
+    var obj = {handleEvent:this.unreached_func("handleEvent was called")};
+    ws[events[i]] = obj;
+    assert_equals(ws[events[i]], obj);
+    ws.dispatchEvent(new Event(events[i].substr(2)));
+  }, events[i]);
+};
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/014.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/014.html
new file mode 100644
index 0000000..9250fb2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/014.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>WebSockets: setting event handlers to null</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var events = ['onclose', 'onopen', 'onerror', 'onmessage'];
+for (var i = 0; i < events.length; ++i) {
+  test(function() {
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/empty-message');
+    var foo = function() {}
+    ws[events[i]] = foo;
+    assert_equals(ws[events[i]], foo, events[i]);
+    ws[events[i]] = null;
+    assert_equals(ws[events[i]], null, events[i]);
+  }, "Setting event handlers to null " + events[i]);
+};
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/015.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/015.html
new file mode 100644
index 0000000..8852e64
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/015.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<title>WebSockets: instanceof on events</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo_raw');
+  ws.onopen = t.step_func(function(e) {
+    assert_true(e instanceof Event);
+    // first a text frame, then a frame with reserved opcode 3
+    // which should fail the connection
+    ws.send('\\x81\\x04test\\x83\\x03LOL');
+  });
+  ws.onmessage = t.step_func(function(e) {
+    assert_true(e instanceof Event);
+    assert_true(e instanceof MessageEvent);
+    assert_equals(ws.readyState, ws.OPEN);
+  })
+  ws.onerror = t.step_func(function(e) {
+    assert_true(e instanceof Event);
+    assert_equals(ws.readyState, ws.CLOSED);
+  })
+  ws.onclose = t.step_func(function(e) {
+    assert_true(e instanceof Event);
+    assert_true(e instanceof CloseEvent);
+    t.done();
+  })
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/016.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/016.html
new file mode 100644
index 0000000..0e88c790
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/016.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<title>WebSockets: addEventListener</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  var count = 0;
+  var checkCount = t.step_func(function (c, e) {
+    count++;
+    assert_equals(count, c);
+  });
+  // no spec requires this order for event listeners but the web does
+  ws.addEventListener('open', t.step_func(function(e) {
+    checkCount(1, e);
+     ws.send('Goodbye');
+  }), false);
+  ws.onopen = t.step_func(function(e) {checkCount(2, e) });
+  ws.addEventListener('open', t.step_func(function(e) {checkCount(3, e); }), false);
+
+  ws.addEventListener('message', t.step_func(function(e) {checkCount(4, e); }), false);
+  ws.onmessage = t.step_func(function(e) {checkCount(5, e) });
+  ws.addEventListener('message', t.step_func(function(e) {checkCount(6, e); }), false);
+
+  ws.addEventListener('close', t.step_func(function(e) {checkCount(7, e); }), false);
+  ws.onclose = t.step_func(function(e) {checkCount(8, e) });
+  ws.addEventListener('close', t.step_func(function(e) {
+    checkCount(9, e);
+    t.done();
+  }), false);
+
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/017.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/017.html
new file mode 100644
index 0000000..b2ed593
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/017.html
@@ -0,0 +1,53 @@
+<!doctype html>
+<title>WebSockets: this, e.target, e.currentTarget, e.eventPhase</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo_raw');
+  ws.addEventListener('open', function(e) {
+    var this_val = this;
+    t.step(function() {
+      // first a text frame, then a frame with reserved opcode 3
+      // which should fail the connection
+      ws.send('\\x81\\x04test\\x83\\x03LOL');
+      assert_equals(this_val, ws);
+      assert_equals(e.target, ws);
+      assert_equals(e.currentTarget, ws);
+      assert_equals(e.eventPhase, 2);
+    });
+  }, false);
+  ws.addEventListener('message', function(e) {
+    var this_val = this;
+    t.step(function() {
+      assert_equals(this_val, ws);
+      assert_equals(e.target, ws);
+      assert_equals(e.currentTarget, ws);
+      assert_equals(e.eventPhase, 2);
+    });
+  }, false);
+  ws.addEventListener('error', function(e) {
+    var this_val = this;
+    t.step(function() {
+      assert_equals(this_val, ws);
+      assert_equals(e.target, ws);
+      assert_equals(e.currentTarget, ws);
+      assert_equals(e.eventPhase, 2);
+    });
+  }, false);
+  ws.addEventListener('close', function(e) {
+    var this_val = this;
+    t.step(function() {
+      assert_equals(this_val, ws);
+      assert_equals(e.target, ws);
+      assert_equals(e.currentTarget, ws);
+      assert_equals(e.eventPhase, 2);
+      t.done();
+    });
+  }, false);
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/018.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/018.html
new file mode 100644
index 0000000..a3ef0f5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/018.html
@@ -0,0 +1,49 @@
+<!doctype html>
+<title>WebSockets: toString(), bubbles, cancelable</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var ws = null;
+setup(function() {
+  ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo_raw');
+});
+
+async_test(function(t) {
+  ws.addEventListener('open', t.step_func_done(function(e) {
+    // first a text frame, then a frame with reserved opcode 3
+    // which should fail the connection
+    ws.send('\\x81\\x04test\\x83\\x03LOL');
+    assert_equals(e.toString(), '[object Event]', "open e.toString()");
+    assert_equals(e.bubbles, false, 'open e.bubbles');
+    assert_equals(e.cancelable, false, 'open e.cancelable');
+  }), false);
+}, "open event");
+
+async_test(function(t) {
+  ws.addEventListener('message', t.step_func_done(function(e) {
+    assert_equals(e.toString(), '[object MessageEvent]', "message e.toString()");
+    assert_equals(e.bubbles, false, 'message e.bubbles');
+    assert_equals(e.cancelable, false, 'message e.cancelable');
+  }), false);
+}, "message event");
+
+async_test(function(t) {
+  ws.addEventListener('error', t.step_func_done(function(e) {
+    assert_equals(e.toString(), '[object Event]', "error e.toString()");
+    assert_equals(e.bubbles, false, 'error e.bubbles');
+    assert_equals(e.cancelable, false, 'error e.cancelable');
+  }), false);
+}, "error event");
+
+async_test(function(t) {
+  ws.addEventListener('close', t.step_func_done(function(e) {
+    assert_equals(e.toString(), '[object CloseEvent]', "close e.toString()");
+    assert_equals(e.bubbles, false, 'close e.bubbles');
+    assert_equals(e.cancelable, false, 'close e.cancelable');
+  }), false);
+}, "close event");
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/019.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/019.html
new file mode 100644
index 0000000..f975a809
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/019.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<title>WebSockets: removeEventListener</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+var events = ['open', 'message', 'error', 'close'];
+for (var i = 0; i < events.length; ++i) {
+  test(function(t) {
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+    ws.close();
+    var got = [];
+    var event;
+    function addThis(e) {
+      got.push(e.type);
+    }
+    ws.addEventListener(events[i], addThis, false);
+    ws.removeEventListener(events[i], addThis, false);
+    event = document.createEvent('Event');
+    event.initEvent(events[i], false, false);
+    ws.dispatchEvent(event);
+    assert_equals(got.length, 0);
+    if (got.length) {
+      debug('Got: '+got);
+    }
+  })
+};
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/020.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/020.html
new file mode 100644
index 0000000..54d96fe
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/events/020.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<title>WebSockets: error events</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket('ws://example.invalid/');
+  ws.onerror = t.step_func(function(e) {
+    assert_true(e instanceof Event);
+    t.done();
+  })
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/extensions/001.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/extensions/001.html
new file mode 100644
index 0000000..f500386
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/extensions/001.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>WebSockets: getting extensions in connecting</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function(t) {
+  // The extensions attribute must initially return the empty string
+  assert_equals((new WebSocket(SCHEME_DOMAIN_PORT+'/empty-message')).extensions, '');
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/protocol/protocol-initial.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/protocol/protocol-initial.html
new file mode 100644
index 0000000..ba27228e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/protocol/protocol-initial.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>WebSockets: getting protocol in connecting</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function(t) {
+  // The protocol attribute must initially return the empty string
+  assert_equals((new WebSocket(SCHEME_DOMAIN_PORT + '/empty-message')).protocol, '');
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/001.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/001.html
new file mode 100644
index 0000000..aa5d9fd
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/001.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<title>WebSockets: getting readyState in connecting</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function(t) {
+  assert_equals((new WebSocket(SCHEME_DOMAIN_PORT+'/')).readyState, WebSocket.CONNECTING);
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/002.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/002.html
new file mode 100644
index 0000000..9e97416
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/002.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>WebSockets: setting readyState</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  ws.readyState = 5;
+  assert_equals(ws.readyState, ws.CONNECTING);
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/003.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/003.html
new file mode 100644
index 0000000..93d72b64
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/003.html
@@ -0,0 +1,18 @@
+<!doctype html>
+<title>WebSockets: delete readyState</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  ws.close();
+  delete ws.readyState;
+  assert_equals(ws.readyState, ws.CLOSING, 'delete ws.readyState');
+  delete WebSocket.prototype.readyState;
+  assert_equals(ws.readyState, undefined, 'delete WebSocket.prototype.readyState');
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/004.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/004.html
new file mode 100644
index 0000000..fbe326a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/004.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<title>WebSockets: defineProperty getter for readyState</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {
+    Object.defineProperty(WebSocket.prototype, 'readyState', {
+        get: function() { return 'foo'; }
+    });
+    var ws = new WebSocket('ws://example.invalid/');
+    assert_equals(ws.readyState, 'foo');
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/005.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/005.html
new file mode 100644
index 0000000..3ca87052
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/005.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<title>WebSockets: defineProperty setter for readyState</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function(){
+  window.setter_ran = false;
+  Object.defineProperty(WebSocket.prototype, 'readyState', {
+    set: function(v) { window[v] = true; }
+  });
+  var ws = new WebSocket('ws://example.invalid/');
+  ws.readyState = 'setter_ran';
+  assert_true(setter_ran);
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/006.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/006.html
new file mode 100644
index 0000000..e0be938
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/006.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<title>WebSockets: getting readyState in open</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  ws.onopen = t.step_func(function(e) {
+    assert_equals(ws.readyState, ws.OPEN);
+    ws.close();
+    t.done();
+  });
+  ws.onerror = ws.onmessage = ws.onclose = t.step_func(function() {assert_unreached()});
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/007.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/007.html
new file mode 100644
index 0000000..12a4cd0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/007.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<title>WebSockets: getting readyState in closing</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  ws.onopen = t.step_func(function(e) {
+    ws.close();
+    assert_equals(ws.readyState, ws.CLOSING);
+    t.done();
+  });
+  ws.onerror = ws.onmessage = ws.onclose = t.step_func(function() {assert_unreached()});
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/008.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/008.html
new file mode 100644
index 0000000..c83ead4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/readyState/008.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>WebSockets: getting readyState in closed</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  ws.onopen = t.step_func(function(e) {
+    ws.onclose = t.step_func(function(e) {
+      assert_equals(ws.readyState, ws.CLOSED);
+      t.done();
+    })
+    ws.close();
+  });
+  ws.onerror = ws.onmessage = ws.onclose = t.step_func(function() {assert_unreached()});
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/001.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/001.html
new file mode 100644
index 0000000..3a22420
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/001.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>WebSockets: send() with no args</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  assert_throws(new TypeError(), function(){ws.send()});
+});
+</script>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/002.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/002.html
new file mode 100644
index 0000000..f5c7e4f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/002.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>WebSockets: replacing send</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  ws.send = 5;
+  assert_equals(ws.send, 5);
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/003.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/003.html
new file mode 100644
index 0000000..08aadbf
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/003.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>WebSockets: send() when readyState is CONNECTING</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  assert_throws("INVALID_STATE_ERR", function(){ws.send('a')});
+});
+</script>
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/004.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/004.html
new file mode 100644
index 0000000..af906b55
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/004.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<title>WebSockets: send() with unpaired surrogate when readyState is CONNECTING</title>
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  assert_throws("INVALID_STATE_ERR", function(){ws.send('a\uDC00x')});
+}, "lone low surrogate");
+
+test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  assert_throws("INVALID_STATE_ERR", function(){ws.send('a\uD800x')});
+}, "lone high surrogate");
+
+test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  assert_throws("INVALID_STATE_ERR", function(){ws.send('a\uDC00\uD800x')});
+}, "surrogates in wrong order");
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/005.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/005.html
new file mode 100644
index 0000000..69e727d1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/005.html
@@ -0,0 +1,18 @@
+<!doctype html>
+<title>WebSockets: send() return value</title>
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t){
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  ws.onopen = t.step_func(function(e) {
+    assert_equals(ws.send('test'), undefined);
+    t.done();
+  });
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/006.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/006.html
new file mode 100644
index 0000000..bcbd4ca
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/006.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<title>WebSockets: send() with unpaired surrogate when readyState is OPEN</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id="log"></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  ws.onopen = t.step_func(function(e) {
+    // lone low surrogate, lone high surrogate + surrogates in wrong order.
+    ws.send('a\uDC00xb\uD800xc\uDC00\uD800x');
+  })
+  ws.onmessage = t.step_func(function(e) {
+    assert_equals(e.data, 'a\uFFFDxb\uFFFDxc\uFFFD\uFFFDx');
+    ws.onclose = t.step_func(function(e) {
+      ws.onclose = t.unreached_func();
+      t.step_timeout(() => t.done(), 50);
+    });
+    ws.close();
+  })
+ });
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/007.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/007.html
new file mode 100644
index 0000000..6b93526
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/007.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<title>WebSockets: close() followed by send()</title>
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  ws.onopen = t.step_func(function(e) {
+    // test that nothing strange happens if we send something after close()
+    ws.close();
+    var sent = ws.send('test');
+    assert_equals(sent, undefined);
+  });
+  ws.onclose = t.step_func(function(e) {
+    ws.onclose = t.unreached_func();
+    t.step_timeout(() => t.done(), 50);
+  });
+  ws.onerror = ws.onmessage = t.unreached_func();
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/008.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/008.html
new file mode 100644
index 0000000..084e0508
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/008.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<title>WebSockets: send() in onclose</title>
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  ws.onopen = t.step_func(function(e) {
+    ws.send('Goodbye');
+  })
+  ws.onclose = t.step_func(function(e) {
+    // test that nothing strange happens when send()ing in closed state
+    var sent = ws.send('test');
+    assert_equals(sent, undefined);
+    ws.onclose = t.unreached_func();
+    t.step_timeout(() => t.done(), 50);
+  })
+  ws.onerror = t.unreached_func();
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/009.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/009.html
new file mode 100644
index 0000000..12fd8b8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/009.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<title>WebSockets: send('')</title>
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t){
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/empty-message');
+  ws.onopen = t.step_func(function(e) {
+    ws.send('');
+  })
+  ws.onmessage = t.step_func(function(e) {
+    assert_equals(e.data, 'pass');
+    ws.close();
+  });
+  ws.onclose = t.step_func(function(e) {
+    ws.onclose = t.unreached_func();
+    t.step_timeout(() => t.done(), 50);
+  });
+  ws.onerror = t.unreached_func();
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/010.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/010.html
new file mode 100644
index 0000000..f6680c6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/010.html
@@ -0,0 +1,41 @@
+<!doctype html>
+<title>WebSockets: sending non-strings</title>
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(outer) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  var stuffToSend = [null, undefined, 1, window, document.body, {}, [], ws, function(){}, new Error()]
+  var tests = [];
+
+  for (var i=0; i<stuffToSend.length; i++) {
+    tests.push(async_test(document.title + " (" + stuffToSend[i] + ")"));
+  }
+
+  i = 0;
+  function sendNext() {
+    if (i === stuffToSend.length) {
+      outer.done()
+      ws.close();
+    } else {
+      var t = tests[i];
+      ws.onmessage = t.step_func(function(e) {
+         assert_equals(e.data, String(stuffToSend[i]));
+         i++;
+         sendNext();
+         t.done();
+       });
+       ws.onclose = ws.onerror = t.step_func(function() {assert_unreached()});
+       ws.send(stuffToSend[i]);
+    }
+  }
+  ws.onopen = outer.step_func(function(e) {
+    sendNext();
+  });
+}, "Constructor succeeds");
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/011.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/011.html
new file mode 100644
index 0000000..3be974e4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/011.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<title>WebSockets: sending non-ascii, combining chars and non-BMP</title>
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  ws.onopen = t.step_func(function(e) {
+    ws.send('\u00E5 a\u030A \uD801\uDC7E');
+  });
+  ws.onmessage = t.step_func(function(e) {
+    assert_equals(e.data, '\u00E5 a\u030A \uD801\uDC7E');
+    ws.onclose = t.step_func(function(e) {
+      ws.onclose = t.unreached_func();
+      t.step_timeout(() => t.done(), 50);
+    })
+    ws.close();
+  })
+  ws.onclose = ws.onerror = t.unreached_func();
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/012.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/012.html
new file mode 100644
index 0000000..2667517
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/send/012.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<title>WebSockets: sending null</title>
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+
+async_test(function(t){
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  ws.onopen = t.step_func(function(e) {
+    ws.send(null);
+  });
+  ws.onmessage = t.step_func(function(e) {
+    assert_equals(e.data, 'null');
+    ws.onclose = t.step_func(function(e) {
+      ws.onclose = t.unreached_func();
+      t.step_timeout(() => t.done(), 50);
+    })
+    ws.close();
+  });
+  ws.onclose = ws.onerror = t.unreached_func();
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/001.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/001.html
new file mode 100644
index 0000000..3d1e5e5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/001.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<title>WebSockets: getting url</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {
+  assert_equals((new WebSocket(SCHEME_DOMAIN_PORT)).url, SCHEME_DOMAIN_PORT+'/');
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/002.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/002.html
new file mode 100644
index 0000000..aa11664
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/002.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>WebSockets: setting url</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  ws.url = SCHEME_DOMAIN_PORT+'/test';
+  assert_equals(ws.url, SCHEME_DOMAIN_PORT+'/');
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/003.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/003.html
new file mode 100644
index 0000000..8cc0b791
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/003.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<title>WebSockets: deleting url</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  delete ws.url;
+  assert_equals(ws.url, SCHEME_DOMAIN_PORT+'/', 'delete ws.url');
+  delete WebSocket.prototype.url;
+  assert_equals(ws.url, undefined, 'delete WebSocket.prototype.url');
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/004.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/004.html
new file mode 100644
index 0000000..908e2cd
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/004.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<title>WebSockets: 'URL'</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/');
+  assert_equals(ws.URL, undefined);
+  assert_equals('URL' in ws, false);
+  assert_equals(WebSocket.prototype.URL, undefined);
+  assert_equals('URL' in WebSocket.prototype, false);
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/005.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/005.html
new file mode 100644
index 0000000..f3d89cf
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/005.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<title>WebSockets: defineProperty getter for url</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {
+    Object.defineProperty(WebSocket.prototype, 'url', {
+        get: function() { return 'foo'; }
+    });
+    var ws = new WebSocket('ws://example.invalid/');
+    assert_equals(ws.url, 'foo');
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/006.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/006.html
new file mode 100644
index 0000000..124bdbc
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/006.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<title>WebSockets: defineProperty setter for url</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {
+  window.setter_ran = false;
+    Object.defineProperty(WebSocket.prototype, 'url', {
+        set: function(v) { window[v] = true; }
+    });
+    var ws = new WebSocket('ws://example.invalid/');
+    ws.url = 'setter_ran';
+    assert_true(setter_ran);
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/resolve.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/resolve.html
new file mode 100644
index 0000000..ad7db14
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/interfaces/WebSocket/url/resolve.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>WebSocket#url: resolving</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../../../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+test(function() {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT + '/echo?foo%20bar baz');
+  assert_equals(ws.url, SCHEME_DOMAIN_PORT + '/echo?foo%20bar%20baz');
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/keeping-connection-open/001.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/keeping-connection-open/001.html
new file mode 100644
index 0000000..2e5423c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/keeping-connection-open/001.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<title>WebSockets: 20s inactivity after handshake</title>
+<meta name=timeout content=long>
+<p>Note: This test takes 20 seconds to run.</p>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  ws.onclose = ws.onerror = ws.onmessage = t.unreached_func();
+  ws.onopen = t.step_func(function(e) {
+    t.step_timeout(function() {
+      ws.send('test');
+      ws.onmessage = t.step_func(function(e) {
+        assert_equals(e.data, 'test');
+        ws.onclose = t.step_func(function(e) {
+          t.step_timeout(() => t.done(), 50);
+        });
+        ws.close();
+      });
+    }, 20000);
+  })
+}, null, {timeout:30000});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/multi-globals/message-received.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/multi-globals/message-received.html
new file mode 100644
index 0000000..58d8d84
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/multi-globals/message-received.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<title>"A WebSocket message has been received", with multiple globals in play</title>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/comms.html#feedback-from-the-protocol">
+<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../websocket.sub.js"></script>
+
+<!-- This is the entry global -->
+
+<iframe src="support/incumbent.sub.html"></iframe>
+
+<script>
+"use strict";
+setup({ explicit_done: true });
+
+window.onload = function() {
+    async_test(function(t) {
+        frames[0].setupWebSocket("arraybuffer", t.step_func_done(function(relevantWindow, event) {
+            assert_equals(event.constructor, relevantWindow.MessageEvent);
+            assert_equals(event.data.constructor, relevantWindow.ArrayBuffer);
+        }));
+    }, "ArrayBuffer should be created in the relevant realm of the WebSocket");
+
+    async_test(function(t) {
+        frames[0].setupWebSocket("blob", t.step_func_done(function(relevantWindow, event) {
+            assert_equals(event.constructor, relevantWindow.MessageEvent);
+            assert_equals(event.data.constructor, relevantWindow.Blob);
+        }));
+    }, "Blob should be created in the relevant realm of the WebSocket");
+
+    done();
+};
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/multi-globals/support/incumbent.sub.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/multi-globals/support/incumbent.sub.html
new file mode 100644
index 0000000..a138b702
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/multi-globals/support/incumbent.sub.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<title>Incumbent page used as a test helper</title>
+
+<iframe src="relevant.html" id="r"></iframe>
+
+<script>
+"use strict";
+
+const relevant = document.querySelector("#r").contentWindow;
+
+window.setupWebSocket = (binaryType, fn) => {
+    const wsocket = new relevant.WebSocket("ws://{{host}}:{{ports[ws][0]}}/echo");
+
+    wsocket.addEventListener("open", () => {
+        wsocket.binaryType = binaryType;
+        wsocket.send(new ArrayBuffer(15));
+    });
+
+    wsocket.addEventListener("message", ev => {
+        fn(relevant, ev);
+    });
+};
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/multi-globals/support/relevant.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/multi-globals/support/relevant.html
new file mode 100644
index 0000000..44f42eda
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/multi-globals/support/relevant.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html>
+<title>Relevant page used as a test helper</title>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/opening-handshake/001.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/opening-handshake/001.html
new file mode 100644
index 0000000..7274150
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/opening-handshake/001.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<title>WebSockets: invalid handshake</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/invalid');
+  ws.onclose = t.step_func(function(e) {
+    assert_false(e.wasClean);
+    ws.onclose = t.unreached_func();
+    t.step_timeout(() => t.done(), 50);
+  });
+   ws.onmessage = ws.onopen = t.unreached_func();
+}, null, {timeout:9900});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/opening-handshake/002.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/opening-handshake/002.html
new file mode 100644
index 0000000..052e6445
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/opening-handshake/002.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<title>WebSockets: valid handshake</title>
+<meta name=timeout content=long>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  ws.onopen = t.step_func(function(e) {
+    ws.onclose = t.step_func(function(e) {
+      assert_equals(e.wasClean, true);
+      ws.onclose = t.unreached_func();
+      t.step_timeout(() => t.done(), 50);
+    })
+    ws.close();
+  });
+  ws.onerror = ws.onmessage = ws.onclose = t.unreached_func();
+}, null, {timeout:9900});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/opening-handshake/003-sets-origin.worker.js b/third_party/WebKit/LayoutTests/external/wpt/websockets/opening-handshake/003-sets-origin.worker.js
new file mode 100644
index 0000000..86c4ef7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/opening-handshake/003-sets-origin.worker.js
@@ -0,0 +1,17 @@
+importScripts("/resources/testharness.js");
+importScripts('../constants.js?pipe=sub');
+importScripts('../websocket.sub.js');
+
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/origin');
+  ws.onmessage = t.step_func(function(e) {
+    assert_equals(e.data, location.protocol+'//'+location.host);
+    ws.onclose = t.step_func(function(e) {
+      assert_equals(e.wasClean, true);
+      ws.onclose = t.unreached_func();
+      t.step_timeout(() => t.done(), 50);
+    })
+    ws.close();
+  })
+  ws.onerror = ws.onclose = t.unreached_func();
+}, "W3C WebSocket API - origin set in a Worker");
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/opening-handshake/003.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/opening-handshake/003.html
new file mode 100644
index 0000000..8e806ea
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/opening-handshake/003.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<title>WebSockets: origin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/origin');
+  ws.onmessage = t.step_func(function(e) {
+    assert_equals(e.data, location.protocol+'//'+location.host);
+    ws.onclose = t.step_func(function(e) {
+      assert_equals(e.wasClean, true);
+      ws.onclose = t.unreached_func();
+      t.step_timeout(() => t.done(), 50);
+    })
+    ws.close();
+  })
+  ws.onerror = ws.onclose = t.unreached_func();
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/opening-handshake/005.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/opening-handshake/005.html
new file mode 100644
index 0000000..c55cd65
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/opening-handshake/005.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<title>WebSockets: proper first line</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/simple_handshake');
+  ws.onmessage = t.unreached_func();
+  ws.onopen = t.step_func(function(e) {
+    ws.onclose = t.step_func(function(e) {
+      assert_equals(e.wasClean, true);
+      ws.onclose = t.unreached_func();
+      t.step_timeout(() => t.done(), 50);
+    })
+    ws.close();
+  })
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/security/001.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/security/001.html
new file mode 100644
index 0000000..4cc24598
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/security/001.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<title>WebSockets: wrong accept key</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/wrong_accept_key');
+  ws.onclose = t.step_func(function(e) {
+    t.done();
+  });
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/security/002.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/security/002.html
new file mode 100644
index 0000000..2bdc133
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/security/002.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<title>WebSockets: check Sec-WebSocket-Key</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<script>
+async_test(function(t) {
+  var xhr = new XMLHttpRequest();
+  xhr.onload = t.step_func(function() {
+    assert_equals(xhr.responseText, 'PASS');
+    t.done();
+  });
+  xhr.open("GET", "check.py", true);
+  xhr.setRequestHeader('Sec-WebSocket-Key', 'jW7qmdXj5Kk5jTClF1BN3');
+  xhr.send(null);
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/security/check.py b/third_party/WebKit/LayoutTests/external/wpt/websockets/security/check.py
new file mode 100644
index 0000000..f141437
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/security/check.py
@@ -0,0 +1,2 @@
+def main(request, response):
+    return "FAIL" if 'Sec-WebSocket-Key' in request.headers else "PASS"
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/001-1.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/001-1.html
new file mode 100644
index 0000000..8ae83af
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/001-1.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<title>WebSockets: navigating top-level browsing context</title>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<script>
+var controller = opener || parent;
+var t = controller.t;
+var assert_equals = controller.asset_equals;
+var assert_unreached = controller.assert_unreached;
+var uuid = controller.uuid;
+t.add_cleanup(function() {delete sessionStorage[uuid];});
+t.step(function() {
+  if (sessionStorage[uuid]) {
+    t.done();
+  } else {
+    sessionStorage[uuid] = 'true';
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+    ws.onopen = t.step_func(function(e) {
+      t.step_timeout(function() {
+        assert_unreached('document was not discarded');
+      }, 1000);
+      controller.navigate();
+    })
+    ws.onerror = ws.onmessage = ws.onclose = t.step_func(e => assert_unreached("Got unexpected event " + e.type));
+  }
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/001.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/001.html
new file mode 100644
index 0000000..d949b6eb
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/001.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<title>WebSockets: navigating top-level browsing context</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<p>Test requires popup blocker disabled</p>
+<div id=log></div>
+<script>
+var t = async_test();
+var w;
+var uuid;
+t.step(function() {
+  uuid = token()
+  w = window.open("001-1.html");
+  add_result_callback(function() {
+    w.close();
+  });
+});
+navigate = t.step_func(function() {
+  w.location = 'data:text/html,<body onload="history.back()">';
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/002-1.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/002-1.html
new file mode 100644
index 0000000..8432d84
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/002-1.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<title>WebSockets: navigating top-level browsing context with closed websocket</title>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<script>
+var controller = opener || parent;
+var t = controller.t;
+var assert_equals = controller.asset_equals;
+var assert_unreached = controller.assert_unreached ;
+var uuid = controller.token;
+t.add_cleanup(function() {delete sessionStorage[uuid];});
+t.step(function() {
+  // this test can fail if the document is unloaded on navigation e.g. due to OOM
+  if (sessionStorage[uuid]) {
+    assert_unreached('document was discarded');
+  } else {
+    sessionStorage[uuid] = 'true';
+    var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+    ws.onopen = t.step_func(function(e) {
+
+      t.step_timeout(function() {
+        assert_equals(ws.readyState, ws.CLOSED, 'ws.readyState');
+        t.done();
+      }, 4000);
+      ws.close();
+      ws.onclose = t.step_func(function() {
+        controller.navigate();
+      });
+    })
+    ws.onerror = ws.onmessage = ws.onclose = t.step_func(e => assert_unreached("Got unexpected event " + e.type));
+  }
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/002.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/002.html
new file mode 100644
index 0000000..df35192
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/002.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<title>WebSockets: navigating top-level browsing context with closed websocket</title>
+<meta name=timeout content=long>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<p>Test requires popup blocker disabled</p>
+<div id=log></div>
+<script>
+var t = async_test(null, {timeout:15000});
+var w;
+var uuid;
+t.step(function() {
+  uuid = token()
+  w = window.open("002-1.html");
+  add_result_callback(function() {
+    w.close();
+  });
+});
+navigate = t.step_func(function() {
+  w.location = 'data:text/html,<body onload="history.back()">';
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/003.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/003.html
new file mode 100644
index 0000000..554daf4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/003.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>WebSockets: navigating nested browsing context</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<div id=log></div>
+<script>
+var uuid;
+var t = async_test(function() {uuid = token()});
+var navigate = t.step_func(function() {
+  document.getElementsByTagName("iframe")[0].src = 'data:text/html,<body onload="history.back()">';
+});
+</script>
+<iframe src=001-1.html></iframe>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/004-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/004-expected.txt
new file mode 100644
index 0000000..108c294c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/004-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL WebSockets: navigating nested browsing context with closed websocket assert_unreached: document was discarded Reached unreachable code
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/004.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/004.html
new file mode 100644
index 0000000..0ef4fbc
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/004.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<title>WebSockets: navigating nested browsing context with closed websocket</title>
+<meta name=timeout content=long>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<div id=log></div>
+<script>
+var uuid;
+var t = async_test(null, {timeout:15000})
+t.step(function() {uuid = token()});
+var navigate = t.step_func(function() {
+  document.getElementsByTagName("iframe")[0].src = 'data:text/html,<body onload="history.back()">';
+});
+</script>
+<iframe src=002-1.html></iframe>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/005-1.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/005-1.html
new file mode 100644
index 0000000..fd70fc5b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/005-1.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<title>WebSockets: navigating nested browsing context with a websocket in top-level</title>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<script>
+var t = opener.t;
+var assert_unreached = opener.assert_unreached;
+var hasRun = false;
+function run(){
+  var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/echo');
+  ws.onopen = t.step_func(function(e) {
+    t.step_timeout(function() {
+      ws.send('test');
+    }, 1000);
+    window[0].location = 'data:text/html,<body onload="history.back()">';
+    ws.onmessage = t.step_func_done(function(e) {
+      ws.close();
+    });
+  });
+  ws.onerror = ws.onmessage = ws.onclose = t.step_func(e => assert_unreached("Got unexpected event " + e.type));
+}
+</script>
+<iframe src='data:text/html,foo' onload='if (hasRun) return; hasRun = true; t.step(run)'></iframe>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/005.html b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/005.html
new file mode 100644
index 0000000..4bafe8b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/unload-a-document/005.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<title>WebSockets: navigating nested browsing context with a websocket in top-level</title>
+<meta name=timeout content=long>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=../constants.js?pipe=sub></script>
+<meta name="variant" content="">
+<meta name="variant" content="?wss">
+<div id=log></div>
+<p>Test requires popup blocker disabled</p>
+<div id=log></div>
+<script>
+var t = async_test(null, {timeout:15000});
+t.step(function() {
+  var w = window.open("005-1.html");
+  add_result_callback(function() {
+    w.close();
+  });
+});
+</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/websockets/websocket.sub.js b/third_party/WebKit/LayoutTests/external/wpt/websockets/websocket.sub.js
new file mode 100644
index 0000000..651024ee
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/websockets/websocket.sub.js
@@ -0,0 +1,107 @@
+var __SERVER__NAME = "{{host}}";
+var __PORT = {{ports[ws][0]}};
+var __SECURE__PORT = {{ports[wss][0]}};
+var __NEW__PORT = __PORT; //All ports are non-default for now
+var __NEW__SECURE__PORT = __SECURE__PORT; //All ports are non-default for now
+var __PATH = "echo";
+var wsocket;
+var data;
+
+function IsWebSocket() {
+    if (!self.WebSocket) {
+        assert_true(false, "Browser does not support WebSocket");
+    }
+}
+
+function CreateWebSocketNonAbsolute() {
+    IsWebSocket();
+    var url = __SERVER__NAME;
+    wsocket = new WebSocket(url);
+}
+
+function CreateWebSocketNonWsScheme() {
+    IsWebSocket();
+    var url = "http://" + __SERVER__NAME + ":" + __PORT + "/" + __PATH;
+    wsocket = new WebSocket(url);
+}
+
+function CreateWebSocketNonAsciiProtocol(nonAsciiProtocol) {
+    IsWebSocket();
+    var url = "ws://" + __SERVER__NAME + ":" + __PORT + "/" + __PATH;
+    wsocket = new WebSocket(url, nonAsciiProtocol);
+}
+
+function CreateWebSocketWithAsciiSep(asciiWithSep) {
+    IsWebSocket();
+    var url = "ws://" + __SERVER__NAME + ":" + __PORT + "/" + __PATH;
+    wsocket = new WebSocket(url, asciiWithSep);
+}
+
+function CreateWebSocketWithBlockedPort(blockedPort) {
+    IsWebSocket();
+    var url = "ws://" + __SERVER__NAME + ":" + blockedPort + "/" + __PATH;
+    return new WebSocket(url);
+}
+
+function CreateWebSocketWithSpaceInUrl(urlWithSpace) {
+    IsWebSocket();
+    var url = "ws://" + urlWithSpace + ":" + __PORT + "/" + __PATH;
+    wsocket = new WebSocket(url);
+}
+
+function CreateWebSocketWithSpaceInProtocol(protocolWithSpace) {
+    IsWebSocket();
+    var url = "ws://" + __SERVER__NAME + ":" + __PORT + "/" + __PATH;
+    wsocket = new WebSocket(url, protocolWithSpace);
+}
+
+function CreateWebSocketWithRepeatedProtocols() {
+    IsWebSocket();
+    var url = "ws://" + __SERVER__NAME + ":" + __PORT + "/" + __PATH;
+    wsocket = new WebSocket(url, ["echo", "echo"]);
+}
+
+function CreateWebSocketWithRepeatedProtocolsCaseInsensitive() {
+    IsWebSocket();
+    var url = "ws://" + __SERVER__NAME + ":" + __PORT + "/" + __PATH;
+    wsocket = new WebSocket(url, ["echo", "eCho"]);
+}
+
+function CreateWebSocket(isSecure, isProtocol, isProtocols) {
+    IsWebSocket();
+    var url;
+    if (isSecure) {
+        if (__SECURE__PORT === null) {
+            throw new Error("wss not yet supported");
+        }
+        url = "wss://" + __SERVER__NAME + ":" + __SECURE__PORT + "/" + __PATH;
+    }
+    else {
+        url = "ws://" + __SERVER__NAME + ":" + __PORT + "/" + __PATH;
+    }
+
+    if (isProtocol) {
+        wsocket = new WebSocket(url, "echo");
+    }
+    else if (isProtocols) {
+        wsocket = new WebSocket(url, ["echo", "chat"]);
+    }
+    else {
+        wsocket = new WebSocket(url);
+    }
+    return wsocket;
+}
+
+function CreateControlWebSocket(isSecure) {
+    IsWebSocket();
+    var url;
+    if (isSecure) {
+        url = "wss://" + __SERVER__NAME + ":" + __SECURE__PORT + "/control";
+    }
+    else {
+        url = "ws://" + __SERVER__NAME + ":" + __PORT + "/control";
+    }
+
+    return new WebSocket(url);
+}
+
diff --git a/third_party/WebKit/LayoutTests/fast/css/crash-on-gradient-with-derived-color-expected.txt b/third_party/WebKit/LayoutTests/fast/css/crash-on-gradient-with-derived-color-expected.txt
index 13c46a3..97296481 100644
--- a/third_party/WebKit/LayoutTests/fast/css/crash-on-gradient-with-derived-color-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/css/crash-on-gradient-with-derived-color-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-linear-gradient is deprecated. Please use linear-gradient instead.
 This test passes if it does not CRASH.
diff --git a/third_party/WebKit/LayoutTests/fast/css/linear-gradient-currentcolor-expected.txt b/third_party/WebKit/LayoutTests/fast/css/linear-gradient-currentcolor-expected.txt
index 95688a3..8b13789 100644
--- a/third_party/WebKit/LayoutTests/fast/css/linear-gradient-currentcolor-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/css/linear-gradient-currentcolor-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-linear-gradient is deprecated. Please use linear-gradient instead.
 
diff --git a/third_party/WebKit/LayoutTests/fast/css/number-parsing-crash-expected.txt b/third_party/WebKit/LayoutTests/fast/css/number-parsing-crash-expected.txt
index b23975c..75cf4f3 100644
--- a/third_party/WebKit/LayoutTests/fast/css/number-parsing-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/css/number-parsing-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This should not crash.  
diff --git a/third_party/WebKit/LayoutTests/fast/gradients/border-image-gradient-expected.txt b/third_party/WebKit/LayoutTests/fast/gradients/border-image-gradient-expected.txt
index b592b9c..f9a7cf98 100644
--- a/third_party/WebKit/LayoutTests/fast/gradients/border-image-gradient-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/gradients/border-image-gradient-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
 layer at (0,0) size 800x600
diff --git a/third_party/WebKit/LayoutTests/fast/gradients/border-image-gradient-sides-and-corners-expected.txt b/third_party/WebKit/LayoutTests/fast/gradients/border-image-gradient-sides-and-corners-expected.txt
index 717b6d8..31f81c2a 100644
--- a/third_party/WebKit/LayoutTests/fast/gradients/border-image-gradient-sides-and-corners-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/gradients/border-image-gradient-sides-and-corners-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
 layer at (0,0) size 800x600
diff --git a/third_party/WebKit/LayoutTests/fast/gradients/crash-on-1px-border-expected.txt b/third_party/WebKit/LayoutTests/fast/gradients/crash-on-1px-border-expected.txt
index 028f2ea..0ccb964 100644
--- a/third_party/WebKit/LayoutTests/fast/gradients/crash-on-1px-border-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/gradients/crash-on-1px-border-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Linear gradient with 1px border-bottom. Should not crash
 
 
diff --git a/third_party/WebKit/LayoutTests/fast/gradients/crash-on-degenerate-gradient-expected.txt b/third_party/WebKit/LayoutTests/fast/gradients/crash-on-degenerate-gradient-expected.txt
index 7aab428d..b39094f9 100644
--- a/third_party/WebKit/LayoutTests/fast/gradients/crash-on-degenerate-gradient-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/gradients/crash-on-degenerate-gradient-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-radial-gradient is deprecated. Please use radial-gradient instead.
 Degenerate Linear gradient. Should not crash
 
 
diff --git a/third_party/WebKit/LayoutTests/fast/gradients/crash-on-remove-expected.txt b/third_party/WebKit/LayoutTests/fast/gradients/crash-on-remove-expected.txt
index 2d911b6..c5e8fda 100644
--- a/third_party/WebKit/LayoutTests/fast/gradients/crash-on-remove-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/gradients/crash-on-remove-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for https://bugs.webkit.org/show_bug.cgi?id=18879 Reproducible crash when removing a gradient.
 
 The test should not crash and there should be a green square below.
diff --git a/third_party/WebKit/LayoutTests/fast/gradients/crash-on-tr-expected.txt b/third_party/WebKit/LayoutTests/fast/gradients/crash-on-tr-expected.txt
index 05fe84f9..751e426 100644
--- a/third_party/WebKit/LayoutTests/fast/gradients/crash-on-tr-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/gradients/crash-on-tr-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test should not crash (or ASSERT).
 There should also be a table cell with a gradient below.
 
diff --git a/third_party/WebKit/LayoutTests/fast/gradients/css3-radial-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/fast/gradients/css3-radial-gradient-crash-expected.txt
index 03d5a6f..d31f6ea 100644
--- a/third_party/WebKit/LayoutTests/fast/gradients/css3-radial-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/gradients/css3-radial-gradient-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-radial-gradient is deprecated. Please use radial-gradient instead.
 This test should not crash.
 
 
diff --git a/third_party/WebKit/LayoutTests/fast/gradients/gradient-on-pseudoelement-crash-expected.txt b/third_party/WebKit/LayoutTests/fast/gradients/gradient-on-pseudoelement-crash-expected.txt
index 094278b9..fc0660cf 100644
--- a/third_party/WebKit/LayoutTests/fast/gradients/gradient-on-pseudoelement-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/gradients/gradient-on-pseudoelement-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test should not crash.
diff --git a/third_party/WebKit/LayoutTests/fast/gradients/zero-range-repeating-gradient-hang-expected.txt b/third_party/WebKit/LayoutTests/fast/gradients/zero-range-repeating-gradient-hang-expected.txt
index 7ed5aa8..3d28c116 100644
--- a/third_party/WebKit/LayoutTests/fast/gradients/zero-range-repeating-gradient-hang-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/gradients/zero-range-repeating-gradient-hang-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-repeating-linear-gradient is deprecated. Please use repeating-linear-gradient instead.
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
 layer at (0,0) size 800x116
diff --git a/third_party/WebKit/LayoutTests/http/tests/cookies/resources/third-party-cookie-relaxing-iframe.html b/third_party/WebKit/LayoutTests/http/tests/cookies/resources/third-party-cookie-relaxing-iframe.html
index 6a8ec676..d6a6307b 100644
--- a/third_party/WebKit/LayoutTests/http/tests/cookies/resources/third-party-cookie-relaxing-iframe.html
+++ b/third_party/WebKit/LayoutTests/http/tests/cookies/resources/third-party-cookie-relaxing-iframe.html
@@ -25,13 +25,13 @@
 function showCookies()
 {
     alert("Test stage " + stage++ + " document.cookie is: " + document.cookie);
-    parent.window.postMessage("done", "*");    
+    parent.window.postMessage("done", "*");
 }
 
 function sendXHR(queryCommand)
 {
     if (window.testRunner) {
-        // setAlwaysAcceptCookies() takes effect asynchronously (IPC is involved).
+        // setBlockThirdPartyCookies() takes effect asynchronously (IPC is involved).
         testRunner.setBlockThirdPartyCookies(false);
     }
 
@@ -50,8 +50,8 @@
     if (window.testRunner) {
         testRunner.setBlockThirdPartyCookies(true);
     }
-    
-    parent.window.postMessage("done", "*");    
+
+    parent.window.postMessage("done", "*");
 }
 
 function resetCookiesAndNotifyDone()
diff --git a/third_party/WebKit/LayoutTests/inspector/coverage/decorations-after-script-formatter-expected.txt b/third_party/WebKit/LayoutTests/inspector/coverage/decorations-after-script-formatter-expected.txt
index 378b26c..a863331 100644
--- a/third_party/WebKit/LayoutTests/inspector/coverage/decorations-after-script-formatter-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector/coverage/decorations-after-script-formatter-expected.txt
@@ -3,15 +3,15 @@
 Tests the gutter decorations in target source code after ScriptFormatterEditorAction
 
 0: + function outer(index) {
-1: - 
+1:   
 2: -     function inner1(a) {
 3: -         return a + 1;
 4: -     }
-5: - 
+5:   
 6: +     function inner2(a) {
 7: +         return a + 2;
 8: +     }
-9: - 
+9:   
 10: -     function inner3(a) {
 11: -         return a + 3;
 12: -     }
@@ -21,15 +21,15 @@
 16: -     function inner5(a) {
 17: -         return a + 5;
 18: -     }
-19: - 
+19:   
 20: +     return [inner1, inner2, inner3, inner4, inner5][index];
 21: + }
-22: - 
+22:   
 23: + function performActions() {
 24: +     return outer(1)(0) + outer(3)(0);
 25: + }
 26: - function outer2() {
 27: -     return outer(0)(0);
 28: - }
-29: - 
+29:   
 
diff --git a/third_party/WebKit/LayoutTests/inspector/coverage/gutter-css-expected.txt b/third_party/WebKit/LayoutTests/inspector/coverage/gutter-css-expected.txt
index e350ac9..c64c57eb 100644
--- a/third_party/WebKit/LayoutTests/inspector/coverage/gutter-css-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector/coverage/gutter-css-expected.txt
@@ -5,24 +5,24 @@
 0: + body {
 1: +     background-color: lightblue;
 2: + }
-3: - 
+3:   
 4: - .class {
 5: -     color: red;
 6: - }
-7: - 
+7:   
 8: - .class2 {
 9: -     color:green;
 10: -     font-style: italic;
 11: - }
-12: - 
+12:   
 13: + #id {
 14: +     color: blue
 15: + }
-16: - 
+16:   
 17: - notUsed {
 18: -     color: black
 19: - }
-20: - 
+20:   
 21: - notUsed2 {
 22: -     color: white
 23: - }
diff --git a/third_party/WebKit/LayoutTests/inspector/coverage/gutter-html-expected.txt b/third_party/WebKit/LayoutTests/inspector/coverage/gutter-html-expected.txt
new file mode 100644
index 0000000..277fa1c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector/coverage/gutter-html-expected.txt
@@ -0,0 +1,69 @@
+Tests the coverage highlight in sources after the recording finishes.
+
+0:   <html>
+1:   <head>
+2:   <script src="../../http/tests/inspector/inspector-test.js"></script>
+3:   <script src="../../http/tests/inspector/debugger-test.js"></script>
+4:   <script src="coverage-test.js"></script>
+5:   
+6:   <script>
+7: + function used1() {
+8: +   window.a += 4;
+9: + }
+10:   
+11: - function unused1() {
+12: -   window.a += 1;
+13: - }
+14:   </script>
+15:   
+16:   <script>
+17: - function unused2() {
+18: -   window.a += 0.5;
+19: - }
+20:   
+21: + function used2() {
+22: +   window.a += 4;
+23: + }
+24:   </script>
+25:   
+26:   <style>
+27: + .used {
+28: +   color: black;
+29: + }
+30:   
+31: - .notUsed {
+32: -   color: red;
+33: - }
+34:   </style>
+35:   
+36:   <style>
+37: - #not-used {
+38: -   color: red;
+39: - }
+40:   
+41: + #also-used {
+42: +   color: black;
+43: + }
+44:   </style>
+45:   
+46:   <script>
+47: + function performActions() {
+48: +   used1();
+49: +   used2();
+50: + }
+51:   
+52: - async function test()
+53: - {
+54: -     InspectorTest.startCoverage();
+55: -     await InspectorTest.evaluateInPagePromise("performActions()");
+56: -     await InspectorTest.stopCoverage();
+57: -     await InspectorTest.dumpDecorations("gutter-html.html");
+58: -     InspectorTest.completeTest();
+59: - }
+60:   </script>
+61:   </head>
+62:   <body onload="runTest()">
+63:   <p class="used" id="also-used">Tests the coverage highlight in sources after the recording finishes.</p>
+64:   </body>
+65:   </html>
+
diff --git a/third_party/WebKit/LayoutTests/inspector/coverage/gutter-html.html b/third_party/WebKit/LayoutTests/inspector/coverage/gutter-html.html
new file mode 100644
index 0000000..3ea6cf06
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector/coverage/gutter-html.html
@@ -0,0 +1,66 @@
+<html>
+<head>
+<script src="../../http/tests/inspector/inspector-test.js"></script>
+<script src="../../http/tests/inspector/debugger-test.js"></script>
+<script src="coverage-test.js"></script>
+
+<script>
+function used1() {
+  window.a += 4;
+}
+
+function unused1() {
+  window.a += 1;
+}
+</script>
+
+<script>
+function unused2() {
+  window.a += 0.5;
+}
+
+function used2() {
+  window.a += 4;
+}
+</script>
+
+<style>
+.used {
+  color: black;
+}
+
+.notUsed {
+  color: red;
+}
+</style>
+
+<style>
+#not-used {
+  color: red;
+}
+
+#also-used {
+  color: black;
+}
+</style>
+
+<script>
+function performActions() {
+  used1();
+  used2();
+}
+
+async function test()
+{
+    InspectorTest.startCoverage();
+    await InspectorTest.evaluateInPagePromise("performActions()");
+    await InspectorTest.stopCoverage();
+    await InspectorTest.dumpDecorations("gutter-html.html");
+    InspectorTest.completeTest();
+}
+</script>
+</head>
+<body onload="runTest()">
+<p class="used" id="also-used">Tests the coverage highlight in sources after the recording finishes.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/inspector/coverage/gutter-js-expected.txt b/third_party/WebKit/LayoutTests/inspector/coverage/gutter-js-expected.txt
index 31e646be..69a9ebac 100644
--- a/third_party/WebKit/LayoutTests/inspector/coverage/gutter-js-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector/coverage/gutter-js-expected.txt
@@ -3,24 +3,24 @@
 Tests the coverage highlight in sources after the recording finishes.
 
 0: + function outer(index) {
-1: - 
+1:   
 2: -   function inner1(a) {
 3: -     return a + 1;
 4: -   }
-5: - 
+5:   
 6: +   function inner2(a) {
 7: +     return a + 2;
 8: +   }
-9: - 
+9:   
 10: +   function inner3(a) { return a + 3; } function inner4(a) { return a + 4; } function inner5(a) { return a + 5; }
-11: - 
+11:   
 12: +   return [inner1, inner2, inner3, inner4, inner5][index];
 13: + }
-14: - 
+14:   
 15: + function performActions() {
 16: +   return outer(1)(0) + outer(3)(0);
 17: + } function outer2() {
 18: -   return outer(0)(0);
 19: - }
-20: - 
+20:   
 
diff --git a/third_party/WebKit/LayoutTests/inspector/coverage/multiple-instances-merge-expected.txt b/third_party/WebKit/LayoutTests/inspector/coverage/multiple-instances-merge-expected.txt
index a347ff25..5a355ff 100644
--- a/third_party/WebKit/LayoutTests/inspector/coverage/multiple-instances-merge-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector/coverage/multiple-instances-merge-expected.txt
@@ -6,46 +6,46 @@
 0: + body {
 1: +     background-color: lightblue;
 2: + }
-3: - 
+3:   
 4: + .class {
 5: +     color: red;
 6: + }
-7: - 
+7:   
 8: - .class2 {
 9: -     color:green;
 10: -     font-style: italic;
 11: - }
-12: - 
+12:   
 13: + #id {
 14: +     color: blue
 15: + }
-16: - 
+16:   
 17: - notUsed {
 18: -     color: black
 19: - }
-20: - 
+20:   
 21: - notUsed2 {
 22: -     color: white
 23: - }
 0: + function outer(index) {
-1: - 
+1:   
 2: -   function inner1(a) {
 3: -     return a + 1;
 4: -   }
-5: - 
+5:   
 6: +   function inner2(a) {
 7: +     return a + 2;
 8: +   }
-9: - 
+9:   
 10: +   function inner3(a) { return a + 3; } function inner4(a) { return a + 4; } function inner5(a) { return a + 5; }
-11: - 
+11:   
 12: +   return [inner1, inner2, inner3, inner4, inner5][index];
 13: + }
-14: - 
+14:   
 15: + function performActions() {
 16: +   return outer(1)(0) + outer(3)(0);
 17: + } function outer2() {
 18: -   return outer(0)(0);
 19: - }
-20: - 
+20:   
 
diff --git a/third_party/WebKit/LayoutTests/inspector/coverage/reveal-autoformat-expected.txt b/third_party/WebKit/LayoutTests/inspector/coverage/reveal-autoformat-expected.txt
index 2288877..1de39e2 100644
--- a/third_party/WebKit/LayoutTests/inspector/coverage/reveal-autoformat-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector/coverage/reveal-autoformat-expected.txt
@@ -5,58 +5,58 @@
 The below should be formatted
 0: - .this-line-needs-to-be-longer-than-five-hundred-symbols {
 1: - }
-2: - 
+2:   
 3: + body {
 4: +     background-color: lightblue;
 5: + }
-6: - 
+6:   
 7: - .class {
 8: -     color: red;
 9: - }
-10: - 
+10:   
 11: - .class2 {
 12: -     color: green;
 13: -     font-style: italic;
 14: - }
-15: - 
+15:   
 16: + #id {
 17: +     color: blue
 18: + }
-19: - 
+19:   
 20: - notUsed {
 21: -     color: black
 22: - }
-23: - 
+23:   
 24: - notUsed2 {
 25: -     color: white
 26: - }
-27: - 
+27:   
 28: - #this-line-needs-to-be-longer-than-five-hundred-symbols.this-line-needs-to-be-longer-than-five-hundred-symbols {
 29: -     content: "words don\'t come easy to me, how can I find a way to make a longer line";
 30: -     color: lightgoldenrodyellow;
 31: -     background-color: lightgoldenrodyellow;
 32: -     border-color: lightgoldenrodyellow;
 33: - }
-34: - 
+34:   
 The below should NOT be formatted
 0: + body {
 1: +     background-color: lightblue;
 2: + }
-3: - 
+3:   
 4: - .class {
 5: -     color: red;
 6: - }
-7: - 
+7:   
 8: - .class2 {    color:green;font-style: italic;
 9: - }
-10: - 
+10:   
 11: + #id {  color: blue
 12: + }
-13: - 
+13:   
 14: - notUsed {color: black}
-15: - 
+15:   
 16: - notUsed2 {
 17: -     color: white
 18: - }
-19: - 
+19:   
 
diff --git a/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/a-element-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/a-element-expected.txt
new file mode 100644
index 0000000..26dcb10c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/a-element-expected.txt
@@ -0,0 +1,486 @@
+This is a testharness.js-based test.
+Found 473 tests; 303 PASS, 170 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS Parsing: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Parsing: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Parsing: <https://test:@test> against <about:blank> 
+PASS Parsing: <https://:@test> against <about:blank> 
+FAIL Parsing: <non-special://test:@test/x> against <about:blank> assert_equals: href expected "non-special://test@test/x" but got "non-special://test:@test/x"
+FAIL Parsing: <non-special://:@test/x> against <about:blank> assert_equals: href expected "non-special://test/x" but got "non-special://:@test/x"
+PASS Parsing: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Parsing: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Parsing: < foo.com  > against <http://example.org/foo/bar> 
+PASS Parsing: <a:	 foo.com> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing: <lolscheme:x x#x x> against <about:blank> 
+PASS Parsing: <http://f:/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:0/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:b/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <http://f: /c> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://f: /c" but got "http://f:%20/c"
+PASS Parsing: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:fifty-two/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:999999/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <non-special://f:999999/c> against <http://example.org/foo/bar> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://f: 21 / b ? d # e > against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://f: 21 / b ? d # e " but got "http://f:%2021%20/%20b%20?%20d%20# e"
+PASS Parsing: <> against <http://example.org/foo/bar> 
+PASS Parsing: <  	> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <:> against <http://example.org/foo/bar> 
+PASS Parsing: <:a> against <http://example.org/foo/bar> 
+PASS Parsing: <:/> against <http://example.org/foo/bar> 
+PASS Parsing: <:\> against <http://example.org/foo/bar> 
+PASS Parsing: <:#> against <http://example.org/foo/bar> 
+PASS Parsing: <#> against <http://example.org/foo/bar> 
+PASS Parsing: <#/> against <http://example.org/foo/bar> 
+PASS Parsing: <#\> against <http://example.org/foo/bar> 
+PASS Parsing: <#;?> against <http://example.org/foo/bar> 
+PASS Parsing: <?> against <http://example.org/foo/bar> 
+PASS Parsing: </> against <http://example.org/foo/bar> 
+PASS Parsing: <:23> against <http://example.org/foo/bar> 
+PASS Parsing: </:23> against <http://example.org/foo/bar> 
+PASS Parsing: <::> against <http://example.org/foo/bar> 
+PASS Parsing: <::23> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://> against <http://example.org/foo/bar> assert_equals: pathname expected "" but got "//"
+PASS Parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Parsing: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/bar.com/> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: pathname expected "///////" but got "/////////"
+FAIL Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: pathname expected "///////bar.com/" but got "/////////bar.com/"
+FAIL Parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: pathname expected "//://///" but got "////://///"
+PASS Parsing: <c:/foo> against <http://example.org/foo/bar> 
+PASS Parsing: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Parsing: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Parsing: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+FAIL Parsing: <http://[1::2]:3:4> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://[1::2]:3:4" but got "http://[1::2]:3:4/"
+FAIL Parsing: <http://2001::1> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1" but got "http://2001::1/"
+FAIL Parsing: <http://2001::1]> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1]" but got "http://2001::1]/"
+FAIL Parsing: <http://2001::1]:80> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1]:80" but got "http://2001::1]/"
+PASS Parsing: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <file:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <file://example:1/> against <about:blank> 
+PASS Parsing: <file://example:test/> against <about:blank> 
+FAIL Parsing: <file://example%/> against <about:blank> assert_equals: failure should set href to input expected "file://example%/" but got "file://example%25/"
+PASS Parsing: <file://[example]/> against <about:blank> 
+PASS Parsing: <ftps:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftps:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: </a/b/c> against <http://example.org/foo/bar> 
+PASS Parsing: </a/ /c> against <http://example.org/foo/bar> 
+PASS Parsing: </a%2fc> against <http://example.org/foo/bar> 
+PASS Parsing: </a/%2f/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <#β> against <http://example.org/foo/bar> assert_equals: href expected "http://example.org/foo/bar#%CE%B2" but got "http://example.org/foo/bar#β"
+PASS Parsing: <data:text/html,test#test> against <http://example.org/foo/bar> 
+PASS Parsing: <tel:1234567890> against <http://example.org/foo/bar> 
+FAIL Parsing: <file:c:\foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:/foo/bar.html" but got "file:///tmp/mock/c:/foo/bar.html"
+FAIL Parsing: <  File:c|////foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:////foo/bar.html" but got "file:///tmp/mock/c%7C////foo/bar.html"
+FAIL Parsing: <C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///tmp/mock/C%7C/foo/bar"
+FAIL Parsing: </C|\foo\bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///C%7C/foo/bar"
+FAIL Parsing: <//C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file://c%7C/foo/bar"
+PASS Parsing: <//server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <\\server\file> against <file:///tmp/mock/path> 
+PASS Parsing: </\server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///foo/bar.txt> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///home/me> against <file:///tmp/mock/path> 
+PASS Parsing: <//> against <file:///tmp/mock/path> 
+PASS Parsing: <///> against <file:///tmp/mock/path> 
+PASS Parsing: <///test> against <file:///tmp/mock/path> 
+PASS Parsing: <file://test> against <file:///tmp/mock/path> 
+FAIL Parsing: <file://localhost> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/test> against <file:///tmp/mock/path> assert_equals: href expected "file:///test" but got "file://localhost/test"
+PASS Parsing: <test> against <file:///tmp/mock/path> 
+PASS Parsing: <file:test> against <file:///tmp/mock/path> 
+PASS Parsing: <http://example.com/././foo> against <about:blank> 
+PASS Parsing: <http://example.com/./.foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo/.> against <about:blank> 
+PASS Parsing: <http://example.com/foo/./> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Parsing: <http://example.com/foo/..bar> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 
+FAIL Parsing: <http://example.com/foo/%2e%2> against <about:blank> assert_equals: href expected "http://example.com/foo/%2e%2" but got "http://example.com/foo/.%2"
+FAIL Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> assert_equals: href expected "http://example.com/%2e.bar" but got "http://example.com/..bar"
+PASS Parsing: <http://example.com////../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Parsing: <http://example.com/foo> against <about:blank> 
+PASS Parsing: <http://example.com/%20foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo%> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2©zbar> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%41%7a> against <about:blank> assert_equals: href expected "http://example.com/foo%41%7a" but got "http://example.com/fooAz"
+PASS Parsing: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%00%51> against <about:blank> assert_equals: href expected "http://example.com/foo%00%51" but got "http://example.com/foo%00Q"
+PASS Parsing: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Parsing: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Parsing: <http://example.com/foo	bar> against <about:blank> 
+PASS Parsing: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Parsing: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Parsing: <http://example.com/@asdf%40> against <about:blank> 
+PASS Parsing: <http://example.com/你好你好> against <about:blank> 
+PASS Parsing: <http://example.com/‥/foo> against <about:blank> 
+PASS Parsing: <http://example.com//foo> against <about:blank> 
+PASS Parsing: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Parsing: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+FAIL Parsing: <http://www.google.com/foo?bar=baz# »> against <about:blank> assert_equals: href expected "http://www.google.com/foo?bar=baz# %C2%BB" but got "http://www.google.com/foo?bar=baz# »"
+PASS Parsing: <data:test# »> against <about:blank> 
+PASS Parsing: <http://www.google.com> against <about:blank> 
+PASS Parsing: <http://192.0x00A80001> against <about:blank> 
+FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo%2Ehtml" but got "http://www/foo.html"
+PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 
+PASS Parsing: <http://user:pass@/> against <about:blank> 
+PASS Parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 
+PASS Parsing: <http://foo:80/> against <about:blank> 
+PASS Parsing: <http://foo:81/> against <about:blank> 
+FAIL Parsing: <httpa://foo:80/> against <about:blank> assert_equals: host expected "foo:80" but got ""
+PASS Parsing: <http://foo:-80/> against <about:blank> 
+PASS Parsing: <https://foo:443/> against <about:blank> 
+PASS Parsing: <https://foo:80/> against <about:blank> 
+PASS Parsing: <ftp://foo:21/> against <about:blank> 
+PASS Parsing: <ftp://foo:80/> against <about:blank> 
+PASS Parsing: <gopher://foo:70/> against <about:blank> 
+PASS Parsing: <gopher://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:80/> against <about:blank> 
+PASS Parsing: <ws://foo:81/> against <about:blank> 
+PASS Parsing: <ws://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:815/> against <about:blank> 
+PASS Parsing: <wss://foo:80/> against <about:blank> 
+PASS Parsing: <wss://foo:81/> against <about:blank> 
+PASS Parsing: <wss://foo:443/> against <about:blank> 
+PASS Parsing: <wss://foo:815/> against <about:blank> 
+PASS Parsing: <http:/example.com/> against <about:blank> 
+PASS Parsing: <ftp:/example.com/> against <about:blank> 
+PASS Parsing: <https:/example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:/example.com/> against <about:blank> 
+PASS Parsing: <file:/example.com/> against <about:blank> 
+PASS Parsing: <ftps:/example.com/> against <about:blank> 
+PASS Parsing: <gopher:/example.com/> against <about:blank> 
+PASS Parsing: <ws:/example.com/> against <about:blank> 
+PASS Parsing: <wss:/example.com/> against <about:blank> 
+PASS Parsing: <data:/example.com/> against <about:blank> 
+PASS Parsing: <javascript:/example.com/> against <about:blank> 
+PASS Parsing: <mailto:/example.com/> against <about:blank> 
+PASS Parsing: <http:example.com/> against <about:blank> 
+PASS Parsing: <ftp:example.com/> against <about:blank> 
+PASS Parsing: <https:example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:example.com/> against <about:blank> 
+PASS Parsing: <ftps:example.com/> against <about:blank> 
+PASS Parsing: <gopher:example.com/> against <about:blank> 
+PASS Parsing: <ws:example.com/> against <about:blank> 
+PASS Parsing: <wss:example.com/> against <about:blank> 
+PASS Parsing: <data:example.com/> against <about:blank> 
+PASS Parsing: <javascript:example.com/> against <about:blank> 
+PASS Parsing: <mailto:example.com/> against <about:blank> 
+PASS Parsing: <http:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/@www.example.com> against <about:blank> 
+PASS Parsing: <http://@www.example.com> against <about:blank> 
+PASS Parsing: <http:a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://@pple.com> against <about:blank> 
+PASS Parsing: <http::b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://:b@www.example.com> against <about:blank> 
+FAIL Parsing: <http:/:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/:@/www.example.com" but got "http:///www.example.com"
+PASS Parsing: <http://user@/www.example.com> against <about:blank> 
+FAIL Parsing: <http:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <http:/@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <http://@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http://@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <https:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "https:@/www.example.com" but got "https:///www.example.com"
+FAIL Parsing: <http:a:b@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:a:b@/www.example.com" but got "http://a:b@/www.example.com"
+FAIL Parsing: <http:/a:b@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/a:b@/www.example.com" but got "http://a:b@/www.example.com"
+PASS Parsing: <http://a:b@/www.example.com> against <about:blank> 
+FAIL Parsing: <http::@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http::@/www.example.com" but got "http:///www.example.com"
+PASS Parsing: <http:a:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://www.@pple.com> against <about:blank> 
+FAIL Parsing: <http:@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:@:www.example.com" but got "http://:www.example.com/"
+FAIL Parsing: <http:/@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/@:www.example.com" but got "http://:www.example.com/"
+FAIL Parsing: <http://@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http://@:www.example.com" but got "http://:www.example.com/"
+PASS Parsing: <http://:@www.example.com> against <about:blank> 
+PASS Parsing: </> against <http://www.example.com/test> 
+PASS Parsing: </test.txt> against <http://www.example.com/test> 
+PASS Parsing: <.> against <http://www.example.com/test> 
+PASS Parsing: <..> against <http://www.example.com/test> 
+PASS Parsing: <test.txt> against <http://www.example.com/test> 
+PASS Parsing: <./test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <中/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Parsing: <//www.example2.com> against <http://www.example.com/test> 
+PASS Parsing: <file:...> against <http://www.example.com/test> 
+PASS Parsing: <file:..> against <http://www.example.com/test> 
+PASS Parsing: <file:a> against <http://www.example.com/test> 
+PASS Parsing: <http://ExAmPlE.CoM> against <http://other.com/> 
+FAIL Parsing: <http://example example.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://Goo%20 goo%7C|.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[]" but got "http://[]/"
+FAIL Parsing: <http://[:]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[:]" but got "http://[:]/"
+FAIL Parsing: <http://GOO  goo.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Parsing: <http://www.foo。bar.com> against <http://other.com/> 
+FAIL Parsing: <http://﷐zyx.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://﷐zyx.com" but got "http://%EF%BF%BDzyx.com/"
+FAIL Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%ef%b7%90zyx.com" but got "http://%EF%BF%BDzyx.com/"
+FAIL Parsing: <https://�> against <about:blank> assert_equals: failure should set href to input expected "https://\ufffd" but got "https://%EF%BF%BD/"
+FAIL Parsing: <https://%EF%BF%BD> against <about:blank> assert_equals: failure should set href to input expected "https://%EF%BF%BD" but got "https://%EF%BF%BD/"
+FAIL Parsing: <https://x/�?�#�> against <about:blank> assert_equals: href expected "https://x/%EF%BF%BD?%EF%BF%BD#%EF%BF%BD" but got "https://x/%EF%BF%BD?%EF%BF%BD#\ufffd"
+PASS Parsing: <http://Go.com> against <http://other.com/> 
+FAIL Parsing: <http://%41.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://%00.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%00.com" but got "http://%00.com/"
+FAIL Parsing: <http://%ef%bc%85%ef%bc%90%ef%bc%90.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%ef%bc%85%ef%bc%90%ef%bc%90.com" but got "http://%00.com/"
+PASS Parsing: <http://你好你好> against <http://other.com/> 
+FAIL Parsing: <https://faß.ExAmPlE/> against <about:blank> assert_equals: href expected "https://xn--fa-hia.example/" but got "https://fass.example/"
+FAIL Parsing: <sc://faß.ExAmPlE/> against <about:blank> assert_equals: host expected "fa%C3%9F.ExAmPlE" but got ""
+FAIL Parsing: <http://%zz%66%a.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%zz%66%a.com" but got "http://%25zzf%25a.com/"
+FAIL Parsing: <http://%25> against <http://other.com/> assert_equals: failure should set href to input expected "http://%25" but got "http://%25/"
+FAIL Parsing: <http://hello%00> against <http://other.com/> assert_equals: failure should set href to input expected "http://hello%00" but got "http://hello%00/"
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+FAIL Parsing: <http://192.168.0.257> against <http://other.com/> assert_equals: failure should set href to input expected "http://192.168.0.257" but got "http://192.168.0.257/"
+FAIL Parsing: <http://%3g%78%63%30%2e%30%32%35%30%2E.01> against <http://other.com/> assert_equals: failure should set href to input expected "http://%3g%78%63%30%2e%30%32%35%30%2E.01" but got "http://%253gxc0.0250..01/"
+FAIL Parsing: <http://192.168.0.1 hello> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <https://x x:12> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Parsing: <http://./> against <about:blank> 
+PASS Parsing: <http://../> against <about:blank> 
+PASS Parsing: <http://0..0x300/> against <about:blank> 
+PASS Parsing: <http://[www.google.com]/> against <about:blank> 
+FAIL Parsing: <http://[google.com]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[google.com]" but got "http://[google.com]/"
+FAIL Parsing: <http://[::1.2.3.4x]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[::1.2.3.4x]" but got "http://[::1.2.3.4x]/"
+FAIL Parsing: <http://[::1.2.3.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[::1.2.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[::1.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://foo:💩@example.com/bar> against <http://other.com/> 
+PASS Parsing: <#> against <test:test> 
+PASS Parsing: <#x> against <mailto:x@x.com> 
+FAIL Parsing: <#x> against <data:,> assert_equals: href expected "data:,#x" but got "mailto:x@x.com#x"
+PASS Parsing: <#x> against <about:blank> 
+PASS Parsing: <#> against <test:test?test> 
+PASS Parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Parsing: </some/path> against <http://user@example.org/smth> 
+PASS Parsing: <> against <http://user:pass@example.org:21/smth> 
+PASS Parsing: </some/path> against <http://user:pass@example.org:21/smth> 
+FAIL Parsing: <i> against <sc:sd> assert_equals: failure should set href to input expected "i" but got ""
+FAIL Parsing: <i> against <sc:sd/sd> assert_equals: failure should set href to input expected "i" but got ""
+PASS Parsing: <i> against <sc:/pa/pa> 
+FAIL Parsing: <i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/i" but got "///pa/i"
+FAIL Parsing: <../i> against <sc:sd> assert_equals: failure should set href to input expected "../i" but got ""
+FAIL Parsing: <../i> against <sc:sd/sd> assert_equals: failure should set href to input expected "../i" but got ""
+PASS Parsing: <../i> against <sc:/pa/pa> 
+FAIL Parsing: <../i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <../i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+FAIL Parsing: </i> against <sc:sd> assert_equals: failure should set href to input expected "/i" but got ""
+FAIL Parsing: </i> against <sc:sd/sd> assert_equals: failure should set href to input expected "/i" but got ""
+PASS Parsing: </i> against <sc:/pa/pa> 
+FAIL Parsing: </i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: </i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+FAIL Parsing: <?i> against <sc:sd> assert_equals: failure should set href to input expected "?i" but got ""
+FAIL Parsing: <?i> against <sc:sd/sd> assert_equals: failure should set href to input expected "?i" but got ""
+PASS Parsing: <?i> against <sc:/pa/pa> 
+FAIL Parsing: <?i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <?i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+PASS Parsing: <#i> against <sc:sd> 
+PASS Parsing: <#i> against <sc:sd/sd> 
+PASS Parsing: <#i> against <sc:/pa/pa> 
+FAIL Parsing: <#i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <#i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+FAIL Parsing: <about:/../> against <about:blank> assert_equals: href expected "about:/" but got "about:/../"
+FAIL Parsing: <data:/../> against <about:blank> assert_equals: href expected "data:/" but got "data:/../"
+FAIL Parsing: <javascript:/../> against <about:blank> assert_equals: href expected "javascript:/" but got "javascript:/../"
+FAIL Parsing: <mailto:/../> against <about:blank> assert_equals: href expected "mailto:/" but got "mailto:/../"
+FAIL Parsing: <sc://ñ.test/> against <about:blank> assert_equals: host expected "%C3%B1.test" but got ""
+FAIL Parsing: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: host expected "%1F!\"$&'()*+,-.;<=>^_`{|}~" but got ""
+FAIL Parsing: <sc://\0/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc:// /> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://%/> against <about:blank> assert_equals: host expected "%" but got ""
+FAIL Parsing: <sc://@/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://te@s:t@/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://:/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://:12/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://[/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://\/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://]/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1/x" but got "sc://%C3%B1"
+PASS Parsing: <sc:\../> against <about:blank> 
+PASS Parsing: <sc::a@example.net> against <about:blank> 
+PASS Parsing: <wow:%NBD> against <about:blank> 
+PASS Parsing: <wow:%1G> against <about:blank> 
+FAIL Parsing: <ftp://example.com%80/> against <about:blank> assert_equals: failure should set href to input expected "ftp://example.com%80/" but got "ftp://example.com%EF%BF%BD/"
+FAIL Parsing: <ftp://example.com%A0/> against <about:blank> assert_equals: failure should set href to input expected "ftp://example.com%A0/" but got "ftp://example.com%EF%BF%BD/"
+FAIL Parsing: <https://example.com%80/> against <about:blank> assert_equals: failure should set href to input expected "https://example.com%80/" but got "https://example.com%EF%BF%BD/"
+FAIL Parsing: <https://example.com%A0/> against <about:blank> assert_equals: failure should set href to input expected "https://example.com%A0/" but got "https://example.com%EF%BF%BD/"
+PASS Parsing: <ftp://%e2%98%83> against <about:blank> 
+PASS Parsing: <https://%e2%98%83> against <about:blank> 
+PASS Parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Parsing: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Parsing: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <https://example.org/foo/bar> 
+PASS Parsing: <sc:> against <https://example.org/foo/bar> 
+PASS Parsing: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Parsing: <http://192.168.257> against <http://other.com/> 
+PASS Parsing: <http://192.168.257.com> against <http://other.com/> 
+PASS Parsing: <http://256> against <http://other.com/> 
+PASS Parsing: <http://256.com> against <http://other.com/> 
+PASS Parsing: <http://999999999> against <http://other.com/> 
+PASS Parsing: <http://999999999.com> against <http://other.com/> 
+FAIL Parsing: <http://10000000000> against <http://other.com/> assert_equals: failure should set href to input expected "http://10000000000" but got "http://10000000000/"
+PASS Parsing: <http://10000000000.com> against <http://other.com/> 
+PASS Parsing: <http://4294967295> against <http://other.com/> 
+FAIL Parsing: <http://4294967296> against <http://other.com/> assert_equals: failure should set href to input expected "http://4294967296" but got "http://4294967296/"
+PASS Parsing: <http://0xffffffff> against <http://other.com/> 
+FAIL Parsing: <http://0xffffffff1> against <http://other.com/> assert_equals: failure should set href to input expected "http://0xffffffff1" but got "http://0xffffffff1/"
+FAIL Parsing: <http://256.256.256.256> against <http://other.com/> assert_equals: failure should set href to input expected "http://256.256.256.256" but got "http://256.256.256.256/"
+PASS Parsing: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Parsing: <https://0x.0x.0> against <about:blank> 
+PASS Parsing: <file:///C%3A/> against <about:blank> 
+PASS Parsing: <file:///C%7C/> against <about:blank> 
+PASS Parsing: <pix/submit.gif> against <file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html> 
+FAIL Parsing: <..> against <file:///C:/> assert_equals: href expected "file:///C:/" but got "file:///"
+PASS Parsing: <..> against <file:///> 
+FAIL Parsing: </> against <file:///C:/a/b> assert_equals: href expected "file:///C:/" but got "file:///"
+FAIL Parsing: <//d:> against <file:///C:/a/b> assert_equals: href expected "file:///d:" but got "file://d:/"
+FAIL Parsing: <//d:/..> against <file:///C:/a/b> assert_equals: href expected "file:///d:/" but got "file://d:/"
+PASS Parsing: <..> against <file:///ab:/> 
+PASS Parsing: <..> against <file:///1:/> 
+PASS Parsing: <> against <file:///test?test#test> 
+PASS Parsing: <file:> against <file:///test?test#test> 
+PASS Parsing: <?x> against <file:///test?test#test> 
+PASS Parsing: <file:?x> against <file:///test?test#test> 
+PASS Parsing: <#x> against <file:///test?test#test> 
+PASS Parsing: <file:#x> against <file:///test?test#test> 
+PASS Parsing: <file:\\//> against <about:blank> 
+PASS Parsing: <file:\\\\> against <about:blank> 
+PASS Parsing: <file:\\\\?fox> against <about:blank> 
+PASS Parsing: <file:\\\\#guppy> against <about:blank> 
+FAIL Parsing: <file://spider///> against <about:blank> assert_equals: href expected "file://spider/" but got "file://spider///"
+FAIL Parsing: <file:\\localhost//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost//"
+PASS Parsing: <file:///localhost//cat> against <about:blank> 
+PASS Parsing: <file://\/localhost//cat> against <about:blank> 
+FAIL Parsing: <file://localhost//a//../..//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost///"
+PASS Parsing: </////mouse> against <file:///elephant> 
+PASS Parsing: <\//pig> against <file://lion/> 
+FAIL Parsing: <\/localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: <//localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: </..//localhost//pig> against <file://lion/> assert_equals: href expected "file://lion/localhost//pig" but got "file://lion//localhost//pig"
+PASS Parsing: <file://> against <file://ape/> 
+PASS Parsing: </rooibos> against <file://tea/> 
+PASS Parsing: </?chai> against <file://tea/> 
+FAIL Parsing: <C|> against <file://host/dir/file> assert_equals: href expected "file:///C:" but got "file://host/dir/C%7C"
+FAIL Parsing: <C|#> against <file://host/dir/file> assert_equals: href expected "file:///C:#" but got "file://host/dir/C%7C#"
+FAIL Parsing: <C|?> against <file://host/dir/file> assert_equals: href expected "file:///C:?" but got "file://host/dir/C%7C?"
+FAIL Parsing: <C|/> against <file://host/dir/file> assert_equals: href expected "file:///C:/" but got "file://host/dir/C%7C/"
+FAIL Parsing: <C|\> against <file://host/dir/file> assert_equals: href expected "file:///C:/" but got "file://host/dir/C%7C/"
+PASS Parsing: <C> against <file://host/dir/file> 
+FAIL Parsing: <C|a> against <file://host/dir/file> assert_equals: href expected "file://host/dir/C|a" but got "file://host/dir/C%7Ca"
+FAIL Parsing: <file://example.net/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://example.net/C:/"
+FAIL Parsing: <file://1.2.3.4/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://1.2.3.4/C:/"
+FAIL Parsing: <file://[1::8]/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://[1::8]/C:/"
+FAIL Parsing: <file:/C|/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file:///C%7C/"
+FAIL Parsing: <file://C|/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://c%7C/"
+PASS Parsing: <file:> against <about:blank> 
+PASS Parsing: <file:?q=v> against <about:blank> 
+PASS Parsing: <file:#frag> against <about:blank> 
+PASS Parsing: <http://[1:0::]> against <http://example.net/> 
+FAIL Parsing: <http://[0:1:2:3:4:5:6:7:8]> against <http://example.net/> assert_equals: failure should set href to input expected "http://[0:1:2:3:4:5:6:7:8]" but got "http://[0:1:2:3:4:5:6:7:8]/"
+FAIL Parsing: <https://[0::0::0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0::0::0]" but got "https://[0::0::0]/"
+FAIL Parsing: <https://[0:.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:.0]" but got "https://[0:.0]/"
+FAIL Parsing: <https://[0:0:]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:0:]" but got "https://[0:0:]/"
+FAIL Parsing: <https://[0:1:2:3:4:5:6:7.0.0.0.1]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1:2:3:4:5:6:7.0.0.0.1]" but got "https://[0:1:2:3:4:5:6:7.0.0.0.1]/"
+FAIL Parsing: <https://[0:1.00.0.0.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.00.0.0.0]" but got "https://[0:1.00.0.0.0]/"
+FAIL Parsing: <https://[0:1.290.0.0.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.290.0.0.0]" but got "https://[0:1.290.0.0.0]/"
+FAIL Parsing: <https://[0:1.23.23]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.23.23]" but got "https://[0:1.23.23]/"
+FAIL Parsing: <http://?> against <about:blank> assert_equals: failure should set href to input expected "http://?" but got "http:/?"
+FAIL Parsing: <http://#> against <about:blank> assert_equals: failure should set href to input expected "http://#" but got "http:/#"
+FAIL Parsing: <sc://ñ> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ?x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ#x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <#x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1#x" but got "sc://%C3%B1"
+FAIL Parsing: <?x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1?x" but got "sc://%C3%B1"
+FAIL Parsing: <sc://?> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <sc://#> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <///> against <sc://x/> assert_equals: href expected "sc:///" but got "sc:"
+FAIL Parsing: <////> against <sc://x/> assert_equals: href expected "sc:////" but got "sc:"
+FAIL Parsing: <////x/> against <sc://x/> assert_equals: href expected "sc:////x/" but got "sc://x/"
+FAIL Parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: host expected "foobar.com" but got ""
+FAIL Parsing: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: username expected "user" but got ""
+FAIL Parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: host expected "10.10.10.10:7777" but got ""
+FAIL Parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <rsync://foo@host:911/sup> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <git://github.com/foo/bar.git> against <about:blank> assert_equals: host expected "github.com" but got ""
+FAIL Parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: host expected "myserver.com:6999" but got ""
+FAIL Parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: host expected "fw.example.org:9999" but got ""
+FAIL Parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: host expected "localhost:389" but got ""
+FAIL Parsing: <git+https://github.com/foo/bar> against <about:blank> assert_equals: host expected "github.com" but got ""
+PASS Parsing: <urn:ietf:rfc:2648> against <about:blank> 
+PASS Parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank> 
+FAIL Parsing: <non-special://%E2%80%A0/> against <about:blank> assert_equals: host expected "%E2%80%A0" but got ""
+FAIL Parsing: <non-special://H%4fSt/path> against <about:blank> assert_equals: host expected "H%4fSt" but got ""
+FAIL Parsing: <non-special://[1:2:0:0:5:0:0:0]/> against <about:blank> assert_equals: href expected "non-special://[1:2:0:0:5::]/" but got "non-special://[1:2:0:0:5:0:0:0]/"
+FAIL Parsing: <non-special://[1:2:0:0:0:0:0:3]/> against <about:blank> assert_equals: href expected "non-special://[1:2::3]/" but got "non-special://[1:2:0:0:0:0:0:3]/"
+FAIL Parsing: <non-special://[1:2::3]:80/> against <about:blank> assert_equals: host expected "[1:2::3]:80" but got ""
+FAIL Parsing: <non-special://[:80/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <blob:https://example.com:443/> against <about:blank> 
+PASS Parsing: <blob:d3958f5c-0777-0845-9dcf-2cb28783acaf> against <about:blank> 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/a-element-origin-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/a-element-origin-expected.txt
new file mode 100644
index 0000000..3502d0c8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/a-element-origin-expected.txt
@@ -0,0 +1,307 @@
+This is a testharness.js-based test.
+Found 294 tests; 219 PASS, 75 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS Parsing origin: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https://test:@test> against <about:blank> 
+PASS Parsing origin: <https://:@test> against <about:blank> 
+FAIL Parsing origin: <non-special://test:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+FAIL Parsing origin: <non-special://:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+PASS Parsing origin: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Parsing origin: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Parsing origin: < foo.com  > against <http://example.org/foo/bar> 
+FAIL Parsing origin: <a:	 foo.com> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "a://"
+PASS Parsing origin: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://f:/c> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <http://f:0/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+FAIL Parsing origin: <http://f:00000000000000/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+PASS Parsing origin: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <> against <http://example.org/foo/bar> 
+PASS Parsing origin: <  	> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:a> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:#> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#;?> against <http://example.org/foo/bar> 
+PASS Parsing origin: <?> against <http://example.org/foo/bar> 
+PASS Parsing origin: </> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:23> against <http://example.org/foo/bar> 
+PASS Parsing origin: </:23> against <http://example.org/foo/bar> 
+PASS Parsing origin: <::> against <http://example.org/foo/bar> 
+PASS Parsing origin: <::23> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <foo://> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+PASS Parsing origin: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <foo:/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo:/bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo://///////> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo:////://///> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <c:/foo> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "c://"
+PASS Parsing origin: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Parsing origin: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https:/example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <madeupscheme:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <javascript:/example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <mailto:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https:example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <madeupscheme:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <javascript:example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <mailto:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: </a/b/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a/ /c> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a%2fc> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a/%2f/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#β> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:text/html,test#test> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <tel:1234567890> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "tel://"
+PASS Parsing origin: <http://example.com/././foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/./.foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/.> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/./> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/..bar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/../../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e%2> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 
+PASS Parsing origin: <http://example.com////../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/%20foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2©zbar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%41%7a> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Parsing origin: <http://example.com/foo%00%51> against <about:blank> assert_equals: origin expected "http://example.com" but got "null"
+PASS Parsing origin: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Parsing origin: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo	bar> against <about:blank> 
+PASS Parsing origin: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Parsing origin: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Parsing origin: <http://example.com/@asdf%40> against <about:blank> 
+PASS Parsing origin: <http://example.com/你好你好> against <about:blank> 
+PASS Parsing origin: <http://example.com/‥/foo> against <about:blank> 
+PASS Parsing origin: <http://example.com//foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Parsing origin: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+PASS Parsing origin: <http://www.google.com/foo?bar=baz# »> against <about:blank> 
+PASS Parsing origin: <data:test# »> against <about:blank> 
+PASS Parsing origin: <http://www.google.com> against <about:blank> 
+PASS Parsing origin: <http://192.0x00A80001> against <about:blank> 
+PASS Parsing origin: <http://www/foo%2Ehtml> against <about:blank> 
+PASS Parsing origin: <http://www/foo/%2E/html> against <about:blank> 
+PASS Parsing origin: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Parsing origin: <http:\\www.google.com\foo> against <about:blank> 
+PASS Parsing origin: <http://foo:80/> against <about:blank> 
+PASS Parsing origin: <http://foo:81/> against <about:blank> 
+FAIL Parsing origin: <httpa://foo:80/> against <about:blank> assert_equals: origin expected "null" but got "httpa://"
+PASS Parsing origin: <https://foo:443/> against <about:blank> 
+PASS Parsing origin: <https://foo:80/> against <about:blank> 
+PASS Parsing origin: <ftp://foo:21/> against <about:blank> 
+PASS Parsing origin: <ftp://foo:80/> against <about:blank> 
+PASS Parsing origin: <gopher://foo:70/> against <about:blank> 
+PASS Parsing origin: <gopher://foo:443/> against <about:blank> 
+PASS Parsing origin: <ws://foo:80/> against <about:blank> 
+PASS Parsing origin: <ws://foo:81/> against <about:blank> 
+PASS Parsing origin: <ws://foo:443/> against <about:blank> 
+PASS Parsing origin: <ws://foo:815/> against <about:blank> 
+PASS Parsing origin: <wss://foo:80/> against <about:blank> 
+PASS Parsing origin: <wss://foo:81/> against <about:blank> 
+PASS Parsing origin: <wss://foo:443/> against <about:blank> 
+PASS Parsing origin: <wss://foo:815/> against <about:blank> 
+PASS Parsing origin: <http:/example.com/> against <about:blank> 
+PASS Parsing origin: <ftp:/example.com/> against <about:blank> 
+PASS Parsing origin: <https:/example.com/> against <about:blank> 
+FAIL Parsing origin: <madeupscheme:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:/example.com/> against <about:blank> 
+PASS Parsing origin: <ws:/example.com/> against <about:blank> 
+PASS Parsing origin: <wss:/example.com/> against <about:blank> 
+PASS Parsing origin: <data:/example.com/> against <about:blank> 
+PASS Parsing origin: <javascript:/example.com/> against <about:blank> 
+FAIL Parsing origin: <mailto:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:example.com/> against <about:blank> 
+PASS Parsing origin: <ftp:example.com/> against <about:blank> 
+PASS Parsing origin: <https:example.com/> against <about:blank> 
+FAIL Parsing origin: <madeupscheme:example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:example.com/> against <about:blank> 
+PASS Parsing origin: <ws:example.com/> against <about:blank> 
+PASS Parsing origin: <wss:example.com/> against <about:blank> 
+PASS Parsing origin: <data:example.com/> against <about:blank> 
+PASS Parsing origin: <javascript:example.com/> against <about:blank> 
+FAIL Parsing origin: <mailto:example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://@pple.com> against <about:blank> 
+PASS Parsing origin: <http::b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://www.@pple.com> against <about:blank> 
+PASS Parsing origin: <http://:@www.example.com> against <about:blank> 
+PASS Parsing origin: </> against <http://www.example.com/test> 
+PASS Parsing origin: </test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <.> against <http://www.example.com/test> 
+PASS Parsing origin: <..> against <http://www.example.com/test> 
+PASS Parsing origin: <test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <./test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../../test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <中/test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Parsing origin: <//www.example2.com> against <http://www.example.com/test> 
+PASS Parsing origin: <http://ExAmPlE.CoM> against <http://other.com/> 
+PASS Parsing origin: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Parsing origin: <http://www.foo。bar.com> against <http://other.com/> 
+PASS Parsing origin: <https://x/�?�#�> against <about:blank> 
+PASS Parsing origin: <http://Go.com> against <http://other.com/> 
+FAIL Parsing origin: <http://你好你好> against <http://other.com/> assert_equals: origin expected "http://你好你好" but got "http://xn--6qqa088eba"
+FAIL Parsing origin: <https://faß.ExAmPlE/> against <about:blank> assert_equals: origin expected "https://faß.example" but got "https://fass.example"
+PASS Parsing origin: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing origin: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+PASS Parsing origin: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Parsing origin: <http://./> against <about:blank> 
+PASS Parsing origin: <http://../> against <about:blank> 
+PASS Parsing origin: <http://0..0x300/> against <about:blank> 
+PASS Parsing origin: <http://foo:💩@example.com/bar> against <http://other.com/> 
+FAIL Parsing origin: <#> against <test:test> assert_equals: origin expected "null" but got "test://"
+FAIL Parsing origin: <#x> against <mailto:x@x.com> assert_equals: origin expected "null" but got "mailto://"
+FAIL Parsing origin: <#x> against <data:,> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <#x> against <about:blank> 
+FAIL Parsing origin: <#> against <test:test?test> assert_equals: origin expected "null" but got "test://"
+PASS Parsing origin: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing origin: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing origin: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Parsing origin: </some/path> against <http://user@example.org/smth> 
+PASS Parsing origin: <> against <http://user:pass@example.org:21/smth> 
+PASS Parsing origin: </some/path> against <http://user:pass@example.org:21/smth> 
+FAIL Parsing origin: <i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:sd/sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <about:/../> against <about:blank> 
+PASS Parsing origin: <data:/../> against <about:blank> 
+PASS Parsing origin: <javascript:/../> against <about:blank> 
+FAIL Parsing origin: <mailto:/../> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+FAIL Parsing origin: <sc://ñ.test/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <x> against <sc://ñ> 
+FAIL Parsing origin: <sc:\../> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc::a@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <wow:%NBD> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Parsing origin: <wow:%1G> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Parsing origin: <ftp://%e2%98%83> against <about:blank> assert_equals: origin expected "ftp://☃" but got "ftp://xn--n3h"
+FAIL Parsing origin: <https://%e2%98%83> against <about:blank> assert_equals: origin expected "https://☃" but got "https://xn--n3h"
+PASS Parsing origin: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Parsing origin: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Parsing origin: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Parsing origin: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Parsing origin: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <sc:> against <https://example.org/foo/bar> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Parsing origin: <http://192.168.257> against <http://other.com/> 
+PASS Parsing origin: <http://192.168.257.com> against <http://other.com/> 
+PASS Parsing origin: <http://256> against <http://other.com/> 
+PASS Parsing origin: <http://256.com> against <http://other.com/> 
+PASS Parsing origin: <http://999999999> against <http://other.com/> 
+PASS Parsing origin: <http://999999999.com> against <http://other.com/> 
+PASS Parsing origin: <http://10000000000.com> against <http://other.com/> 
+PASS Parsing origin: <http://4294967295> against <http://other.com/> 
+PASS Parsing origin: <http://0xffffffff> against <http://other.com/> 
+PASS Parsing origin: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Parsing origin: <https://0x.0x.0> against <about:blank> 
+PASS Parsing origin: <http://[1:0::]> against <http://example.net/> 
+FAIL Parsing origin: <sc://ñ> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://ñ?x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://ñ#x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <#x> against <sc://ñ> 
+PASS Parsing origin: <?x> against <sc://ñ> 
+FAIL Parsing origin: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: origin expected "null" but got "tftp://"
+FAIL Parsing origin: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: origin expected "null" but got "telnet://"
+FAIL Parsing origin: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: origin expected "null" but got "ut2004://"
+FAIL Parsing origin: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: origin expected "null" but got "redis://"
+FAIL Parsing origin: <rsync://foo@host:911/sup> against <about:blank> assert_equals: origin expected "null" but got "rsync://"
+FAIL Parsing origin: <git://github.com/foo/bar.git> against <about:blank> assert_equals: origin expected "null" but got "git://"
+FAIL Parsing origin: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: origin expected "null" but got "irc://"
+FAIL Parsing origin: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: origin expected "null" but got "dns://"
+FAIL Parsing origin: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: origin expected "null" but got "ldap://"
+FAIL Parsing origin: <git+https://github.com/foo/bar> against <about:blank> assert_equals: origin expected "null" but got "git+https://"
+FAIL Parsing origin: <urn:ietf:rfc:2648> against <about:blank> assert_equals: origin expected "null" but got "urn://"
+FAIL Parsing origin: <tag:joe@example.org,2001:foo/bar> against <about:blank> assert_equals: origin expected "null" but got "tag://"
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/a-element-origin-xhtml-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/a-element-origin-xhtml-expected.txt
new file mode 100644
index 0000000..3502d0c8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/a-element-origin-xhtml-expected.txt
@@ -0,0 +1,307 @@
+This is a testharness.js-based test.
+Found 294 tests; 219 PASS, 75 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS Parsing origin: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https://test:@test> against <about:blank> 
+PASS Parsing origin: <https://:@test> against <about:blank> 
+FAIL Parsing origin: <non-special://test:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+FAIL Parsing origin: <non-special://:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+PASS Parsing origin: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Parsing origin: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Parsing origin: < foo.com  > against <http://example.org/foo/bar> 
+FAIL Parsing origin: <a:	 foo.com> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "a://"
+PASS Parsing origin: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://f:/c> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <http://f:0/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+FAIL Parsing origin: <http://f:00000000000000/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+PASS Parsing origin: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <> against <http://example.org/foo/bar> 
+PASS Parsing origin: <  	> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:a> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:#> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#;?> against <http://example.org/foo/bar> 
+PASS Parsing origin: <?> against <http://example.org/foo/bar> 
+PASS Parsing origin: </> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:23> against <http://example.org/foo/bar> 
+PASS Parsing origin: </:23> against <http://example.org/foo/bar> 
+PASS Parsing origin: <::> against <http://example.org/foo/bar> 
+PASS Parsing origin: <::23> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <foo://> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+PASS Parsing origin: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <foo:/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo:/bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo://///////> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo:////://///> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <c:/foo> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "c://"
+PASS Parsing origin: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Parsing origin: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https:/example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <madeupscheme:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <javascript:/example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <mailto:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https:example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <madeupscheme:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <javascript:example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <mailto:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: </a/b/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a/ /c> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a%2fc> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a/%2f/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#β> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:text/html,test#test> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <tel:1234567890> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "tel://"
+PASS Parsing origin: <http://example.com/././foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/./.foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/.> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/./> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/..bar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/../../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e%2> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 
+PASS Parsing origin: <http://example.com////../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/%20foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2©zbar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%41%7a> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Parsing origin: <http://example.com/foo%00%51> against <about:blank> assert_equals: origin expected "http://example.com" but got "null"
+PASS Parsing origin: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Parsing origin: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo	bar> against <about:blank> 
+PASS Parsing origin: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Parsing origin: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Parsing origin: <http://example.com/@asdf%40> against <about:blank> 
+PASS Parsing origin: <http://example.com/你好你好> against <about:blank> 
+PASS Parsing origin: <http://example.com/‥/foo> against <about:blank> 
+PASS Parsing origin: <http://example.com//foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Parsing origin: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+PASS Parsing origin: <http://www.google.com/foo?bar=baz# »> against <about:blank> 
+PASS Parsing origin: <data:test# »> against <about:blank> 
+PASS Parsing origin: <http://www.google.com> against <about:blank> 
+PASS Parsing origin: <http://192.0x00A80001> against <about:blank> 
+PASS Parsing origin: <http://www/foo%2Ehtml> against <about:blank> 
+PASS Parsing origin: <http://www/foo/%2E/html> against <about:blank> 
+PASS Parsing origin: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Parsing origin: <http:\\www.google.com\foo> against <about:blank> 
+PASS Parsing origin: <http://foo:80/> against <about:blank> 
+PASS Parsing origin: <http://foo:81/> against <about:blank> 
+FAIL Parsing origin: <httpa://foo:80/> against <about:blank> assert_equals: origin expected "null" but got "httpa://"
+PASS Parsing origin: <https://foo:443/> against <about:blank> 
+PASS Parsing origin: <https://foo:80/> against <about:blank> 
+PASS Parsing origin: <ftp://foo:21/> against <about:blank> 
+PASS Parsing origin: <ftp://foo:80/> against <about:blank> 
+PASS Parsing origin: <gopher://foo:70/> against <about:blank> 
+PASS Parsing origin: <gopher://foo:443/> against <about:blank> 
+PASS Parsing origin: <ws://foo:80/> against <about:blank> 
+PASS Parsing origin: <ws://foo:81/> against <about:blank> 
+PASS Parsing origin: <ws://foo:443/> against <about:blank> 
+PASS Parsing origin: <ws://foo:815/> against <about:blank> 
+PASS Parsing origin: <wss://foo:80/> against <about:blank> 
+PASS Parsing origin: <wss://foo:81/> against <about:blank> 
+PASS Parsing origin: <wss://foo:443/> against <about:blank> 
+PASS Parsing origin: <wss://foo:815/> against <about:blank> 
+PASS Parsing origin: <http:/example.com/> against <about:blank> 
+PASS Parsing origin: <ftp:/example.com/> against <about:blank> 
+PASS Parsing origin: <https:/example.com/> against <about:blank> 
+FAIL Parsing origin: <madeupscheme:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:/example.com/> against <about:blank> 
+PASS Parsing origin: <ws:/example.com/> against <about:blank> 
+PASS Parsing origin: <wss:/example.com/> against <about:blank> 
+PASS Parsing origin: <data:/example.com/> against <about:blank> 
+PASS Parsing origin: <javascript:/example.com/> against <about:blank> 
+FAIL Parsing origin: <mailto:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:example.com/> against <about:blank> 
+PASS Parsing origin: <ftp:example.com/> against <about:blank> 
+PASS Parsing origin: <https:example.com/> against <about:blank> 
+FAIL Parsing origin: <madeupscheme:example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:example.com/> against <about:blank> 
+PASS Parsing origin: <ws:example.com/> against <about:blank> 
+PASS Parsing origin: <wss:example.com/> against <about:blank> 
+PASS Parsing origin: <data:example.com/> against <about:blank> 
+PASS Parsing origin: <javascript:example.com/> against <about:blank> 
+FAIL Parsing origin: <mailto:example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://@pple.com> against <about:blank> 
+PASS Parsing origin: <http::b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://www.@pple.com> against <about:blank> 
+PASS Parsing origin: <http://:@www.example.com> against <about:blank> 
+PASS Parsing origin: </> against <http://www.example.com/test> 
+PASS Parsing origin: </test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <.> against <http://www.example.com/test> 
+PASS Parsing origin: <..> against <http://www.example.com/test> 
+PASS Parsing origin: <test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <./test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../../test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <中/test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Parsing origin: <//www.example2.com> against <http://www.example.com/test> 
+PASS Parsing origin: <http://ExAmPlE.CoM> against <http://other.com/> 
+PASS Parsing origin: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Parsing origin: <http://www.foo。bar.com> against <http://other.com/> 
+PASS Parsing origin: <https://x/�?�#�> against <about:blank> 
+PASS Parsing origin: <http://Go.com> against <http://other.com/> 
+FAIL Parsing origin: <http://你好你好> against <http://other.com/> assert_equals: origin expected "http://你好你好" but got "http://xn--6qqa088eba"
+FAIL Parsing origin: <https://faß.ExAmPlE/> against <about:blank> assert_equals: origin expected "https://faß.example" but got "https://fass.example"
+PASS Parsing origin: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing origin: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+PASS Parsing origin: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Parsing origin: <http://./> against <about:blank> 
+PASS Parsing origin: <http://../> against <about:blank> 
+PASS Parsing origin: <http://0..0x300/> against <about:blank> 
+PASS Parsing origin: <http://foo:💩@example.com/bar> against <http://other.com/> 
+FAIL Parsing origin: <#> against <test:test> assert_equals: origin expected "null" but got "test://"
+FAIL Parsing origin: <#x> against <mailto:x@x.com> assert_equals: origin expected "null" but got "mailto://"
+FAIL Parsing origin: <#x> against <data:,> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <#x> against <about:blank> 
+FAIL Parsing origin: <#> against <test:test?test> assert_equals: origin expected "null" but got "test://"
+PASS Parsing origin: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing origin: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing origin: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Parsing origin: </some/path> against <http://user@example.org/smth> 
+PASS Parsing origin: <> against <http://user:pass@example.org:21/smth> 
+PASS Parsing origin: </some/path> against <http://user:pass@example.org:21/smth> 
+FAIL Parsing origin: <i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:sd/sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <about:/../> against <about:blank> 
+PASS Parsing origin: <data:/../> against <about:blank> 
+PASS Parsing origin: <javascript:/../> against <about:blank> 
+FAIL Parsing origin: <mailto:/../> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+FAIL Parsing origin: <sc://ñ.test/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <x> against <sc://ñ> 
+FAIL Parsing origin: <sc:\../> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc::a@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <wow:%NBD> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Parsing origin: <wow:%1G> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Parsing origin: <ftp://%e2%98%83> against <about:blank> assert_equals: origin expected "ftp://☃" but got "ftp://xn--n3h"
+FAIL Parsing origin: <https://%e2%98%83> against <about:blank> assert_equals: origin expected "https://☃" but got "https://xn--n3h"
+PASS Parsing origin: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Parsing origin: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Parsing origin: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Parsing origin: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Parsing origin: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <sc:> against <https://example.org/foo/bar> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Parsing origin: <http://192.168.257> against <http://other.com/> 
+PASS Parsing origin: <http://192.168.257.com> against <http://other.com/> 
+PASS Parsing origin: <http://256> against <http://other.com/> 
+PASS Parsing origin: <http://256.com> against <http://other.com/> 
+PASS Parsing origin: <http://999999999> against <http://other.com/> 
+PASS Parsing origin: <http://999999999.com> against <http://other.com/> 
+PASS Parsing origin: <http://10000000000.com> against <http://other.com/> 
+PASS Parsing origin: <http://4294967295> against <http://other.com/> 
+PASS Parsing origin: <http://0xffffffff> against <http://other.com/> 
+PASS Parsing origin: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Parsing origin: <https://0x.0x.0> against <about:blank> 
+PASS Parsing origin: <http://[1:0::]> against <http://example.net/> 
+FAIL Parsing origin: <sc://ñ> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://ñ?x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://ñ#x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <#x> against <sc://ñ> 
+PASS Parsing origin: <?x> against <sc://ñ> 
+FAIL Parsing origin: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: origin expected "null" but got "tftp://"
+FAIL Parsing origin: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: origin expected "null" but got "telnet://"
+FAIL Parsing origin: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: origin expected "null" but got "ut2004://"
+FAIL Parsing origin: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: origin expected "null" but got "redis://"
+FAIL Parsing origin: <rsync://foo@host:911/sup> against <about:blank> assert_equals: origin expected "null" but got "rsync://"
+FAIL Parsing origin: <git://github.com/foo/bar.git> against <about:blank> assert_equals: origin expected "null" but got "git://"
+FAIL Parsing origin: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: origin expected "null" but got "irc://"
+FAIL Parsing origin: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: origin expected "null" but got "dns://"
+FAIL Parsing origin: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: origin expected "null" but got "ldap://"
+FAIL Parsing origin: <git+https://github.com/foo/bar> against <about:blank> assert_equals: origin expected "null" but got "git+https://"
+FAIL Parsing origin: <urn:ietf:rfc:2648> against <about:blank> assert_equals: origin expected "null" but got "urn://"
+FAIL Parsing origin: <tag:joe@example.org,2001:foo/bar> against <about:blank> assert_equals: origin expected "null" but got "tag://"
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/a-element-xhtml-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/a-element-xhtml-expected.txt
new file mode 100644
index 0000000..26dcb10c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/a-element-xhtml-expected.txt
@@ -0,0 +1,486 @@
+This is a testharness.js-based test.
+Found 473 tests; 303 PASS, 170 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS Parsing: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Parsing: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Parsing: <https://test:@test> against <about:blank> 
+PASS Parsing: <https://:@test> against <about:blank> 
+FAIL Parsing: <non-special://test:@test/x> against <about:blank> assert_equals: href expected "non-special://test@test/x" but got "non-special://test:@test/x"
+FAIL Parsing: <non-special://:@test/x> against <about:blank> assert_equals: href expected "non-special://test/x" but got "non-special://:@test/x"
+PASS Parsing: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Parsing: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Parsing: < foo.com  > against <http://example.org/foo/bar> 
+PASS Parsing: <a:	 foo.com> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing: <lolscheme:x x#x x> against <about:blank> 
+PASS Parsing: <http://f:/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:0/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:b/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <http://f: /c> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://f: /c" but got "http://f:%20/c"
+PASS Parsing: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:fifty-two/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:999999/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <non-special://f:999999/c> against <http://example.org/foo/bar> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://f: 21 / b ? d # e > against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://f: 21 / b ? d # e " but got "http://f:%2021%20/%20b%20?%20d%20# e"
+PASS Parsing: <> against <http://example.org/foo/bar> 
+PASS Parsing: <  	> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <:> against <http://example.org/foo/bar> 
+PASS Parsing: <:a> against <http://example.org/foo/bar> 
+PASS Parsing: <:/> against <http://example.org/foo/bar> 
+PASS Parsing: <:\> against <http://example.org/foo/bar> 
+PASS Parsing: <:#> against <http://example.org/foo/bar> 
+PASS Parsing: <#> against <http://example.org/foo/bar> 
+PASS Parsing: <#/> against <http://example.org/foo/bar> 
+PASS Parsing: <#\> against <http://example.org/foo/bar> 
+PASS Parsing: <#;?> against <http://example.org/foo/bar> 
+PASS Parsing: <?> against <http://example.org/foo/bar> 
+PASS Parsing: </> against <http://example.org/foo/bar> 
+PASS Parsing: <:23> against <http://example.org/foo/bar> 
+PASS Parsing: </:23> against <http://example.org/foo/bar> 
+PASS Parsing: <::> against <http://example.org/foo/bar> 
+PASS Parsing: <::23> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://> against <http://example.org/foo/bar> assert_equals: pathname expected "" but got "//"
+PASS Parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Parsing: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/bar.com/> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: pathname expected "///////" but got "/////////"
+FAIL Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: pathname expected "///////bar.com/" but got "/////////bar.com/"
+FAIL Parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: pathname expected "//://///" but got "////://///"
+PASS Parsing: <c:/foo> against <http://example.org/foo/bar> 
+PASS Parsing: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Parsing: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Parsing: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+FAIL Parsing: <http://[1::2]:3:4> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://[1::2]:3:4" but got "http://[1::2]:3:4/"
+FAIL Parsing: <http://2001::1> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1" but got "http://2001::1/"
+FAIL Parsing: <http://2001::1]> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1]" but got "http://2001::1]/"
+FAIL Parsing: <http://2001::1]:80> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1]:80" but got "http://2001::1]/"
+PASS Parsing: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <file:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <file://example:1/> against <about:blank> 
+PASS Parsing: <file://example:test/> against <about:blank> 
+FAIL Parsing: <file://example%/> against <about:blank> assert_equals: failure should set href to input expected "file://example%/" but got "file://example%25/"
+PASS Parsing: <file://[example]/> against <about:blank> 
+PASS Parsing: <ftps:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftps:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: </a/b/c> against <http://example.org/foo/bar> 
+PASS Parsing: </a/ /c> against <http://example.org/foo/bar> 
+PASS Parsing: </a%2fc> against <http://example.org/foo/bar> 
+PASS Parsing: </a/%2f/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <#β> against <http://example.org/foo/bar> assert_equals: href expected "http://example.org/foo/bar#%CE%B2" but got "http://example.org/foo/bar#β"
+PASS Parsing: <data:text/html,test#test> against <http://example.org/foo/bar> 
+PASS Parsing: <tel:1234567890> against <http://example.org/foo/bar> 
+FAIL Parsing: <file:c:\foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:/foo/bar.html" but got "file:///tmp/mock/c:/foo/bar.html"
+FAIL Parsing: <  File:c|////foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:////foo/bar.html" but got "file:///tmp/mock/c%7C////foo/bar.html"
+FAIL Parsing: <C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///tmp/mock/C%7C/foo/bar"
+FAIL Parsing: </C|\foo\bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///C%7C/foo/bar"
+FAIL Parsing: <//C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file://c%7C/foo/bar"
+PASS Parsing: <//server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <\\server\file> against <file:///tmp/mock/path> 
+PASS Parsing: </\server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///foo/bar.txt> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///home/me> against <file:///tmp/mock/path> 
+PASS Parsing: <//> against <file:///tmp/mock/path> 
+PASS Parsing: <///> against <file:///tmp/mock/path> 
+PASS Parsing: <///test> against <file:///tmp/mock/path> 
+PASS Parsing: <file://test> against <file:///tmp/mock/path> 
+FAIL Parsing: <file://localhost> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/test> against <file:///tmp/mock/path> assert_equals: href expected "file:///test" but got "file://localhost/test"
+PASS Parsing: <test> against <file:///tmp/mock/path> 
+PASS Parsing: <file:test> against <file:///tmp/mock/path> 
+PASS Parsing: <http://example.com/././foo> against <about:blank> 
+PASS Parsing: <http://example.com/./.foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo/.> against <about:blank> 
+PASS Parsing: <http://example.com/foo/./> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Parsing: <http://example.com/foo/..bar> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 
+FAIL Parsing: <http://example.com/foo/%2e%2> against <about:blank> assert_equals: href expected "http://example.com/foo/%2e%2" but got "http://example.com/foo/.%2"
+FAIL Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> assert_equals: href expected "http://example.com/%2e.bar" but got "http://example.com/..bar"
+PASS Parsing: <http://example.com////../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Parsing: <http://example.com/foo> against <about:blank> 
+PASS Parsing: <http://example.com/%20foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo%> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2©zbar> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%41%7a> against <about:blank> assert_equals: href expected "http://example.com/foo%41%7a" but got "http://example.com/fooAz"
+PASS Parsing: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%00%51> against <about:blank> assert_equals: href expected "http://example.com/foo%00%51" but got "http://example.com/foo%00Q"
+PASS Parsing: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Parsing: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Parsing: <http://example.com/foo	bar> against <about:blank> 
+PASS Parsing: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Parsing: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Parsing: <http://example.com/@asdf%40> against <about:blank> 
+PASS Parsing: <http://example.com/你好你好> against <about:blank> 
+PASS Parsing: <http://example.com/‥/foo> against <about:blank> 
+PASS Parsing: <http://example.com//foo> against <about:blank> 
+PASS Parsing: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Parsing: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+FAIL Parsing: <http://www.google.com/foo?bar=baz# »> against <about:blank> assert_equals: href expected "http://www.google.com/foo?bar=baz# %C2%BB" but got "http://www.google.com/foo?bar=baz# »"
+PASS Parsing: <data:test# »> against <about:blank> 
+PASS Parsing: <http://www.google.com> against <about:blank> 
+PASS Parsing: <http://192.0x00A80001> against <about:blank> 
+FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo%2Ehtml" but got "http://www/foo.html"
+PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 
+PASS Parsing: <http://user:pass@/> against <about:blank> 
+PASS Parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 
+PASS Parsing: <http://foo:80/> against <about:blank> 
+PASS Parsing: <http://foo:81/> against <about:blank> 
+FAIL Parsing: <httpa://foo:80/> against <about:blank> assert_equals: host expected "foo:80" but got ""
+PASS Parsing: <http://foo:-80/> against <about:blank> 
+PASS Parsing: <https://foo:443/> against <about:blank> 
+PASS Parsing: <https://foo:80/> against <about:blank> 
+PASS Parsing: <ftp://foo:21/> against <about:blank> 
+PASS Parsing: <ftp://foo:80/> against <about:blank> 
+PASS Parsing: <gopher://foo:70/> against <about:blank> 
+PASS Parsing: <gopher://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:80/> against <about:blank> 
+PASS Parsing: <ws://foo:81/> against <about:blank> 
+PASS Parsing: <ws://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:815/> against <about:blank> 
+PASS Parsing: <wss://foo:80/> against <about:blank> 
+PASS Parsing: <wss://foo:81/> against <about:blank> 
+PASS Parsing: <wss://foo:443/> against <about:blank> 
+PASS Parsing: <wss://foo:815/> against <about:blank> 
+PASS Parsing: <http:/example.com/> against <about:blank> 
+PASS Parsing: <ftp:/example.com/> against <about:blank> 
+PASS Parsing: <https:/example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:/example.com/> against <about:blank> 
+PASS Parsing: <file:/example.com/> against <about:blank> 
+PASS Parsing: <ftps:/example.com/> against <about:blank> 
+PASS Parsing: <gopher:/example.com/> against <about:blank> 
+PASS Parsing: <ws:/example.com/> against <about:blank> 
+PASS Parsing: <wss:/example.com/> against <about:blank> 
+PASS Parsing: <data:/example.com/> against <about:blank> 
+PASS Parsing: <javascript:/example.com/> against <about:blank> 
+PASS Parsing: <mailto:/example.com/> against <about:blank> 
+PASS Parsing: <http:example.com/> against <about:blank> 
+PASS Parsing: <ftp:example.com/> against <about:blank> 
+PASS Parsing: <https:example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:example.com/> against <about:blank> 
+PASS Parsing: <ftps:example.com/> against <about:blank> 
+PASS Parsing: <gopher:example.com/> against <about:blank> 
+PASS Parsing: <ws:example.com/> against <about:blank> 
+PASS Parsing: <wss:example.com/> against <about:blank> 
+PASS Parsing: <data:example.com/> against <about:blank> 
+PASS Parsing: <javascript:example.com/> against <about:blank> 
+PASS Parsing: <mailto:example.com/> against <about:blank> 
+PASS Parsing: <http:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/@www.example.com> against <about:blank> 
+PASS Parsing: <http://@www.example.com> against <about:blank> 
+PASS Parsing: <http:a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://@pple.com> against <about:blank> 
+PASS Parsing: <http::b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://:b@www.example.com> against <about:blank> 
+FAIL Parsing: <http:/:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/:@/www.example.com" but got "http:///www.example.com"
+PASS Parsing: <http://user@/www.example.com> against <about:blank> 
+FAIL Parsing: <http:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <http:/@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <http://@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http://@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <https:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "https:@/www.example.com" but got "https:///www.example.com"
+FAIL Parsing: <http:a:b@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:a:b@/www.example.com" but got "http://a:b@/www.example.com"
+FAIL Parsing: <http:/a:b@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/a:b@/www.example.com" but got "http://a:b@/www.example.com"
+PASS Parsing: <http://a:b@/www.example.com> against <about:blank> 
+FAIL Parsing: <http::@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http::@/www.example.com" but got "http:///www.example.com"
+PASS Parsing: <http:a:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://www.@pple.com> against <about:blank> 
+FAIL Parsing: <http:@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:@:www.example.com" but got "http://:www.example.com/"
+FAIL Parsing: <http:/@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/@:www.example.com" but got "http://:www.example.com/"
+FAIL Parsing: <http://@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http://@:www.example.com" but got "http://:www.example.com/"
+PASS Parsing: <http://:@www.example.com> against <about:blank> 
+PASS Parsing: </> against <http://www.example.com/test> 
+PASS Parsing: </test.txt> against <http://www.example.com/test> 
+PASS Parsing: <.> against <http://www.example.com/test> 
+PASS Parsing: <..> against <http://www.example.com/test> 
+PASS Parsing: <test.txt> against <http://www.example.com/test> 
+PASS Parsing: <./test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <中/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Parsing: <//www.example2.com> against <http://www.example.com/test> 
+PASS Parsing: <file:...> against <http://www.example.com/test> 
+PASS Parsing: <file:..> against <http://www.example.com/test> 
+PASS Parsing: <file:a> against <http://www.example.com/test> 
+PASS Parsing: <http://ExAmPlE.CoM> against <http://other.com/> 
+FAIL Parsing: <http://example example.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://Goo%20 goo%7C|.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[]" but got "http://[]/"
+FAIL Parsing: <http://[:]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[:]" but got "http://[:]/"
+FAIL Parsing: <http://GOO  goo.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Parsing: <http://www.foo。bar.com> against <http://other.com/> 
+FAIL Parsing: <http://﷐zyx.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://﷐zyx.com" but got "http://%EF%BF%BDzyx.com/"
+FAIL Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%ef%b7%90zyx.com" but got "http://%EF%BF%BDzyx.com/"
+FAIL Parsing: <https://�> against <about:blank> assert_equals: failure should set href to input expected "https://\ufffd" but got "https://%EF%BF%BD/"
+FAIL Parsing: <https://%EF%BF%BD> against <about:blank> assert_equals: failure should set href to input expected "https://%EF%BF%BD" but got "https://%EF%BF%BD/"
+FAIL Parsing: <https://x/�?�#�> against <about:blank> assert_equals: href expected "https://x/%EF%BF%BD?%EF%BF%BD#%EF%BF%BD" but got "https://x/%EF%BF%BD?%EF%BF%BD#\ufffd"
+PASS Parsing: <http://Go.com> against <http://other.com/> 
+FAIL Parsing: <http://%41.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://%00.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%00.com" but got "http://%00.com/"
+FAIL Parsing: <http://%ef%bc%85%ef%bc%90%ef%bc%90.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%ef%bc%85%ef%bc%90%ef%bc%90.com" but got "http://%00.com/"
+PASS Parsing: <http://你好你好> against <http://other.com/> 
+FAIL Parsing: <https://faß.ExAmPlE/> against <about:blank> assert_equals: href expected "https://xn--fa-hia.example/" but got "https://fass.example/"
+FAIL Parsing: <sc://faß.ExAmPlE/> against <about:blank> assert_equals: host expected "fa%C3%9F.ExAmPlE" but got ""
+FAIL Parsing: <http://%zz%66%a.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%zz%66%a.com" but got "http://%25zzf%25a.com/"
+FAIL Parsing: <http://%25> against <http://other.com/> assert_equals: failure should set href to input expected "http://%25" but got "http://%25/"
+FAIL Parsing: <http://hello%00> against <http://other.com/> assert_equals: failure should set href to input expected "http://hello%00" but got "http://hello%00/"
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+FAIL Parsing: <http://192.168.0.257> against <http://other.com/> assert_equals: failure should set href to input expected "http://192.168.0.257" but got "http://192.168.0.257/"
+FAIL Parsing: <http://%3g%78%63%30%2e%30%32%35%30%2E.01> against <http://other.com/> assert_equals: failure should set href to input expected "http://%3g%78%63%30%2e%30%32%35%30%2E.01" but got "http://%253gxc0.0250..01/"
+FAIL Parsing: <http://192.168.0.1 hello> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <https://x x:12> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Parsing: <http://./> against <about:blank> 
+PASS Parsing: <http://../> against <about:blank> 
+PASS Parsing: <http://0..0x300/> against <about:blank> 
+PASS Parsing: <http://[www.google.com]/> against <about:blank> 
+FAIL Parsing: <http://[google.com]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[google.com]" but got "http://[google.com]/"
+FAIL Parsing: <http://[::1.2.3.4x]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[::1.2.3.4x]" but got "http://[::1.2.3.4x]/"
+FAIL Parsing: <http://[::1.2.3.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[::1.2.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[::1.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://foo:💩@example.com/bar> against <http://other.com/> 
+PASS Parsing: <#> against <test:test> 
+PASS Parsing: <#x> against <mailto:x@x.com> 
+FAIL Parsing: <#x> against <data:,> assert_equals: href expected "data:,#x" but got "mailto:x@x.com#x"
+PASS Parsing: <#x> against <about:blank> 
+PASS Parsing: <#> against <test:test?test> 
+PASS Parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Parsing: </some/path> against <http://user@example.org/smth> 
+PASS Parsing: <> against <http://user:pass@example.org:21/smth> 
+PASS Parsing: </some/path> against <http://user:pass@example.org:21/smth> 
+FAIL Parsing: <i> against <sc:sd> assert_equals: failure should set href to input expected "i" but got ""
+FAIL Parsing: <i> against <sc:sd/sd> assert_equals: failure should set href to input expected "i" but got ""
+PASS Parsing: <i> against <sc:/pa/pa> 
+FAIL Parsing: <i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/i" but got "///pa/i"
+FAIL Parsing: <../i> against <sc:sd> assert_equals: failure should set href to input expected "../i" but got ""
+FAIL Parsing: <../i> against <sc:sd/sd> assert_equals: failure should set href to input expected "../i" but got ""
+PASS Parsing: <../i> against <sc:/pa/pa> 
+FAIL Parsing: <../i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <../i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+FAIL Parsing: </i> against <sc:sd> assert_equals: failure should set href to input expected "/i" but got ""
+FAIL Parsing: </i> against <sc:sd/sd> assert_equals: failure should set href to input expected "/i" but got ""
+PASS Parsing: </i> against <sc:/pa/pa> 
+FAIL Parsing: </i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: </i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+FAIL Parsing: <?i> against <sc:sd> assert_equals: failure should set href to input expected "?i" but got ""
+FAIL Parsing: <?i> against <sc:sd/sd> assert_equals: failure should set href to input expected "?i" but got ""
+PASS Parsing: <?i> against <sc:/pa/pa> 
+FAIL Parsing: <?i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <?i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+PASS Parsing: <#i> against <sc:sd> 
+PASS Parsing: <#i> against <sc:sd/sd> 
+PASS Parsing: <#i> against <sc:/pa/pa> 
+FAIL Parsing: <#i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <#i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+FAIL Parsing: <about:/../> against <about:blank> assert_equals: href expected "about:/" but got "about:/../"
+FAIL Parsing: <data:/../> against <about:blank> assert_equals: href expected "data:/" but got "data:/../"
+FAIL Parsing: <javascript:/../> against <about:blank> assert_equals: href expected "javascript:/" but got "javascript:/../"
+FAIL Parsing: <mailto:/../> against <about:blank> assert_equals: href expected "mailto:/" but got "mailto:/../"
+FAIL Parsing: <sc://ñ.test/> against <about:blank> assert_equals: host expected "%C3%B1.test" but got ""
+FAIL Parsing: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: host expected "%1F!\"$&'()*+,-.;<=>^_`{|}~" but got ""
+FAIL Parsing: <sc://\0/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc:// /> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://%/> against <about:blank> assert_equals: host expected "%" but got ""
+FAIL Parsing: <sc://@/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://te@s:t@/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://:/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://:12/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://[/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://\/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://]/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1/x" but got "sc://%C3%B1"
+PASS Parsing: <sc:\../> against <about:blank> 
+PASS Parsing: <sc::a@example.net> against <about:blank> 
+PASS Parsing: <wow:%NBD> against <about:blank> 
+PASS Parsing: <wow:%1G> against <about:blank> 
+FAIL Parsing: <ftp://example.com%80/> against <about:blank> assert_equals: failure should set href to input expected "ftp://example.com%80/" but got "ftp://example.com%EF%BF%BD/"
+FAIL Parsing: <ftp://example.com%A0/> against <about:blank> assert_equals: failure should set href to input expected "ftp://example.com%A0/" but got "ftp://example.com%EF%BF%BD/"
+FAIL Parsing: <https://example.com%80/> against <about:blank> assert_equals: failure should set href to input expected "https://example.com%80/" but got "https://example.com%EF%BF%BD/"
+FAIL Parsing: <https://example.com%A0/> against <about:blank> assert_equals: failure should set href to input expected "https://example.com%A0/" but got "https://example.com%EF%BF%BD/"
+PASS Parsing: <ftp://%e2%98%83> against <about:blank> 
+PASS Parsing: <https://%e2%98%83> against <about:blank> 
+PASS Parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Parsing: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Parsing: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <https://example.org/foo/bar> 
+PASS Parsing: <sc:> against <https://example.org/foo/bar> 
+PASS Parsing: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Parsing: <http://192.168.257> against <http://other.com/> 
+PASS Parsing: <http://192.168.257.com> against <http://other.com/> 
+PASS Parsing: <http://256> against <http://other.com/> 
+PASS Parsing: <http://256.com> against <http://other.com/> 
+PASS Parsing: <http://999999999> against <http://other.com/> 
+PASS Parsing: <http://999999999.com> against <http://other.com/> 
+FAIL Parsing: <http://10000000000> against <http://other.com/> assert_equals: failure should set href to input expected "http://10000000000" but got "http://10000000000/"
+PASS Parsing: <http://10000000000.com> against <http://other.com/> 
+PASS Parsing: <http://4294967295> against <http://other.com/> 
+FAIL Parsing: <http://4294967296> against <http://other.com/> assert_equals: failure should set href to input expected "http://4294967296" but got "http://4294967296/"
+PASS Parsing: <http://0xffffffff> against <http://other.com/> 
+FAIL Parsing: <http://0xffffffff1> against <http://other.com/> assert_equals: failure should set href to input expected "http://0xffffffff1" but got "http://0xffffffff1/"
+FAIL Parsing: <http://256.256.256.256> against <http://other.com/> assert_equals: failure should set href to input expected "http://256.256.256.256" but got "http://256.256.256.256/"
+PASS Parsing: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Parsing: <https://0x.0x.0> against <about:blank> 
+PASS Parsing: <file:///C%3A/> against <about:blank> 
+PASS Parsing: <file:///C%7C/> against <about:blank> 
+PASS Parsing: <pix/submit.gif> against <file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html> 
+FAIL Parsing: <..> against <file:///C:/> assert_equals: href expected "file:///C:/" but got "file:///"
+PASS Parsing: <..> against <file:///> 
+FAIL Parsing: </> against <file:///C:/a/b> assert_equals: href expected "file:///C:/" but got "file:///"
+FAIL Parsing: <//d:> against <file:///C:/a/b> assert_equals: href expected "file:///d:" but got "file://d:/"
+FAIL Parsing: <//d:/..> against <file:///C:/a/b> assert_equals: href expected "file:///d:/" but got "file://d:/"
+PASS Parsing: <..> against <file:///ab:/> 
+PASS Parsing: <..> against <file:///1:/> 
+PASS Parsing: <> against <file:///test?test#test> 
+PASS Parsing: <file:> against <file:///test?test#test> 
+PASS Parsing: <?x> against <file:///test?test#test> 
+PASS Parsing: <file:?x> against <file:///test?test#test> 
+PASS Parsing: <#x> against <file:///test?test#test> 
+PASS Parsing: <file:#x> against <file:///test?test#test> 
+PASS Parsing: <file:\\//> against <about:blank> 
+PASS Parsing: <file:\\\\> against <about:blank> 
+PASS Parsing: <file:\\\\?fox> against <about:blank> 
+PASS Parsing: <file:\\\\#guppy> against <about:blank> 
+FAIL Parsing: <file://spider///> against <about:blank> assert_equals: href expected "file://spider/" but got "file://spider///"
+FAIL Parsing: <file:\\localhost//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost//"
+PASS Parsing: <file:///localhost//cat> against <about:blank> 
+PASS Parsing: <file://\/localhost//cat> against <about:blank> 
+FAIL Parsing: <file://localhost//a//../..//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost///"
+PASS Parsing: </////mouse> against <file:///elephant> 
+PASS Parsing: <\//pig> against <file://lion/> 
+FAIL Parsing: <\/localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: <//localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: </..//localhost//pig> against <file://lion/> assert_equals: href expected "file://lion/localhost//pig" but got "file://lion//localhost//pig"
+PASS Parsing: <file://> against <file://ape/> 
+PASS Parsing: </rooibos> against <file://tea/> 
+PASS Parsing: </?chai> against <file://tea/> 
+FAIL Parsing: <C|> against <file://host/dir/file> assert_equals: href expected "file:///C:" but got "file://host/dir/C%7C"
+FAIL Parsing: <C|#> against <file://host/dir/file> assert_equals: href expected "file:///C:#" but got "file://host/dir/C%7C#"
+FAIL Parsing: <C|?> against <file://host/dir/file> assert_equals: href expected "file:///C:?" but got "file://host/dir/C%7C?"
+FAIL Parsing: <C|/> against <file://host/dir/file> assert_equals: href expected "file:///C:/" but got "file://host/dir/C%7C/"
+FAIL Parsing: <C|\> against <file://host/dir/file> assert_equals: href expected "file:///C:/" but got "file://host/dir/C%7C/"
+PASS Parsing: <C> against <file://host/dir/file> 
+FAIL Parsing: <C|a> against <file://host/dir/file> assert_equals: href expected "file://host/dir/C|a" but got "file://host/dir/C%7Ca"
+FAIL Parsing: <file://example.net/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://example.net/C:/"
+FAIL Parsing: <file://1.2.3.4/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://1.2.3.4/C:/"
+FAIL Parsing: <file://[1::8]/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://[1::8]/C:/"
+FAIL Parsing: <file:/C|/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file:///C%7C/"
+FAIL Parsing: <file://C|/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://c%7C/"
+PASS Parsing: <file:> against <about:blank> 
+PASS Parsing: <file:?q=v> against <about:blank> 
+PASS Parsing: <file:#frag> against <about:blank> 
+PASS Parsing: <http://[1:0::]> against <http://example.net/> 
+FAIL Parsing: <http://[0:1:2:3:4:5:6:7:8]> against <http://example.net/> assert_equals: failure should set href to input expected "http://[0:1:2:3:4:5:6:7:8]" but got "http://[0:1:2:3:4:5:6:7:8]/"
+FAIL Parsing: <https://[0::0::0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0::0::0]" but got "https://[0::0::0]/"
+FAIL Parsing: <https://[0:.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:.0]" but got "https://[0:.0]/"
+FAIL Parsing: <https://[0:0:]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:0:]" but got "https://[0:0:]/"
+FAIL Parsing: <https://[0:1:2:3:4:5:6:7.0.0.0.1]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1:2:3:4:5:6:7.0.0.0.1]" but got "https://[0:1:2:3:4:5:6:7.0.0.0.1]/"
+FAIL Parsing: <https://[0:1.00.0.0.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.00.0.0.0]" but got "https://[0:1.00.0.0.0]/"
+FAIL Parsing: <https://[0:1.290.0.0.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.290.0.0.0]" but got "https://[0:1.290.0.0.0]/"
+FAIL Parsing: <https://[0:1.23.23]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.23.23]" but got "https://[0:1.23.23]/"
+FAIL Parsing: <http://?> against <about:blank> assert_equals: failure should set href to input expected "http://?" but got "http:/?"
+FAIL Parsing: <http://#> against <about:blank> assert_equals: failure should set href to input expected "http://#" but got "http:/#"
+FAIL Parsing: <sc://ñ> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ?x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ#x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <#x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1#x" but got "sc://%C3%B1"
+FAIL Parsing: <?x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1?x" but got "sc://%C3%B1"
+FAIL Parsing: <sc://?> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <sc://#> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <///> against <sc://x/> assert_equals: href expected "sc:///" but got "sc:"
+FAIL Parsing: <////> against <sc://x/> assert_equals: href expected "sc:////" but got "sc:"
+FAIL Parsing: <////x/> against <sc://x/> assert_equals: href expected "sc:////x/" but got "sc://x/"
+FAIL Parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: host expected "foobar.com" but got ""
+FAIL Parsing: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: username expected "user" but got ""
+FAIL Parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: host expected "10.10.10.10:7777" but got ""
+FAIL Parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <rsync://foo@host:911/sup> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <git://github.com/foo/bar.git> against <about:blank> assert_equals: host expected "github.com" but got ""
+FAIL Parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: host expected "myserver.com:6999" but got ""
+FAIL Parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: host expected "fw.example.org:9999" but got ""
+FAIL Parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: host expected "localhost:389" but got ""
+FAIL Parsing: <git+https://github.com/foo/bar> against <about:blank> assert_equals: host expected "github.com" but got ""
+PASS Parsing: <urn:ietf:rfc:2648> against <about:blank> 
+PASS Parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank> 
+FAIL Parsing: <non-special://%E2%80%A0/> against <about:blank> assert_equals: host expected "%E2%80%A0" but got ""
+FAIL Parsing: <non-special://H%4fSt/path> against <about:blank> assert_equals: host expected "H%4fSt" but got ""
+FAIL Parsing: <non-special://[1:2:0:0:5:0:0:0]/> against <about:blank> assert_equals: href expected "non-special://[1:2:0:0:5::]/" but got "non-special://[1:2:0:0:5:0:0:0]/"
+FAIL Parsing: <non-special://[1:2:0:0:0:0:0:3]/> against <about:blank> assert_equals: href expected "non-special://[1:2::3]/" but got "non-special://[1:2:0:0:0:0:0:3]/"
+FAIL Parsing: <non-special://[1:2::3]:80/> against <about:blank> assert_equals: host expected "[1:2::3]:80" but got ""
+FAIL Parsing: <non-special://[:80/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <blob:https://example.com:443/> against <about:blank> 
+PASS Parsing: <blob:d3958f5c-0777-0845-9dcf-2cb28783acaf> against <about:blank> 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/failure-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/failure-expected.txt
new file mode 100644
index 0000000..cac2f08
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/failure-expected.txt
@@ -0,0 +1,235 @@
+This is a testharness.js-based test.
+Found 231 tests; 92 PASS, 139 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+FAIL URL's href: file://example:1/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: file://example:1/ should throw 
+PASS sendBeacon(): file://example:1/ should throw 
+FAIL Location's href: file://example:1/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'file://example:1/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): file://example:1/ should throw 
+FAIL URL's href: file://example:test/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: file://example:test/ should throw 
+PASS sendBeacon(): file://example:test/ should throw 
+FAIL Location's href: file://example:test/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'file://example:test/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): file://example:test/ should throw 
+FAIL URL's href: file://example%/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: file://example%/ should throw 
+PASS sendBeacon(): file://example%/ should throw 
+FAIL Location's href: file://example%/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'file://example%/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): file://example%/ should throw 
+FAIL URL's href: file://[example]/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: file://[example]/ should throw 
+PASS sendBeacon(): file://[example]/ should throw 
+FAIL Location's href: file://[example]/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'file://[example]/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): file://[example]/ should throw 
+FAIL URL's href: http://user:pass@/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://user:pass@/ should throw 
+PASS sendBeacon(): http://user:pass@/ should throw 
+FAIL Location's href: http://user:pass@/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://user:pass@/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://user:pass@/ should throw 
+FAIL URL's href: http://foo:-80/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://foo:-80/ should throw 
+PASS sendBeacon(): http://foo:-80/ should throw 
+FAIL Location's href: http://foo:-80/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://foo:-80/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://foo:-80/ should throw 
+FAIL URL's href: http:/:@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:/:@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:/:@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:/:@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:/:@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http://user@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://user@/www.example.com should throw 
+PASS sendBeacon(): http://user@/www.example.com should throw 
+FAIL Location's href: http://user@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://user@/www.example.com' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://user@/www.example.com should throw 
+FAIL URL's href: http:@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http:/@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:/@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:/@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:/@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:/@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http://@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://@/www.example.com should throw 
+PASS sendBeacon(): http://@/www.example.com should throw 
+FAIL Location's href: http://@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://@/www.example.com' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://@/www.example.com should throw 
+FAIL URL's href: https:@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https:@/www.example.com should throw 
+PASS sendBeacon(): https:@/www.example.com should throw 
+FAIL Location's href: https:@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https:@/www.example.com' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https:@/www.example.com should throw 
+FAIL URL's href: http:a:b@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:a:b@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:a:b@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:a:b@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:a:b@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http:/a:b@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:/a:b@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:/a:b@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:/a:b@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:/a:b@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http://a:b@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://a:b@/www.example.com should throw 
+PASS sendBeacon(): http://a:b@/www.example.com should throw 
+FAIL Location's href: http://a:b@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://a:b@/www.example.com' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://a:b@/www.example.com should throw 
+FAIL URL's href: http::@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http::@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http::@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http::@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http::@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http:@:www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:@:www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:@:www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:@:www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:@:www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http:/@:www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:/@:www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:/@:www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:/@:www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:/@:www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http://@:www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://@:www.example.com should throw 
+PASS sendBeacon(): http://@:www.example.com should throw 
+FAIL Location's href: http://@:www.example.com should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://@:www.example.com' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://@:www.example.com should throw 
+FAIL URL's href: https://� should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://� should throw 
+PASS sendBeacon(): https://� should throw 
+FAIL Location's href: https://� should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://�' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://� should throw 
+FAIL URL's href: https://%EF%BF%BD should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://%EF%BF%BD should throw 
+PASS sendBeacon(): https://%EF%BF%BD should throw 
+FAIL Location's href: https://%EF%BF%BD should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://%EF%BF%BD' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://%EF%BF%BD should throw 
+FAIL URL's href: https://x x:12 should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: https://x x:12 should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): https://x x:12 should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: https://x x:12 should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): https://x x:12 should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http://[www.google.com]/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://[www.google.com]/ should throw 
+PASS sendBeacon(): http://[www.google.com]/ should throw 
+FAIL Location's href: http://[www.google.com]/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://[www.google.com]/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://[www.google.com]/ should throw 
+FAIL URL's href: sc://\0/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://\0/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://\0/ should throw 
+FAIL Location's href: sc://\0/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://\0/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc:// / should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc:// / should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc:// / should throw 
+FAIL Location's href: sc:// / should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc:// / should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://@/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://@/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://@/ should throw 
+FAIL Location's href: sc://@/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://@/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://te@s:t@/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://te@s:t@/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://te@s:t@/ should throw 
+FAIL Location's href: sc://te@s:t@/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://te@s:t@/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://:/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://:/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://:/ should throw 
+FAIL Location's href: sc://:/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://:/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://:12/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://:12/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://:12/ should throw 
+FAIL Location's href: sc://:12/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://:12/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://[/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://[/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://[/ should throw 
+FAIL Location's href: sc://[/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://[/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://\/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://\/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://\/ should throw 
+FAIL Location's href: sc://\/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://\/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://]/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://]/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://]/ should throw 
+FAIL Location's href: sc://]/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://]/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: ftp://example.com%80/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: ftp://example.com%80/ should throw 
+PASS sendBeacon(): ftp://example.com%80/ should throw 
+FAIL Location's href: ftp://example.com%80/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'ftp://example.com%80/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): ftp://example.com%80/ should throw 
+FAIL URL's href: ftp://example.com%A0/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: ftp://example.com%A0/ should throw 
+PASS sendBeacon(): ftp://example.com%A0/ should throw 
+FAIL Location's href: ftp://example.com%A0/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'ftp://example.com%A0/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): ftp://example.com%A0/ should throw 
+FAIL URL's href: https://example.com%80/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://example.com%80/ should throw 
+PASS sendBeacon(): https://example.com%80/ should throw 
+FAIL Location's href: https://example.com%80/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://example.com%80/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://example.com%80/ should throw 
+FAIL URL's href: https://example.com%A0/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://example.com%A0/ should throw 
+PASS sendBeacon(): https://example.com%A0/ should throw 
+FAIL Location's href: https://example.com%A0/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://example.com%A0/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://example.com%A0/ should throw 
+FAIL URL's href: https://[0::0::0] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0::0::0] should throw 
+PASS sendBeacon(): https://[0::0::0] should throw 
+FAIL Location's href: https://[0::0::0] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0::0::0]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0::0::0] should throw 
+FAIL URL's href: https://[0:.0] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:.0] should throw 
+PASS sendBeacon(): https://[0:.0] should throw 
+FAIL Location's href: https://[0:.0] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:.0]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:.0] should throw 
+FAIL URL's href: https://[0:0:] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:0:] should throw 
+PASS sendBeacon(): https://[0:0:] should throw 
+FAIL Location's href: https://[0:0:] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:0:]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:0:] should throw 
+FAIL URL's href: https://[0:1:2:3:4:5:6:7.0.0.0.1] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:1:2:3:4:5:6:7.0.0.0.1] should throw 
+PASS sendBeacon(): https://[0:1:2:3:4:5:6:7.0.0.0.1] should throw 
+FAIL Location's href: https://[0:1:2:3:4:5:6:7.0.0.0.1] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:1:2:3:4:5:6:7.0.0.0.1]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:1:2:3:4:5:6:7.0.0.0.1] should throw 
+FAIL URL's href: https://[0:1.00.0.0.0] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:1.00.0.0.0] should throw 
+PASS sendBeacon(): https://[0:1.00.0.0.0] should throw 
+FAIL Location's href: https://[0:1.00.0.0.0] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:1.00.0.0.0]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:1.00.0.0.0] should throw 
+FAIL URL's href: https://[0:1.290.0.0.0] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:1.290.0.0.0] should throw 
+PASS sendBeacon(): https://[0:1.290.0.0.0] should throw 
+FAIL Location's href: https://[0:1.290.0.0.0] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:1.290.0.0.0]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:1.290.0.0.0] should throw 
+FAIL URL's href: https://[0:1.23.23] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:1.23.23] should throw 
+PASS sendBeacon(): https://[0:1.23.23] should throw 
+FAIL Location's href: https://[0:1.23.23] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:1.23.23]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:1.23.23] should throw 
+FAIL URL's href: http://? should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://? should throw 
+PASS sendBeacon(): http://? should throw 
+FAIL Location's href: http://? should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://?' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://? should throw 
+FAIL URL's href: http://# should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://# should throw 
+PASS sendBeacon(): http://# should throw 
+FAIL Location's href: http://# should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://#' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://# should throw 
+FAIL URL's href: non-special://[:80/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: non-special://[:80/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): non-special://[:80/ should throw 
+FAIL Location's href: non-special://[:80/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): non-special://[:80/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/url-constructor-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/url-constructor-expected.txt
new file mode 100644
index 0000000..d28b52a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/url-constructor-expected.txt
@@ -0,0 +1,532 @@
+This is a testharness.js-based test.
+Found 477 tests; 367 PASS, 110 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS URL.searchParams getter 
+PASS URL.searchParams updating, clearing 
+PASS URL.searchParams setter, invalid values 
+PASS URL.searchParams and URL.search setters, update propagation 
+PASS Loading data… 
+PASS Parsing: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Parsing: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Parsing: <https://test:@test> against <about:blank> 
+PASS Parsing: <https://:@test> against <about:blank> 
+FAIL Parsing: <non-special://test:@test/x> against <about:blank> assert_equals: href expected "non-special://test@test/x" but got "non-special://test:@test/x"
+FAIL Parsing: <non-special://:@test/x> against <about:blank> assert_equals: href expected "non-special://test/x" but got "non-special://:@test/x"
+PASS Parsing: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Parsing: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Parsing: < foo.com  > against <http://example.org/foo/bar> 
+PASS Parsing: <a:	 foo.com> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing: <lolscheme:x x#x x> against <about:blank> 
+PASS Parsing: <http://f:/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:0/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:b/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f: /c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:fifty-two/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:999999/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <non-special://f:999999/c> against <http://example.org/foo/bar> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://f: 21 / b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing: <> against <http://example.org/foo/bar> 
+PASS Parsing: <  	> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <:> against <http://example.org/foo/bar> 
+PASS Parsing: <:a> against <http://example.org/foo/bar> 
+PASS Parsing: <:/> against <http://example.org/foo/bar> 
+PASS Parsing: <:\> against <http://example.org/foo/bar> 
+PASS Parsing: <:#> against <http://example.org/foo/bar> 
+PASS Parsing: <#> against <http://example.org/foo/bar> 
+PASS Parsing: <#/> against <http://example.org/foo/bar> 
+PASS Parsing: <#\> against <http://example.org/foo/bar> 
+PASS Parsing: <#;?> against <http://example.org/foo/bar> 
+PASS Parsing: <?> against <http://example.org/foo/bar> 
+PASS Parsing: </> against <http://example.org/foo/bar> 
+PASS Parsing: <:23> against <http://example.org/foo/bar> 
+PASS Parsing: </:23> against <http://example.org/foo/bar> 
+PASS Parsing: <::> against <http://example.org/foo/bar> 
+PASS Parsing: <::23> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://> against <http://example.org/foo/bar> assert_equals: pathname expected "" but got "//"
+PASS Parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Parsing: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/bar.com/> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: pathname expected "///////" but got "/////////"
+FAIL Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: pathname expected "///////bar.com/" but got "/////////bar.com/"
+FAIL Parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: pathname expected "//://///" but got "////://///"
+PASS Parsing: <c:/foo> against <http://example.org/foo/bar> 
+PASS Parsing: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Parsing: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Parsing: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[1::2]:3:4> against <http://example.org/foo/bar> 
+PASS Parsing: <http://2001::1> against <http://example.org/foo/bar> 
+PASS Parsing: <http://2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <file:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <file://example:1/> against <about:blank> 
+PASS Parsing: <file://example:test/> against <about:blank> 
+PASS Parsing: <file://example%/> against <about:blank> 
+PASS Parsing: <file://[example]/> against <about:blank> 
+PASS Parsing: <ftps:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftps:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: </a/b/c> against <http://example.org/foo/bar> 
+PASS Parsing: </a/ /c> against <http://example.org/foo/bar> 
+PASS Parsing: </a%2fc> against <http://example.org/foo/bar> 
+PASS Parsing: </a/%2f/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <#β> against <http://example.org/foo/bar> assert_equals: href expected "http://example.org/foo/bar#%CE%B2" but got "http://example.org/foo/bar#β"
+PASS Parsing: <data:text/html,test#test> against <http://example.org/foo/bar> 
+PASS Parsing: <tel:1234567890> against <http://example.org/foo/bar> 
+FAIL Parsing: <file:c:\foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:/foo/bar.html" but got "file:///tmp/mock/c:/foo/bar.html"
+FAIL Parsing: <  File:c|////foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:////foo/bar.html" but got "file:///tmp/mock/c%7C////foo/bar.html"
+FAIL Parsing: <C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///tmp/mock/C%7C/foo/bar"
+FAIL Parsing: </C|\foo\bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///C%7C/foo/bar"
+FAIL Parsing: <//C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file://c%7C/foo/bar"
+PASS Parsing: <//server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <\\server\file> against <file:///tmp/mock/path> 
+PASS Parsing: </\server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///foo/bar.txt> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///home/me> against <file:///tmp/mock/path> 
+PASS Parsing: <//> against <file:///tmp/mock/path> 
+PASS Parsing: <///> against <file:///tmp/mock/path> 
+PASS Parsing: <///test> against <file:///tmp/mock/path> 
+PASS Parsing: <file://test> against <file:///tmp/mock/path> 
+FAIL Parsing: <file://localhost> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/test> against <file:///tmp/mock/path> assert_equals: href expected "file:///test" but got "file://localhost/test"
+PASS Parsing: <test> against <file:///tmp/mock/path> 
+PASS Parsing: <file:test> against <file:///tmp/mock/path> 
+PASS Parsing: <http://example.com/././foo> against <about:blank> 
+PASS Parsing: <http://example.com/./.foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo/.> against <about:blank> 
+PASS Parsing: <http://example.com/foo/./> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Parsing: <http://example.com/foo/..bar> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 
+FAIL Parsing: <http://example.com/foo/%2e%2> against <about:blank> assert_equals: href expected "http://example.com/foo/%2e%2" but got "http://example.com/foo/.%2"
+FAIL Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> assert_equals: href expected "http://example.com/%2e.bar" but got "http://example.com/..bar"
+PASS Parsing: <http://example.com////../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Parsing: <http://example.com/foo> against <about:blank> 
+PASS Parsing: <http://example.com/%20foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo%> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2©zbar> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%41%7a> against <about:blank> assert_equals: href expected "http://example.com/foo%41%7a" but got "http://example.com/fooAz"
+PASS Parsing: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%00%51> against <about:blank> Failed to construct 'URL': Invalid URL
+PASS Parsing: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Parsing: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Parsing: <http://example.com/foo	bar> against <about:blank> 
+PASS Parsing: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Parsing: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Parsing: <http://example.com/@asdf%40> against <about:blank> 
+PASS Parsing: <http://example.com/你好你好> against <about:blank> 
+PASS Parsing: <http://example.com/‥/foo> against <about:blank> 
+PASS Parsing: <http://example.com//foo> against <about:blank> 
+PASS Parsing: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Parsing: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+FAIL Parsing: <http://www.google.com/foo?bar=baz# »> against <about:blank> assert_equals: href expected "http://www.google.com/foo?bar=baz# %C2%BB" but got "http://www.google.com/foo?bar=baz# »"
+PASS Parsing: <data:test# »> against <about:blank> 
+PASS Parsing: <http://www.google.com> against <about:blank> 
+PASS Parsing: <http://192.0x00A80001> against <about:blank> 
+FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo%2Ehtml" but got "http://www/foo.html"
+PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 
+PASS Parsing: <http://user:pass@/> against <about:blank> 
+PASS Parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 
+PASS Parsing: <http://foo:80/> against <about:blank> 
+PASS Parsing: <http://foo:81/> against <about:blank> 
+FAIL Parsing: <httpa://foo:80/> against <about:blank> assert_equals: host expected "foo:80" but got ""
+PASS Parsing: <http://foo:-80/> against <about:blank> 
+PASS Parsing: <https://foo:443/> against <about:blank> 
+PASS Parsing: <https://foo:80/> against <about:blank> 
+PASS Parsing: <ftp://foo:21/> against <about:blank> 
+PASS Parsing: <ftp://foo:80/> against <about:blank> 
+PASS Parsing: <gopher://foo:70/> against <about:blank> 
+PASS Parsing: <gopher://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:80/> against <about:blank> 
+PASS Parsing: <ws://foo:81/> against <about:blank> 
+PASS Parsing: <ws://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:815/> against <about:blank> 
+PASS Parsing: <wss://foo:80/> against <about:blank> 
+PASS Parsing: <wss://foo:81/> against <about:blank> 
+PASS Parsing: <wss://foo:443/> against <about:blank> 
+PASS Parsing: <wss://foo:815/> against <about:blank> 
+PASS Parsing: <http:/example.com/> against <about:blank> 
+PASS Parsing: <ftp:/example.com/> against <about:blank> 
+PASS Parsing: <https:/example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:/example.com/> against <about:blank> 
+PASS Parsing: <file:/example.com/> against <about:blank> 
+PASS Parsing: <ftps:/example.com/> against <about:blank> 
+PASS Parsing: <gopher:/example.com/> against <about:blank> 
+PASS Parsing: <ws:/example.com/> against <about:blank> 
+PASS Parsing: <wss:/example.com/> against <about:blank> 
+PASS Parsing: <data:/example.com/> against <about:blank> 
+PASS Parsing: <javascript:/example.com/> against <about:blank> 
+PASS Parsing: <mailto:/example.com/> against <about:blank> 
+PASS Parsing: <http:example.com/> against <about:blank> 
+PASS Parsing: <ftp:example.com/> against <about:blank> 
+PASS Parsing: <https:example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:example.com/> against <about:blank> 
+PASS Parsing: <ftps:example.com/> against <about:blank> 
+PASS Parsing: <gopher:example.com/> against <about:blank> 
+PASS Parsing: <ws:example.com/> against <about:blank> 
+PASS Parsing: <wss:example.com/> against <about:blank> 
+PASS Parsing: <data:example.com/> against <about:blank> 
+PASS Parsing: <javascript:example.com/> against <about:blank> 
+PASS Parsing: <mailto:example.com/> against <about:blank> 
+PASS Parsing: <http:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/@www.example.com> against <about:blank> 
+PASS Parsing: <http://@www.example.com> against <about:blank> 
+PASS Parsing: <http:a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://@pple.com> against <about:blank> 
+PASS Parsing: <http::b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://:b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/:@/www.example.com> against <about:blank> 
+PASS Parsing: <http://user@/www.example.com> against <about:blank> 
+PASS Parsing: <http:@/www.example.com> against <about:blank> 
+PASS Parsing: <http:/@/www.example.com> against <about:blank> 
+PASS Parsing: <http://@/www.example.com> against <about:blank> 
+PASS Parsing: <https:@/www.example.com> against <about:blank> 
+PASS Parsing: <http:a:b@/www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:b@/www.example.com> against <about:blank> 
+PASS Parsing: <http://a:b@/www.example.com> against <about:blank> 
+PASS Parsing: <http::@/www.example.com> against <about:blank> 
+PASS Parsing: <http:a:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://www.@pple.com> against <about:blank> 
+PASS Parsing: <http:@:www.example.com> against <about:blank> 
+PASS Parsing: <http:/@:www.example.com> against <about:blank> 
+PASS Parsing: <http://@:www.example.com> against <about:blank> 
+PASS Parsing: <http://:@www.example.com> against <about:blank> 
+PASS Parsing: </> against <http://www.example.com/test> 
+PASS Parsing: </test.txt> against <http://www.example.com/test> 
+PASS Parsing: <.> against <http://www.example.com/test> 
+PASS Parsing: <..> against <http://www.example.com/test> 
+PASS Parsing: <test.txt> against <http://www.example.com/test> 
+PASS Parsing: <./test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <中/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Parsing: <//www.example2.com> against <http://www.example.com/test> 
+PASS Parsing: <file:...> against <http://www.example.com/test> 
+PASS Parsing: <file:..> against <http://www.example.com/test> 
+PASS Parsing: <file:a> against <http://www.example.com/test> 
+PASS Parsing: <http://ExAmPlE.CoM> against <http://other.com/> 
+FAIL Parsing: <http://example example.com> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <http://Goo%20 goo%7C|.com> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://[]> against <http://other.com/> 
+PASS Parsing: <http://[:]> against <http://other.com/> 
+FAIL Parsing: <http://GOO  goo.com> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Parsing: <http://www.foo。bar.com> against <http://other.com/> 
+PASS Parsing: <http://﷐zyx.com> against <http://other.com/> 
+PASS Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/> 
+PASS Parsing: <https://�> against <about:blank> 
+PASS Parsing: <https://%EF%BF%BD> against <about:blank> 
+FAIL Parsing: <https://x/�?�#�> against <about:blank> assert_equals: href expected "https://x/%EF%BF%BD?%EF%BF%BD#%EF%BF%BD" but got "https://x/%EF%BF%BD?%EF%BF%BD#\ufffd"
+PASS Parsing: <http://Go.com> against <http://other.com/> 
+FAIL Parsing: <http://%41.com> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://%00.com> against <http://other.com/> 
+PASS Parsing: <http://%ef%bc%85%ef%bc%90%ef%bc%90.com> against <http://other.com/> 
+PASS Parsing: <http://你好你好> against <http://other.com/> 
+FAIL Parsing: <https://faß.ExAmPlE/> against <about:blank> assert_equals: href expected "https://xn--fa-hia.example/" but got "https://fass.example/"
+FAIL Parsing: <sc://faß.ExAmPlE/> against <about:blank> assert_equals: host expected "fa%C3%9F.ExAmPlE" but got ""
+PASS Parsing: <http://%zz%66%a.com> against <http://other.com/> 
+PASS Parsing: <http://%25> against <http://other.com/> 
+PASS Parsing: <http://hello%00> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+PASS Parsing: <http://192.168.0.257> against <http://other.com/> 
+PASS Parsing: <http://%3g%78%63%30%2e%30%32%35%30%2E.01> against <http://other.com/> 
+FAIL Parsing: <http://192.168.0.1 hello> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <https://x x:12> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Parsing: <http://./> against <about:blank> 
+PASS Parsing: <http://../> against <about:blank> 
+PASS Parsing: <http://0..0x300/> against <about:blank> 
+PASS Parsing: <http://[www.google.com]/> against <about:blank> 
+PASS Parsing: <http://[google.com]> against <http://other.com/> 
+PASS Parsing: <http://[::1.2.3.4x]> against <http://other.com/> 
+FAIL Parsing: <http://[::1.2.3.]> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <http://[::1.2.]> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <http://[::1.]> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://foo:💩@example.com/bar> against <http://other.com/> 
+PASS Parsing: <#> against <test:test> 
+PASS Parsing: <#x> against <mailto:x@x.com> 
+PASS Parsing: <#x> against <data:,> 
+PASS Parsing: <#x> against <about:blank> 
+PASS Parsing: <#> against <test:test?test> 
+PASS Parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Parsing: </some/path> against <http://user@example.org/smth> 
+PASS Parsing: <> against <http://user:pass@example.org:21/smth> 
+PASS Parsing: </some/path> against <http://user:pass@example.org:21/smth> 
+PASS Parsing: <i> against <sc:sd> 
+PASS Parsing: <i> against <sc:sd/sd> 
+PASS Parsing: <i> against <sc:/pa/pa> 
+FAIL Parsing: <i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/i" but got "///pa/i"
+PASS Parsing: <../i> against <sc:sd> 
+PASS Parsing: <../i> against <sc:sd/sd> 
+PASS Parsing: <../i> against <sc:/pa/pa> 
+FAIL Parsing: <../i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <../i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+PASS Parsing: </i> against <sc:sd> 
+PASS Parsing: </i> against <sc:sd/sd> 
+PASS Parsing: </i> against <sc:/pa/pa> 
+FAIL Parsing: </i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: </i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+PASS Parsing: <?i> against <sc:sd> 
+PASS Parsing: <?i> against <sc:sd/sd> 
+PASS Parsing: <?i> against <sc:/pa/pa> 
+FAIL Parsing: <?i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <?i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+PASS Parsing: <#i> against <sc:sd> 
+PASS Parsing: <#i> against <sc:sd/sd> 
+PASS Parsing: <#i> against <sc:/pa/pa> 
+FAIL Parsing: <#i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <#i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+FAIL Parsing: <about:/../> against <about:blank> assert_equals: href expected "about:/" but got "about:/../"
+FAIL Parsing: <data:/../> against <about:blank> assert_equals: href expected "data:/" but got "data:/../"
+FAIL Parsing: <javascript:/../> against <about:blank> assert_equals: href expected "javascript:/" but got "javascript:/../"
+FAIL Parsing: <mailto:/../> against <about:blank> assert_equals: href expected "mailto:/" but got "mailto:/../"
+FAIL Parsing: <sc://ñ.test/> against <about:blank> assert_equals: host expected "%C3%B1.test" but got ""
+FAIL Parsing: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: host expected "%1F!\"$&'()*+,-.;<=>^_`{|}~" but got ""
+FAIL Parsing: <sc://\0/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc:// /> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://%/> against <about:blank> assert_equals: host expected "%" but got ""
+FAIL Parsing: <sc://@/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://te@s:t@/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://:/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://:12/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://[/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://\/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://]/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+PASS Parsing: <sc:\../> against <about:blank> 
+PASS Parsing: <sc::a@example.net> against <about:blank> 
+PASS Parsing: <wow:%NBD> against <about:blank> 
+PASS Parsing: <wow:%1G> against <about:blank> 
+PASS Parsing: <ftp://example.com%80/> against <about:blank> 
+PASS Parsing: <ftp://example.com%A0/> against <about:blank> 
+PASS Parsing: <https://example.com%80/> against <about:blank> 
+PASS Parsing: <https://example.com%A0/> against <about:blank> 
+PASS Parsing: <ftp://%e2%98%83> against <about:blank> 
+PASS Parsing: <https://%e2%98%83> against <about:blank> 
+PASS Parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Parsing: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Parsing: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <https://example.org/foo/bar> 
+PASS Parsing: <sc:> against <https://example.org/foo/bar> 
+PASS Parsing: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Parsing: <http://192.168.257> against <http://other.com/> 
+PASS Parsing: <http://192.168.257.com> against <http://other.com/> 
+PASS Parsing: <http://256> against <http://other.com/> 
+PASS Parsing: <http://256.com> against <http://other.com/> 
+PASS Parsing: <http://999999999> against <http://other.com/> 
+PASS Parsing: <http://999999999.com> against <http://other.com/> 
+PASS Parsing: <http://10000000000> against <http://other.com/> 
+PASS Parsing: <http://10000000000.com> against <http://other.com/> 
+PASS Parsing: <http://4294967295> against <http://other.com/> 
+PASS Parsing: <http://4294967296> against <http://other.com/> 
+PASS Parsing: <http://0xffffffff> against <http://other.com/> 
+PASS Parsing: <http://0xffffffff1> against <http://other.com/> 
+PASS Parsing: <http://256.256.256.256> against <http://other.com/> 
+PASS Parsing: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Parsing: <https://0x.0x.0> against <about:blank> 
+PASS Parsing: <file:///C%3A/> against <about:blank> 
+PASS Parsing: <file:///C%7C/> against <about:blank> 
+PASS Parsing: <pix/submit.gif> against <file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html> 
+FAIL Parsing: <..> against <file:///C:/> assert_equals: href expected "file:///C:/" but got "file:///"
+PASS Parsing: <..> against <file:///> 
+FAIL Parsing: </> against <file:///C:/a/b> assert_equals: href expected "file:///C:/" but got "file:///"
+FAIL Parsing: <//d:> against <file:///C:/a/b> Failed to construct 'URL': Invalid URL
+FAIL Parsing: <//d:/..> against <file:///C:/a/b> Failed to construct 'URL': Invalid URL
+PASS Parsing: <..> against <file:///ab:/> 
+PASS Parsing: <..> against <file:///1:/> 
+PASS Parsing: <> against <file:///test?test#test> 
+PASS Parsing: <file:> against <file:///test?test#test> 
+PASS Parsing: <?x> against <file:///test?test#test> 
+PASS Parsing: <file:?x> against <file:///test?test#test> 
+PASS Parsing: <#x> against <file:///test?test#test> 
+PASS Parsing: <file:#x> against <file:///test?test#test> 
+PASS Parsing: <file:\\//> against <about:blank> 
+PASS Parsing: <file:\\\\> against <about:blank> 
+PASS Parsing: <file:\\\\?fox> against <about:blank> 
+PASS Parsing: <file:\\\\#guppy> against <about:blank> 
+FAIL Parsing: <file://spider///> against <about:blank> assert_equals: href expected "file://spider/" but got "file://spider///"
+FAIL Parsing: <file:\\localhost//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost//"
+PASS Parsing: <file:///localhost//cat> against <about:blank> 
+PASS Parsing: <file://\/localhost//cat> against <about:blank> 
+FAIL Parsing: <file://localhost//a//../..//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost///"
+PASS Parsing: </////mouse> against <file:///elephant> 
+PASS Parsing: <\//pig> against <file://lion/> 
+FAIL Parsing: <\/localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: <//localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: </..//localhost//pig> against <file://lion/> assert_equals: href expected "file://lion/localhost//pig" but got "file://lion//localhost//pig"
+PASS Parsing: <file://> against <file://ape/> 
+PASS Parsing: </rooibos> against <file://tea/> 
+PASS Parsing: </?chai> against <file://tea/> 
+FAIL Parsing: <C|> against <file://host/dir/file> assert_equals: href expected "file:///C:" but got "file://host/dir/C%7C"
+FAIL Parsing: <C|#> against <file://host/dir/file> assert_equals: href expected "file:///C:#" but got "file://host/dir/C%7C#"
+FAIL Parsing: <C|?> against <file://host/dir/file> assert_equals: href expected "file:///C:?" but got "file://host/dir/C%7C?"
+FAIL Parsing: <C|/> against <file://host/dir/file> assert_equals: href expected "file:///C:/" but got "file://host/dir/C%7C/"
+FAIL Parsing: <C|\> against <file://host/dir/file> assert_equals: href expected "file:///C:/" but got "file://host/dir/C%7C/"
+PASS Parsing: <C> against <file://host/dir/file> 
+FAIL Parsing: <C|a> against <file://host/dir/file> assert_equals: href expected "file://host/dir/C|a" but got "file://host/dir/C%7Ca"
+FAIL Parsing: <file://example.net/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://example.net/C:/"
+FAIL Parsing: <file://1.2.3.4/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://1.2.3.4/C:/"
+FAIL Parsing: <file://[1::8]/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://[1::8]/C:/"
+FAIL Parsing: <file:/C|/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file:///C%7C/"
+FAIL Parsing: <file://C|/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://c%7C/"
+PASS Parsing: <file:> against <about:blank> 
+PASS Parsing: <file:?q=v> against <about:blank> 
+PASS Parsing: <file:#frag> against <about:blank> 
+PASS Parsing: <http://[1:0::]> against <http://example.net/> 
+PASS Parsing: <http://[0:1:2:3:4:5:6:7:8]> against <http://example.net/> 
+PASS Parsing: <https://[0::0::0]> against <about:blank> 
+PASS Parsing: <https://[0:.0]> against <about:blank> 
+PASS Parsing: <https://[0:0:]> against <about:blank> 
+PASS Parsing: <https://[0:1:2:3:4:5:6:7.0.0.0.1]> against <about:blank> 
+PASS Parsing: <https://[0:1.00.0.0.0]> against <about:blank> 
+PASS Parsing: <https://[0:1.290.0.0.0]> against <about:blank> 
+PASS Parsing: <https://[0:1.23.23]> against <about:blank> 
+PASS Parsing: <http://?> against <about:blank> 
+PASS Parsing: <http://#> against <about:blank> 
+FAIL Parsing: <sc://ñ> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ?x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ#x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <#x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+FAIL Parsing: <?x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+FAIL Parsing: <sc://?> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <sc://#> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <///> against <sc://x/> Failed to construct 'URL': Invalid URL
+FAIL Parsing: <////> against <sc://x/> Failed to construct 'URL': Invalid URL
+FAIL Parsing: <////x/> against <sc://x/> assert_equals: href expected "sc:////x/" but got "sc://x/"
+FAIL Parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: host expected "foobar.com" but got ""
+FAIL Parsing: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: username expected "user" but got ""
+FAIL Parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: host expected "10.10.10.10:7777" but got ""
+FAIL Parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <rsync://foo@host:911/sup> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <git://github.com/foo/bar.git> against <about:blank> assert_equals: host expected "github.com" but got ""
+FAIL Parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: host expected "myserver.com:6999" but got ""
+FAIL Parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: host expected "fw.example.org:9999" but got ""
+FAIL Parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: host expected "localhost:389" but got ""
+FAIL Parsing: <git+https://github.com/foo/bar> against <about:blank> assert_equals: host expected "github.com" but got ""
+PASS Parsing: <urn:ietf:rfc:2648> against <about:blank> 
+PASS Parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank> 
+FAIL Parsing: <non-special://%E2%80%A0/> against <about:blank> assert_equals: host expected "%E2%80%A0" but got ""
+FAIL Parsing: <non-special://H%4fSt/path> against <about:blank> assert_equals: host expected "H%4fSt" but got ""
+FAIL Parsing: <non-special://[1:2:0:0:5:0:0:0]/> against <about:blank> assert_equals: href expected "non-special://[1:2:0:0:5::]/" but got "non-special://[1:2:0:0:5:0:0:0]/"
+FAIL Parsing: <non-special://[1:2:0:0:0:0:0:3]/> against <about:blank> assert_equals: href expected "non-special://[1:2::3]/" but got "non-special://[1:2:0:0:0:0:0:3]/"
+FAIL Parsing: <non-special://[1:2::3]:80/> against <about:blank> assert_equals: host expected "[1:2::3]:80" but got ""
+FAIL Parsing: <non-special://[:80/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <blob:https://example.com:443/> against <about:blank> 
+PASS Parsing: <blob:d3958f5c-0777-0845-9dcf-2cb28783acaf> against <about:blank> 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/url-origin-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/url-origin-expected.txt
new file mode 100644
index 0000000..863219f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/url-origin-expected.txt
@@ -0,0 +1,307 @@
+This is a testharness.js-based test.
+Found 294 tests; 217 PASS, 77 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS Origin parsing: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Origin parsing: <https://test:@test> against <about:blank> 
+PASS Origin parsing: <https://:@test> against <about:blank> 
+FAIL Origin parsing: <non-special://test:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+FAIL Origin parsing: <non-special://:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+PASS Origin parsing: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Origin parsing: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Origin parsing: < foo.com  > against <http://example.org/foo/bar> 
+FAIL Origin parsing: <a:	 foo.com> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "a://"
+PASS Origin parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://f:/c> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <http://f:0/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+FAIL Origin parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+PASS Origin parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Origin parsing: <> against <http://example.org/foo/bar> 
+PASS Origin parsing: <  	> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:a> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:\> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:#> against <http://example.org/foo/bar> 
+PASS Origin parsing: <#> against <http://example.org/foo/bar> 
+PASS Origin parsing: <#/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <#\> against <http://example.org/foo/bar> 
+PASS Origin parsing: <#;?> against <http://example.org/foo/bar> 
+PASS Origin parsing: <?> against <http://example.org/foo/bar> 
+PASS Origin parsing: </> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:23> against <http://example.org/foo/bar> 
+PASS Origin parsing: </:23> against <http://example.org/foo/bar> 
+PASS Origin parsing: <::> against <http://example.org/foo/bar> 
+PASS Origin parsing: <::23> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <foo://> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+PASS Origin parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <foo:/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Origin parsing: <foo:/bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Origin parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Origin parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Origin parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Origin parsing: <c:/foo> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "c://"
+PASS Origin parsing: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Origin parsing: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <https:/example.com/> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Origin parsing: <ftps:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Origin parsing: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <javascript:/example.com/> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <mailto:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Origin parsing: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <https:example.com/> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Origin parsing: <ftps:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Origin parsing: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <javascript:example.com/> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <mailto:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Origin parsing: </a/b/c> against <http://example.org/foo/bar> 
+PASS Origin parsing: </a/ /c> against <http://example.org/foo/bar> 
+PASS Origin parsing: </a%2fc> against <http://example.org/foo/bar> 
+PASS Origin parsing: </a/%2f/c> against <http://example.org/foo/bar> 
+PASS Origin parsing: <#β> against <http://example.org/foo/bar> 
+PASS Origin parsing: <data:text/html,test#test> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <tel:1234567890> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "tel://"
+PASS Origin parsing: <http://example.com/././foo> against <about:blank> 
+PASS Origin parsing: <http://example.com/./.foo> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/.> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/./> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/..bar> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/../../..> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/%2e> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/%2e%2> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 
+PASS Origin parsing: <http://example.com////../..> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo> against <about:blank> 
+PASS Origin parsing: <http://example.com/%20foo> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo%> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo%2> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo%2©zbar> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo%41%7a> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Origin parsing: <http://example.com/foo%00%51> against <about:blank> Failed to construct 'URL': Invalid URL
+PASS Origin parsing: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Origin parsing: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo	bar> against <about:blank> 
+PASS Origin parsing: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Origin parsing: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Origin parsing: <http://example.com/@asdf%40> against <about:blank> 
+PASS Origin parsing: <http://example.com/你好你好> against <about:blank> 
+PASS Origin parsing: <http://example.com/‥/foo> against <about:blank> 
+PASS Origin parsing: <http://example.com//foo> against <about:blank> 
+PASS Origin parsing: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Origin parsing: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+PASS Origin parsing: <http://www.google.com/foo?bar=baz# »> against <about:blank> 
+PASS Origin parsing: <data:test# »> against <about:blank> 
+PASS Origin parsing: <http://www.google.com> against <about:blank> 
+PASS Origin parsing: <http://192.0x00A80001> against <about:blank> 
+PASS Origin parsing: <http://www/foo%2Ehtml> against <about:blank> 
+PASS Origin parsing: <http://www/foo/%2E/html> against <about:blank> 
+PASS Origin parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Origin parsing: <http:\\www.google.com\foo> against <about:blank> 
+PASS Origin parsing: <http://foo:80/> against <about:blank> 
+PASS Origin parsing: <http://foo:81/> against <about:blank> 
+FAIL Origin parsing: <httpa://foo:80/> against <about:blank> assert_equals: origin expected "null" but got "httpa://"
+PASS Origin parsing: <https://foo:443/> against <about:blank> 
+PASS Origin parsing: <https://foo:80/> against <about:blank> 
+PASS Origin parsing: <ftp://foo:21/> against <about:blank> 
+PASS Origin parsing: <ftp://foo:80/> against <about:blank> 
+PASS Origin parsing: <gopher://foo:70/> against <about:blank> 
+PASS Origin parsing: <gopher://foo:443/> against <about:blank> 
+PASS Origin parsing: <ws://foo:80/> against <about:blank> 
+PASS Origin parsing: <ws://foo:81/> against <about:blank> 
+PASS Origin parsing: <ws://foo:443/> against <about:blank> 
+PASS Origin parsing: <ws://foo:815/> against <about:blank> 
+PASS Origin parsing: <wss://foo:80/> against <about:blank> 
+PASS Origin parsing: <wss://foo:81/> against <about:blank> 
+PASS Origin parsing: <wss://foo:443/> against <about:blank> 
+PASS Origin parsing: <wss://foo:815/> against <about:blank> 
+PASS Origin parsing: <http:/example.com/> against <about:blank> 
+PASS Origin parsing: <ftp:/example.com/> against <about:blank> 
+PASS Origin parsing: <https:/example.com/> against <about:blank> 
+FAIL Origin parsing: <madeupscheme:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Origin parsing: <ftps:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Origin parsing: <gopher:/example.com/> against <about:blank> 
+PASS Origin parsing: <ws:/example.com/> against <about:blank> 
+PASS Origin parsing: <wss:/example.com/> against <about:blank> 
+PASS Origin parsing: <data:/example.com/> against <about:blank> 
+PASS Origin parsing: <javascript:/example.com/> against <about:blank> 
+FAIL Origin parsing: <mailto:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Origin parsing: <http:example.com/> against <about:blank> 
+PASS Origin parsing: <ftp:example.com/> against <about:blank> 
+PASS Origin parsing: <https:example.com/> against <about:blank> 
+FAIL Origin parsing: <madeupscheme:example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Origin parsing: <ftps:example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Origin parsing: <gopher:example.com/> against <about:blank> 
+PASS Origin parsing: <ws:example.com/> against <about:blank> 
+PASS Origin parsing: <wss:example.com/> against <about:blank> 
+PASS Origin parsing: <data:example.com/> against <about:blank> 
+PASS Origin parsing: <javascript:example.com/> against <about:blank> 
+FAIL Origin parsing: <mailto:example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Origin parsing: <http:@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:/@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:a:b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:/a:b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://a:b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://@pple.com> against <about:blank> 
+PASS Origin parsing: <http::b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:/:b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://:b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:a:@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:/a:@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://a:@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://www.@pple.com> against <about:blank> 
+PASS Origin parsing: <http://:@www.example.com> against <about:blank> 
+PASS Origin parsing: </> against <http://www.example.com/test> 
+PASS Origin parsing: </test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <.> against <http://www.example.com/test> 
+PASS Origin parsing: <..> against <http://www.example.com/test> 
+PASS Origin parsing: <test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <./test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <../test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <../../test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <中/test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Origin parsing: <//www.example2.com> against <http://www.example.com/test> 
+PASS Origin parsing: <http://ExAmPlE.CoM> against <http://other.com/> 
+PASS Origin parsing: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Origin parsing: <http://www.foo。bar.com> against <http://other.com/> 
+PASS Origin parsing: <https://x/�?�#�> against <about:blank> 
+PASS Origin parsing: <http://Go.com> against <http://other.com/> 
+FAIL Origin parsing: <http://你好你好> against <http://other.com/> assert_equals: origin expected "http://你好你好" but got "http://xn--6qqa088eba"
+FAIL Origin parsing: <https://faß.ExAmPlE/> against <about:blank> assert_equals: origin expected "https://faß.example" but got "https://fass.example"
+PASS Origin parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Origin parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+PASS Origin parsing: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Origin parsing: <http://./> against <about:blank> 
+PASS Origin parsing: <http://../> against <about:blank> 
+PASS Origin parsing: <http://0..0x300/> against <about:blank> 
+PASS Origin parsing: <http://foo:💩@example.com/bar> against <http://other.com/> 
+FAIL Origin parsing: <#> against <test:test> assert_equals: origin expected "null" but got "test://"
+FAIL Origin parsing: <#x> against <mailto:x@x.com> assert_equals: origin expected "null" but got "mailto://"
+PASS Origin parsing: <#x> against <data:,> 
+PASS Origin parsing: <#x> against <about:blank> 
+FAIL Origin parsing: <#> against <test:test?test> assert_equals: origin expected "null" but got "test://"
+PASS Origin parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Origin parsing: <https://@@@example> against <http://doesnotmatter/> 
+PASS Origin parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Origin parsing: </some/path> against <http://user@example.org/smth> 
+PASS Origin parsing: <> against <http://user:pass@example.org:21/smth> 
+PASS Origin parsing: </some/path> against <http://user:pass@example.org:21/smth> 
+FAIL Origin parsing: <i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <../i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <../i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <../i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: </i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: </i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: </i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <?i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <?i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <?i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#i> against <sc:sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#i> against <sc:sd/sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Origin parsing: <about:/../> against <about:blank> 
+PASS Origin parsing: <data:/../> against <about:blank> 
+PASS Origin parsing: <javascript:/../> against <about:blank> 
+FAIL Origin parsing: <mailto:/../> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+FAIL Origin parsing: <sc://ñ.test/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+FAIL Origin parsing: <sc:\../> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <sc::a@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <wow:%NBD> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Origin parsing: <wow:%1G> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Origin parsing: <ftp://%e2%98%83> against <about:blank> assert_equals: origin expected "ftp://☃" but got "ftp://xn--n3h"
+FAIL Origin parsing: <https://%e2%98%83> against <about:blank> assert_equals: origin expected "https://☃" but got "https://xn--n3h"
+PASS Origin parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Origin parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Origin parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Origin parsing: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Origin parsing: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Origin parsing: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http:> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <sc:> against <https://example.org/foo/bar> assert_equals: origin expected "null" but got "sc://"
+PASS Origin parsing: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Origin parsing: <http://192.168.257> against <http://other.com/> 
+PASS Origin parsing: <http://192.168.257.com> against <http://other.com/> 
+PASS Origin parsing: <http://256> against <http://other.com/> 
+PASS Origin parsing: <http://256.com> against <http://other.com/> 
+PASS Origin parsing: <http://999999999> against <http://other.com/> 
+PASS Origin parsing: <http://999999999.com> against <http://other.com/> 
+PASS Origin parsing: <http://10000000000.com> against <http://other.com/> 
+PASS Origin parsing: <http://4294967295> against <http://other.com/> 
+PASS Origin parsing: <http://0xffffffff> against <http://other.com/> 
+PASS Origin parsing: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Origin parsing: <https://0x.0x.0> against <about:blank> 
+PASS Origin parsing: <http://[1:0::]> against <http://example.net/> 
+FAIL Origin parsing: <sc://ñ> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <sc://ñ?x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <sc://ñ#x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+FAIL Origin parsing: <?x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+FAIL Origin parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: origin expected "null" but got "tftp://"
+FAIL Origin parsing: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: origin expected "null" but got "telnet://"
+FAIL Origin parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: origin expected "null" but got "ut2004://"
+FAIL Origin parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: origin expected "null" but got "redis://"
+FAIL Origin parsing: <rsync://foo@host:911/sup> against <about:blank> assert_equals: origin expected "null" but got "rsync://"
+FAIL Origin parsing: <git://github.com/foo/bar.git> against <about:blank> assert_equals: origin expected "null" but got "git://"
+FAIL Origin parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: origin expected "null" but got "irc://"
+FAIL Origin parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: origin expected "null" but got "dns://"
+FAIL Origin parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: origin expected "null" but got "ldap://"
+FAIL Origin parsing: <git+https://github.com/foo/bar> against <about:blank> assert_equals: origin expected "null" but got "git+https://"
+FAIL Origin parsing: <urn:ietf:rfc:2648> against <about:blank> assert_equals: origin expected "null" but got "urn://"
+FAIL Origin parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank> assert_equals: origin expected "null" but got "tag://"
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/url-setters-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/url-setters-expected.txt
new file mode 100644
index 0000000..96b43a3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/linux/external/wpt/url/url-setters-expected.txt
@@ -0,0 +1,596 @@
+This is a testharness.js-based test.
+Found 571 tests; 272 PASS, 299 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS URL: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged. 
+PASS <a>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged. 
+PASS <area>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged. 
+PASS URL: Setting <a://example.net>.protocol = 'b' 
+PASS <a>: Setting <a://example.net>.protocol = 'b' 
+PASS <area>: Setting <a://example.net>.protocol = 'b' 
+PASS URL: Setting <javascript:alert(1)>.protocol = 'defuse' 
+PASS <a>: Setting <javascript:alert(1)>.protocol = 'defuse' 
+PASS <area>: Setting <javascript:alert(1)>.protocol = 'defuse' 
+PASS URL: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased 
+PASS <a>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased 
+PASS <area>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased 
+PASS URL: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected 
+PASS <a>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected 
+PASS <area>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected 
+PASS URL: Setting <a://example.net>.protocol = '0b' No leading digit 
+PASS <a>: Setting <a://example.net>.protocol = '0b' No leading digit 
+PASS <area>: Setting <a://example.net>.protocol = '0b' No leading digit 
+PASS URL: Setting <a://example.net>.protocol = '+b' No leading punctuation 
+PASS <a>: Setting <a://example.net>.protocol = '+b' No leading punctuation 
+PASS <area>: Setting <a://example.net>.protocol = '+b' No leading punctuation 
+PASS URL: Setting <a://example.net>.protocol = 'bC0+-.' 
+PASS <a>: Setting <a://example.net>.protocol = 'bC0+-.' 
+PASS <area>: Setting <a://example.net>.protocol = 'bC0+-.' 
+PASS URL: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable 
+PASS <a>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable 
+PASS <area>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable 
+PASS URL: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected 
+PASS <a>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected 
+PASS <area>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected 
+FAIL URL: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to file assert_equals: expected "http://test@example.net/" but got "file://test%40example.net/"
+FAIL <a>: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to file assert_equals: expected "http://test@example.net/" but got "file://test%40example.net/"
+FAIL <area>: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to file assert_equals: expected "http://test@example.net/" but got "file://test%40example.net/"
+FAIL URL: Setting <gopher://example.net:1234>.protocol = 'file' assert_equals: expected "gopher://example.net:1234/" but got "file://example.net:1234/"
+FAIL <a>: Setting <gopher://example.net:1234>.protocol = 'file' assert_equals: expected "gopher://example.net:1234/" but got "file://example.net:1234/"
+FAIL <area>: Setting <gopher://example.net:1234>.protocol = 'file' assert_equals: expected "gopher://example.net:1234/" but got "file://example.net:1234/"
+FAIL URL: Setting <wss://x:x@example.net:1234>.protocol = 'file' assert_equals: expected "wss://x:x@example.net:1234/" but got "file://x:x%40example.net:1234/"
+FAIL <a>: Setting <wss://x:x@example.net:1234>.protocol = 'file' assert_equals: expected "wss://x:x@example.net:1234/" but got "file://x:x%40example.net:1234/"
+FAIL <area>: Setting <wss://x:x@example.net:1234>.protocol = 'file' assert_equals: expected "wss://x:x@example.net:1234/" but got "file://x:x%40example.net:1234/"
+FAIL URL: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host assert_equals: expected "file:///" but got "http://localhost/"
+FAIL <a>: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host assert_equals: expected "file:///" but got "http://localhost/"
+FAIL <area>: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host assert_equals: expected "file:///" but got "http://localhost/"
+FAIL URL: Setting <file:///test>.protocol = 'gopher' assert_equals: expected "file:///test" but got "gopher://test/"
+FAIL <a>: Setting <file:///test>.protocol = 'gopher' assert_equals: expected "file:///test" but got "gopher://test/"
+FAIL <area>: Setting <file:///test>.protocol = 'gopher' assert_equals: expected "file:///test" but got "gopher://test/"
+FAIL URL: Setting <file:>.protocol = 'wss' assert_equals: expected "file:///" but got "wss:"
+FAIL <a>: Setting <file:>.protocol = 'wss' assert_equals: expected "file:///" but got "wss:"
+FAIL <area>: Setting <file:>.protocol = 'wss' assert_equals: expected "file:///" but got "wss:"
+FAIL URL: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special assert_equals: expected "http://example.net/" but got "b://example.net/"
+FAIL <a>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special assert_equals: expected "http://example.net/" but got "b://example.net/"
+FAIL <area>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special assert_equals: expected "http://example.net/" but got "b://example.net/"
+FAIL URL: Setting <file://hi/path>.protocol = 's' assert_equals: expected "file://hi/path" but got "s://hi/path"
+FAIL <a>: Setting <file://hi/path>.protocol = 's' assert_equals: expected "file://hi/path" but got "s://hi/path"
+FAIL <area>: Setting <file://hi/path>.protocol = 's' assert_equals: expected "file://hi/path" but got "s://hi/path"
+FAIL URL: Setting <https://example.net>.protocol = 's' assert_equals: expected "https://example.net/" but got "s://example.net/"
+FAIL <a>: Setting <https://example.net>.protocol = 's' assert_equals: expected "https://example.net/" but got "s://example.net/"
+FAIL <area>: Setting <https://example.net>.protocol = 's' assert_equals: expected "https://example.net/" but got "s://example.net/"
+FAIL URL: Setting <ftp://example.net>.protocol = 'test' assert_equals: expected "ftp://example.net/" but got "test://example.net/"
+FAIL <a>: Setting <ftp://example.net>.protocol = 'test' assert_equals: expected "ftp://example.net/" but got "test://example.net/"
+FAIL <area>: Setting <ftp://example.net>.protocol = 'test' assert_equals: expected "ftp://example.net/" but got "test://example.net/"
+FAIL URL: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must. assert_equals: expected "mailto:me@example.net" but got "http://me@example.net/"
+FAIL <a>: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must. assert_equals: expected "mailto:me@example.net" but got "http://me@example.net/"
+FAIL <area>: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must. assert_equals: expected "mailto:me@example.net" but got "http://me@example.net/"
+FAIL URL: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special assert_equals: expected "ssh://me@example.net" but got "http://me@example.net/"
+FAIL <a>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special assert_equals: expected "ssh://me@example.net" but got "http://me@example.net/"
+FAIL <area>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special assert_equals: expected "ssh://me@example.net" but got "http://me@example.net/"
+FAIL URL: Setting <ssh://me@example.net>.protocol = 'gopher' assert_equals: expected "ssh://me@example.net" but got "gopher://me@example.net/"
+FAIL <a>: Setting <ssh://me@example.net>.protocol = 'gopher' assert_equals: expected "ssh://me@example.net" but got "gopher://me@example.net/"
+FAIL <area>: Setting <ssh://me@example.net>.protocol = 'gopher' assert_equals: expected "ssh://me@example.net" but got "gopher://me@example.net/"
+FAIL URL: Setting <ssh://me@example.net>.protocol = 'file' assert_equals: expected "ssh://me@example.net" but got "file://me%40example.net/"
+FAIL <a>: Setting <ssh://me@example.net>.protocol = 'file' assert_equals: expected "ssh://me@example.net" but got "file://me%40example.net/"
+FAIL <area>: Setting <ssh://me@example.net>.protocol = 'file' assert_equals: expected "ssh://me@example.net" but got "file://me%40example.net/"
+FAIL URL: Setting <ssh://example.net>.protocol = 'file' assert_equals: expected "ssh://example.net" but got "file://example.net/"
+FAIL <a>: Setting <ssh://example.net>.protocol = 'file' assert_equals: expected "ssh://example.net" but got "file://example.net/"
+FAIL <area>: Setting <ssh://example.net>.protocol = 'file' assert_equals: expected "ssh://example.net" but got "file://example.net/"
+FAIL URL: Setting <nonsense:///test>.protocol = 'https' assert_equals: expected "nonsense:///test" but got "https://test/"
+FAIL <a>: Setting <nonsense:///test>.protocol = 'https' assert_equals: expected "nonsense:///test" but got "https://test/"
+FAIL <area>: Setting <nonsense:///test>.protocol = 'https' assert_equals: expected "nonsense:///test" but got "https://test/"
+PASS URL: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored 
+PASS <a>: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored 
+PASS <area>: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored 
+PASS URL: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored 
+PASS <a>: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored 
+PASS <area>: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored 
+PASS URL: Setting <file:///home/you/index.html>.username = 'me' No host means no username 
+PASS <a>: Setting <file:///home/you/index.html>.username = 'me' No host means no username 
+PASS <area>: Setting <file:///home/you/index.html>.username = 'me' No host means no username 
+PASS URL: Setting <unix:/run/foo.socket>.username = 'me' No host means no username 
+PASS <a>: Setting <unix:/run/foo.socket>.username = 'me' No host means no username 
+PASS <area>: Setting <unix:/run/foo.socket>.username = 'me' No host means no username 
+PASS URL: Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username 
+PASS <a>: Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username 
+PASS <area>: Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username 
+PASS URL: Setting <javascript:alert(1)>.username = 'wario' 
+PASS <a>: Setting <javascript:alert(1)>.username = 'wario' 
+PASS <area>: Setting <javascript:alert(1)>.username = 'wario' 
+PASS URL: Setting <http://example.net>.username = 'me' 
+PASS <a>: Setting <http://example.net>.username = 'me' 
+PASS <area>: Setting <http://example.net>.username = 'me' 
+PASS URL: Setting <http://:secret@example.net>.username = 'me' 
+PASS <a>: Setting <http://:secret@example.net>.username = 'me' 
+PASS <area>: Setting <http://:secret@example.net>.username = 'me' 
+PASS URL: Setting <http://me@example.net>.username = '' 
+PASS <a>: Setting <http://me@example.net>.username = '' 
+PASS <area>: Setting <http://me@example.net>.username = '' 
+PASS URL: Setting <http://me:secret@example.net>.username = '' 
+PASS <a>: Setting <http://me:secret@example.net>.username = '' 
+PASS <area>: Setting <http://me:secret@example.net>.username = '' 
+FAIL URL: Setting <http://example.net>.username = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+FAIL <a>: Setting <http://example.net>.username = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+FAIL <area>: Setting <http://example.net>.username = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+PASS URL: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS <a>: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS <area>: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS URL: Setting <sc:///>.username = 'x' 
+PASS <a>: Setting <sc:///>.username = 'x' 
+PASS <area>: Setting <sc:///>.username = 'x' 
+FAIL URL: Setting <javascript://x/>.username = 'wario' assert_equals: expected "javascript://wario@x/" but got "javascript://x/"
+FAIL <a>: Setting <javascript://x/>.username = 'wario' assert_equals: expected "javascript://wario@x/" but got "javascript://x/"
+FAIL <area>: Setting <javascript://x/>.username = 'wario' assert_equals: expected "javascript://wario@x/" but got "javascript://x/"
+PASS URL: Setting <file://test/>.username = 'test' 
+PASS <a>: Setting <file://test/>.username = 'test' 
+PASS <area>: Setting <file://test/>.username = 'test' 
+PASS URL: Setting <file:///home/me/index.html>.password = 'secret' No host means no password 
+PASS <a>: Setting <file:///home/me/index.html>.password = 'secret' No host means no password 
+PASS <area>: Setting <file:///home/me/index.html>.password = 'secret' No host means no password 
+PASS URL: Setting <unix:/run/foo.socket>.password = 'secret' No host means no password 
+PASS <a>: Setting <unix:/run/foo.socket>.password = 'secret' No host means no password 
+PASS <area>: Setting <unix:/run/foo.socket>.password = 'secret' No host means no password 
+PASS URL: Setting <mailto:me@example.net>.password = 'secret' Cannot-be-a-base means no password 
+PASS <a>: Setting <mailto:me@example.net>.password = 'secret' Cannot-be-a-base means no password 
+PASS <area>: Setting <mailto:me@example.net>.password = 'secret' Cannot-be-a-base means no password 
+PASS URL: Setting <http://example.net>.password = 'secret' 
+PASS <a>: Setting <http://example.net>.password = 'secret' 
+PASS <area>: Setting <http://example.net>.password = 'secret' 
+PASS URL: Setting <http://me@example.net>.password = 'secret' 
+PASS <a>: Setting <http://me@example.net>.password = 'secret' 
+PASS <area>: Setting <http://me@example.net>.password = 'secret' 
+PASS URL: Setting <http://:secret@example.net>.password = '' 
+PASS <a>: Setting <http://:secret@example.net>.password = '' 
+PASS <area>: Setting <http://:secret@example.net>.password = '' 
+PASS URL: Setting <http://me:secret@example.net>.password = '' 
+PASS <a>: Setting <http://me:secret@example.net>.password = '' 
+PASS <area>: Setting <http://me:secret@example.net>.password = '' 
+FAIL URL: Setting <http://example.net>.password = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://:%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://:%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+FAIL <a>: Setting <http://example.net>.password = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://:%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://:%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+FAIL <area>: Setting <http://example.net>.password = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://:%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://:%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+PASS URL: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS <a>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS <area>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS URL: Setting <sc:///>.password = 'x' 
+PASS <a>: Setting <sc:///>.password = 'x' 
+PASS <area>: Setting <sc:///>.password = 'x' 
+FAIL URL: Setting <javascript://x/>.password = 'bowser' assert_equals: expected "javascript://:bowser@x/" but got "javascript://x/"
+FAIL <a>: Setting <javascript://x/>.password = 'bowser' assert_equals: expected "javascript://:bowser@x/" but got "javascript://x/"
+FAIL <area>: Setting <javascript://x/>.password = 'bowser' assert_equals: expected "javascript://:bowser@x/" but got "javascript://x/"
+PASS URL: Setting <file://test/>.password = 'test' 
+PASS <a>: Setting <file://test/>.password = 'test' 
+PASS <area>: Setting <file://test/>.password = 'test' 
+FAIL URL: Setting <sc://x/>.host = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.host = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.host = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL URL: Setting <sc://x/>.host = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = ' ' assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.host = ' ' assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.host = ' ' assert_equals: expected "x" but got ""
+FAIL URL: Setting <sc://x/>.host = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = '@' assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.host = '@' assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.host = '@' assert_equals: expected "x" but got ""
+FAIL URL: Setting <sc://x/>.host = 'ß' assert_equals: expected "sc://%C3%9F/" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = 'ß' assert_equals: expected "sc://%C3%9F/" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = 'ß' assert_equals: expected "sc://%C3%9F/" but got "sc://x/"
+FAIL URL: Setting <https://x/>.host = 'ß' IDNA Nontransitional_Processing assert_equals: expected "https://xn--zca/" but got "https://ss/"
+FAIL <a>: Setting <https://x/>.host = 'ß' IDNA Nontransitional_Processing assert_equals: expected "https://xn--zca/" but got "https://ss/"
+FAIL <area>: Setting <https://x/>.host = 'ß' IDNA Nontransitional_Processing assert_equals: expected "https://xn--zca/" but got "https://ss/"
+PASS URL: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host 
+PASS <a>: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host 
+PASS <area>: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host 
+PASS URL: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no password 
+PASS <a>: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no password 
+PASS <area>: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no password 
+PASS URL: Setting <http://example.net>.host = 'example.com:8080' 
+PASS <a>: Setting <http://example.net>.host = 'example.com:8080' 
+PASS <area>: Setting <http://example.net>.host = 'example.com:8080' 
+PASS URL: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new value 
+PASS <a>: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new value 
+PASS <area>: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new value 
+FAIL URL: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specified assert_equals: expected "http://example.com:8080/" but got "http://example.com:0/"
+FAIL <a>: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specified assert_equals: expected "http://example.com:8080/" but got "http://example.com:0/"
+FAIL <area>: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specified assert_equals: expected "http://example.com:8080/" but got "http://example.com:0/"
+PASS URL: Setting <http://example.net>.host = '' The empty host is not valid for special schemes 
+PASS <a>: Setting <http://example.net>.host = '' The empty host is not valid for special schemes 
+PASS <area>: Setting <http://example.net>.host = '' The empty host is not valid for special schemes 
+FAIL URL: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL <a>: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL <area>: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL URL: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "a:/foo"
+FAIL <a>: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "a:/foo"
+FAIL <area>: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "a:/foo"
+PASS URL: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized 
+PASS <a>: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized 
+PASS <area>: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized 
+FAIL URL: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalized assert_equals: expected "http://[::1]:2/" but got "http://[:0/"
+FAIL <a>: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalized assert_equals: expected "http://[::1]:2/" but got "http://[:0/"
+FAIL <area>: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalized assert_equals: expected "http://[::1]:2/" but got "http://[:0/"
+PASS URL: Setting <http://example.net>.host = 'example.com:80' Default port number is removed 
+PASS <a>: Setting <http://example.net>.host = 'example.com:80' Default port number is removed 
+PASS <area>: Setting <http://example.net>.host = 'example.com:80' Default port number is removed 
+PASS URL: Setting <https://example.net>.host = 'example.com:443' Default port number is removed 
+PASS <a>: Setting <https://example.net>.host = 'example.com:443' Default port number is removed 
+PASS <area>: Setting <https://example.net>.host = 'example.com:443' Default port number is removed 
+PASS URL: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant scheme 
+PASS <a>: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant scheme 
+PASS <area>: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant scheme 
+FAIL URL: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+FAIL <a>: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+FAIL <area>: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored 
+FAIL URL: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+FAIL <a>: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+FAIL <area>: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored 
+FAIL URL: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+FAIL <a>: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+FAIL <area>: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored 
+FAIL URL: Setting <http://example.net/path>.host = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+FAIL <a>: Setting <http://example.net/path>.host = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+FAIL <area>: Setting <http://example.net/path>.host = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+FAIL URL: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL <a>: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL <area>: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL URL: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.com:8080/path" but got "view-source+http://example.net/path"
+FAIL <a>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.com:8080/path" but got "view-source+http://example.net/path"
+FAIL <area>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.com:8080/path" but got "view-source+http://example.net/path"
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS URL: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integers 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integers 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integers 
+FAIL URL: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though. assert_equals: expected "http://example.com/path" but got "http://example.com:65536/path"
+FAIL <a>: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though. assert_equals: expected "http://example.com/path" but got "http://example.com:65536/path"
+FAIL <area>: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though. assert_equals: expected "http://example.com/path" but got "http://example.com:65536/path"
+FAIL URL: Setting <http://example.net/>.host = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL <a>: Setting <http://example.net/>.host = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL <area>: Setting <http://example.net/>.host = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL URL: Setting <http://example.net/>.host = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <a>: Setting <http://example.net/>.host = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <area>: Setting <http://example.net/>.host = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL URL: Setting <http://example.net/>.host = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <a>: Setting <http://example.net/>.host = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <area>: Setting <http://example.net/>.host = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL URL: Setting <http://example.net/>.host = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <a>: Setting <http://example.net/>.host = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <area>: Setting <http://example.net/>.host = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL URL: Setting <http://example.net/>.host = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <a>: Setting <http://example.net/>.host = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <area>: Setting <http://example.net/>.host = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL URL: Setting <file://y/>.host = 'x:123' assert_equals: expected "file://y/" but got "file://x/"
+FAIL <a>: Setting <file://y/>.host = 'x:123' assert_equals: expected "file://y/" but got "file://x/"
+FAIL <area>: Setting <file://y/>.host = 'x:123' assert_equals: expected "file://y/" but got "file://x/"
+FAIL URL: Setting <file://y/>.host = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <a>: Setting <file://y/>.host = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <area>: Setting <file://y/>.host = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL URL: Setting <file://hi/x>.host = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL <a>: Setting <file://hi/x>.host = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL <area>: Setting <file://hi/x>.host = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL URL: Setting <sc://test@test/>.host = '' assert_equals: expected "test" but got ""
+FAIL <a>: Setting <sc://test@test/>.host = '' assert_equals: expected "test" but got ""
+FAIL <area>: Setting <sc://test@test/>.host = '' assert_equals: expected "test" but got ""
+FAIL URL: Setting <sc://test:12/>.host = '' assert_equals: expected "test:12" but got ""
+FAIL <a>: Setting <sc://test:12/>.host = '' assert_equals: expected "test:12" but got ""
+FAIL <area>: Setting <sc://test:12/>.host = '' assert_equals: expected "test:12" but got ""
+FAIL URL: Setting <sc://x/>.hostname = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.hostname = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.hostname = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL URL: Setting <sc://x/>.hostname = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = ' ' assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.hostname = ' ' assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.hostname = ' ' assert_equals: expected "x" but got ""
+FAIL URL: Setting <sc://x/>.hostname = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = '@' assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.hostname = '@' assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.hostname = '@' assert_equals: expected "x" but got ""
+PASS URL: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host 
+PASS <a>: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host 
+PASS <area>: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host 
+PASS URL: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no password 
+PASS <a>: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no password 
+PASS <area>: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no password 
+PASS URL: Setting <http://example.net:8080>.hostname = 'example.com' 
+PASS <a>: Setting <http://example.net:8080>.hostname = 'example.com' 
+PASS <area>: Setting <http://example.net:8080>.hostname = 'example.com' 
+PASS URL: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemes 
+PASS <a>: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemes 
+PASS <area>: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemes 
+FAIL URL: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL <a>: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL <area>: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL URL: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "a:/foo"
+FAIL <a>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "a:/foo"
+FAIL <area>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "a:/foo"
+PASS URL: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalized 
+PASS <a>: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalized 
+PASS <area>: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalized 
+PASS URL: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized 
+PASS <a>: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized 
+PASS <area>: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized 
+FAIL URL: Setting <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com:8080/path"
+FAIL <a>: Setting <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com:8080/path"
+FAIL <area>: Setting <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com:8080/path"
+FAIL URL: Setting <http://example.net:8080/path>.hostname = 'example.com:' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com:8080/path" but got "http://example.com::8080/path"
+FAIL <a>: Setting <http://example.net:8080/path>.hostname = 'example.com:' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com:8080/path" but got "http://example.com::8080/path"
+FAIL <area>: Setting <http://example.net:8080/path>.hostname = 'example.com:' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com:8080/path" but got "http://example.com::8080/path"
+FAIL URL: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+FAIL <a>: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+FAIL <area>: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+FAIL URL: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+FAIL <a>: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+FAIL <area>: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+FAIL URL: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+FAIL <a>: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+FAIL <area>: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+FAIL URL: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+FAIL <a>: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+FAIL <area>: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+FAIL URL: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL <a>: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL <area>: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL URL: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL <a>: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL <area>: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL URL: Setting <http://example.net/>.hostname = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[::1.2.3.4x]/"
+FAIL <a>: Setting <http://example.net/>.hostname = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[::1.2.3.4x]/"
+FAIL <area>: Setting <http://example.net/>.hostname = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[::1.2.3.4x]/"
+FAIL URL: Setting <http://example.net/>.hostname = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[::102:3]/"
+FAIL <a>: Setting <http://example.net/>.hostname = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[::102:3]/"
+FAIL <area>: Setting <http://example.net/>.hostname = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[::102:3]/"
+FAIL URL: Setting <http://example.net/>.hostname = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[::100:2]/"
+FAIL <a>: Setting <http://example.net/>.hostname = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[::100:2]/"
+FAIL <area>: Setting <http://example.net/>.hostname = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[::100:2]/"
+FAIL URL: Setting <http://example.net/>.hostname = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[::1]/"
+FAIL <a>: Setting <http://example.net/>.hostname = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[::1]/"
+FAIL <area>: Setting <http://example.net/>.hostname = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[::1]/"
+FAIL URL: Setting <file://y/>.hostname = 'x:123' assert_equals: expected "file://y/" but got "file://x:123/"
+FAIL <a>: Setting <file://y/>.hostname = 'x:123' assert_equals: expected "file://y/" but got "file://x:123/"
+FAIL <area>: Setting <file://y/>.hostname = 'x:123' assert_equals: expected "file://y/" but got "file://x:123/"
+FAIL URL: Setting <file://y/>.hostname = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <a>: Setting <file://y/>.hostname = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <area>: Setting <file://y/>.hostname = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL URL: Setting <file://hi/x>.hostname = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL <a>: Setting <file://hi/x>.hostname = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL <area>: Setting <file://hi/x>.hostname = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL URL: Setting <sc://test@test/>.hostname = '' assert_equals: expected "test" but got ""
+FAIL <a>: Setting <sc://test@test/>.hostname = '' assert_equals: expected "test" but got ""
+FAIL <area>: Setting <sc://test@test/>.hostname = '' assert_equals: expected "test" but got ""
+FAIL URL: Setting <sc://test:12/>.hostname = '' assert_equals: expected "test:12" but got ""
+FAIL <a>: Setting <sc://test:12/>.hostname = '' assert_equals: expected "test:12" but got ""
+FAIL <area>: Setting <sc://test:12/>.hostname = '' assert_equals: expected "test:12" but got ""
+PASS URL: Setting <http://example.net>.port = '8080' 
+PASS <a>: Setting <http://example.net>.port = '8080' 
+PASS <area>: Setting <http://example.net>.port = '8080' 
+FAIL URL: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value assert_equals: expected "http://example.net/" but got "http://example.net:0/"
+FAIL <a>: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value assert_equals: expected "http://example.net/" but got "http://example.net:0/"
+FAIL <area>: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value assert_equals: expected "http://example.net/" but got "http://example.net:0/"
+PASS URL: Setting <http://example.net:8080>.port = '80' Default port number is removed 
+PASS <a>: Setting <http://example.net:8080>.port = '80' Default port number is removed 
+PASS <area>: Setting <http://example.net:8080>.port = '80' Default port number is removed 
+PASS URL: Setting <https://example.net:4433>.port = '443' Default port number is removed 
+PASS <a>: Setting <https://example.net:4433>.port = '443' Default port number is removed 
+PASS <area>: Setting <https://example.net:4433>.port = '443' Default port number is removed 
+PASS URL: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant scheme 
+PASS <a>: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant scheme 
+PASS <area>: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant scheme 
+PASS URL: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignored 
+PASS URL: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignored 
+PASS URL: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignored 
+PASS URL: Setting <http://example.net/path>.port = '8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+PASS <a>: Setting <http://example.net/path>.port = '8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+PASS <area>: Setting <http://example.net/path>.port = '8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+FAIL URL: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.net:8080/path" but got "view-source+http://example.net/path"
+FAIL <a>: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.net:8080/path" but got "view-source+http://example.net/path"
+FAIL <area>: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.net:8080/path" but got "view-source+http://example.net/path"
+PASS URL: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <a>: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <area>: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS URL: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <a>: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <area>: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS URL: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers 
+PASS <a>: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers 
+PASS <area>: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers 
+FAIL URL: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "http://example.net:8080/path" but got "http://example.net:0/path"
+FAIL <a>: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "http://example.net:8080/path" but got "http://example.net:0/path"
+FAIL <area>: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "http://example.net:8080/path" but got "http://example.net:0/path"
+FAIL URL: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "example.net:8080" but got ""
+FAIL <a>: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "example.net:8080" but got ""
+FAIL <area>: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "example.net:8080" but got ""
+PASS URL: Setting <file://test/>.port = '12' 
+PASS <a>: Setting <file://test/>.port = '12' 
+PASS <area>: Setting <file://test/>.port = '12' 
+FAIL URL: Setting <file://localhost/>.port = '12' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <a>: Setting <file://localhost/>.port = '12' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <area>: Setting <file://localhost/>.port = '12' assert_equals: expected "file:///" but got "file://localhost/"
+PASS URL: Setting <non-base:value>.port = '12' 
+PASS <a>: Setting <non-base:value>.port = '12' 
+PASS <area>: Setting <non-base:value>.port = '12' 
+PASS URL: Setting <sc:///>.port = '12' 
+PASS <a>: Setting <sc:///>.port = '12' 
+PASS <area>: Setting <sc:///>.port = '12' 
+FAIL URL: Setting <sc://x/>.port = '12' assert_equals: expected "sc://x:12/" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.port = '12' assert_equals: expected "sc://x:12/" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.port = '12' assert_equals: expected "sc://x:12/" but got "sc://x/"
+FAIL URL: Setting <javascript://x/>.port = '12' assert_equals: expected "javascript://x:12/" but got "javascript://x/"
+FAIL <a>: Setting <javascript://x/>.port = '12' assert_equals: expected "javascript://x:12/" but got "javascript://x/"
+FAIL <area>: Setting <javascript://x/>.port = '12' assert_equals: expected "javascript://x:12/" but got "javascript://x/"
+PASS URL: Setting <mailto:me@example.net>.pathname = '/foo' Cannot-be-a-base don’t have a path 
+PASS <a>: Setting <mailto:me@example.net>.pathname = '/foo' Cannot-be-a-base don’t have a path 
+PASS <area>: Setting <mailto:me@example.net>.pathname = '/foo' Cannot-be-a-base don’t have a path 
+FAIL URL: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket' assert_equals: expected "unix:/var/run/bar.socket?timeout=10" but got "unix:/run/foo.socket?timeout=10"
+FAIL <a>: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket' assert_equals: expected "unix:/var/run/bar.socket?timeout=10" but got "unix:/run/foo.socket?timeout=10"
+FAIL <area>: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket' assert_equals: expected "unix:/var/run/bar.socket?timeout=10" but got "unix:/run/foo.socket?timeout=10"
+PASS URL: Setting <https://example.net#nav>.pathname = 'home' 
+PASS <a>: Setting <https://example.net#nav>.pathname = 'home' 
+PASS <area>: Setting <https://example.net#nav>.pathname = 'home' 
+PASS URL: Setting <https://example.net#nav>.pathname = '../home' 
+PASS <a>: Setting <https://example.net#nav>.pathname = '../home' 
+PASS <area>: Setting <https://example.net#nav>.pathname = '../home' 
+PASS URL: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLs 
+PASS <a>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLs 
+PASS <area>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLs 
+FAIL URL: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is *not* a segment delimiter for non-'special' URLs assert_equals: expected "view-source+http://example.net/\\a\%2E\b\%2e.\c?lang=fr#nav" but got "view-source+http://example.net/home?lang=fr#nav"
+FAIL <a>: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is *not* a segment delimiter for non-'special' URLs assert_equals: expected "view-source+http://example.net/\\a\%2E\b\%2e.\c?lang=fr#nav" but got "view-source+http://example.net/home?lang=fr#nav"
+FAIL <area>: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is *not* a segment delimiter for non-'special' URLs assert_equals: expected "view-source+http://example.net/\\a\%2E\b\%2e.\c?lang=fr#nav" but got "view-source+http://example.net/home?lang=fr#nav"
+FAIL URL: Setting <a:/>.pathname = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed. assert_equals: expected "a:/%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E%3F@AZ[\\]^_%60az%7B|%7D~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/"
+FAIL <a>: Setting <a:/>.pathname = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed. assert_equals: expected "a:/%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E%3F@AZ[\\]^_%60az%7B|%7D~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/"
+FAIL <area>: Setting <a:/>.pathname = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed. assert_equals: expected "a:/%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E%3F@AZ[\\]^_%60az%7B|%7D~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/"
+FAIL URL: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments. assert_equals: expected "http://example.net/%2e%2E%c3%89t%C3%A9" but got "http://example.net/..%c3%89t%C3%A9"
+FAIL <a>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments. assert_equals: expected "http://example.net/%2e%2E%c3%89t%C3%A9" but got "http://example.net/..%c3%89t%C3%A9"
+FAIL <area>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments. assert_equals: expected "http://example.net/%2e%2E%c3%89t%C3%A9" but got "http://example.net/..%c3%89t%C3%A9"
+PASS URL: Setting <http://example.net>.pathname = '?' ? needs to be encoded 
+PASS <a>: Setting <http://example.net>.pathname = '?' ? needs to be encoded 
+PASS <area>: Setting <http://example.net>.pathname = '?' ? needs to be encoded 
+PASS URL: Setting <http://example.net>.pathname = '#' # needs to be encoded 
+PASS <a>: Setting <http://example.net>.pathname = '#' # needs to be encoded 
+PASS <area>: Setting <http://example.net>.pathname = '#' # needs to be encoded 
+FAIL URL: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%3F" but got "sc://example.net"
+FAIL <a>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%3F" but got "sc://example.net"
+FAIL <area>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%3F" but got "sc://example.net"
+FAIL URL: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%23" but got "sc://example.net"
+FAIL <a>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%23" but got "sc://example.net"
+FAIL <area>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%23" but got "sc://example.net"
+FAIL URL: Setting <file://monkey/>.pathname = '\\' File URLs and (back)slashes assert_equals: expected "file://monkey/" but got "file://monkey//"
+FAIL <a>: Setting <file://monkey/>.pathname = '\\' File URLs and (back)slashes assert_equals: expected "file://monkey/" but got "file://monkey//"
+FAIL <area>: Setting <file://monkey/>.pathname = '\\' File URLs and (back)slashes assert_equals: expected "file://monkey/" but got "file://monkey//"
+FAIL URL: Setting <file:///unicorn>.pathname = '//\/' File URLs and (back)slashes assert_equals: expected "file:///" but got "file://////"
+PASS <a>: Setting <file:///unicorn>.pathname = '//\/' File URLs and (back)slashes 
+PASS <area>: Setting <file:///unicorn>.pathname = '//\/' File URLs and (back)slashes 
+FAIL URL: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes assert_equals: expected "file:///" but got "file://///"
+PASS <a>: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes 
+PASS <area>: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes 
+PASS URL: Setting <https://example.net#nav>.search = 'lang=fr' 
+PASS <a>: Setting <https://example.net#nav>.search = 'lang=fr' 
+PASS <area>: Setting <https://example.net#nav>.search = 'lang=fr' 
+PASS URL: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr' 
+PASS URL: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr' 
+PASS URL: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr' 
+FAIL URL: Setting <https://example.net?lang=en-US#nav>.search = '?' assert_equals: expected "https://example.net/?#nav" but got "https://example.net/#nav"
+FAIL <a>: Setting <https://example.net?lang=en-US#nav>.search = '?' assert_equals: expected "https://example.net/?#nav" but got "https://example.net/#nav"
+FAIL <area>: Setting <https://example.net?lang=en-US#nav>.search = '?' assert_equals: expected "https://example.net/?#nav" but got "https://example.net/#nav"
+PASS URL: Setting <https://example.net?lang=en-US#nav>.search = '' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.search = '' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.search = '' 
+PASS URL: Setting <https://example.net?lang=en-US>.search = '' 
+PASS <a>: Setting <https://example.net?lang=en-US>.search = '' 
+PASS <area>: Setting <https://example.net?lang=en-US>.search = '' 
+PASS URL: Setting <https://example.net>.search = '' 
+PASS <a>: Setting <https://example.net>.search = '' 
+PASS <area>: Setting <https://example.net>.search = '' 
+FAIL URL: Setting <a:/>.search = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed. assert_equals: expected "a:/?%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/?%00%01%09%0A%0D%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%C2%80%C2%81%C3%89%C3%A9"
+FAIL <a>: Setting <a:/>.search = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed. assert_equals: expected "a:/?%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/?%00%01%09%0A%0D%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%C2%80%C2%81%C3%89%C3%A9"
+FAIL <area>: Setting <a:/>.search = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed. assert_equals: expected "a:/?%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/?%00%01%09%0A%0D%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%C2%80%C2%81%C3%89%C3%A9"
+PASS URL: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-is 
+PASS <a>: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-is 
+PASS <area>: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-is 
+PASS URL: Setting <https://example.net>.hash = 'main' 
+PASS <a>: Setting <https://example.net>.hash = 'main' 
+PASS <area>: Setting <https://example.net>.hash = 'main' 
+PASS URL: Setting <https://example.net#nav>.hash = 'main' 
+PASS <a>: Setting <https://example.net#nav>.hash = 'main' 
+PASS <area>: Setting <https://example.net#nav>.hash = 'main' 
+PASS URL: Setting <https://example.net?lang=en-US>.hash = '##nav' 
+PASS <a>: Setting <https://example.net?lang=en-US>.hash = '##nav' 
+PASS <area>: Setting <https://example.net?lang=en-US>.hash = '##nav' 
+PASS URL: Setting <https://example.net?lang=en-US#nav>.hash = '#main' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.hash = '#main' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.hash = '#main' 
+FAIL URL: Setting <https://example.net?lang=en-US#nav>.hash = '#' assert_equals: expected "https://example.net/?lang=en-US#" but got "https://example.net/?lang=en-US"
+FAIL <a>: Setting <https://example.net?lang=en-US#nav>.hash = '#' assert_equals: expected "https://example.net/?lang=en-US#" but got "https://example.net/?lang=en-US"
+FAIL <area>: Setting <https://example.net?lang=en-US#nav>.hash = '#' assert_equals: expected "https://example.net/?lang=en-US#" but got "https://example.net/?lang=en-US"
+PASS URL: Setting <https://example.net?lang=en-US#nav>.hash = '' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.hash = '' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.hash = '' 
+FAIL URL: Setting <a:/>.hash = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Simple percent-encoding; nuls, tabs, and newlines are removed assert_equals: expected "a:/#%01%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/#%00%01%09%0A%0D%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%C2%80%C2%81%C3%89%C3%A9"
+FAIL <a>: Setting <a:/>.hash = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Simple percent-encoding; nuls, tabs, and newlines are removed assert_equals: expected "a:/#%01%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/#%00%01%09%0A%0D%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%C2%80%C2%81%C3%89%C3%A9"
+FAIL <area>: Setting <a:/>.hash = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Simple percent-encoding; nuls, tabs, and newlines are removed assert_equals: expected "a:/#%01%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/#%00%01%09%0A%0D%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%C2%80%C2%81%C3%89%C3%A9"
+FAIL URL: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is assert_equals: expected "http://example.net/#%c3%89t%C3%A9" but got "http://example.net/#%c3%89té"
+FAIL <a>: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is assert_equals: expected "http://example.net/#%c3%89t%C3%A9" but got "http://example.net/#%c3%89té"
+FAIL <area>: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is assert_equals: expected "http://example.net/#%c3%89t%C3%A9" but got "http://example.net/#%c3%89té"
+PASS URL: Setting <javascript:alert(1)>.hash = 'castle' 
+PASS <a>: Setting <javascript:alert(1)>.hash = 'castle' 
+PASS <area>: Setting <javascript:alert(1)>.hash = 'castle' 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/gradients/crash-on-zero-radius-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/gradients/crash-on-zero-radius-expected.txt
index 8a684bd..d93a9959d 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/gradients/crash-on-zero-radius-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/gradients/crash-on-zero-radius-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
 layer at (0,0) size 800x600
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/gradients/generated-gradients-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/gradients/generated-gradients-expected.txt
index f3ab872..6538ad4 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/gradients/generated-gradients-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/gradients/generated-gradients-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
 layer at (0,0) size 800x600
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/gradients/radial-centered-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/gradients/radial-centered-expected.txt
index 59f77c49..ef580bb9 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/gradients/radial-centered-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/gradients/radial-centered-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
 layer at (0,0) size 800x600
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/gradients/simple-gradients-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/gradients/simple-gradients-expected.txt
index 2bc8202a..09dec51 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/gradients/simple-gradients-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/gradients/simple-gradients-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
 layer at (0,0) size 800x600
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt
new file mode 100644
index 0000000..97296481
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt
@@ -0,0 +1 @@
+This test passes if it does not CRASH.
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt
@@ -0,0 +1 @@
+
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt
new file mode 100644
index 0000000..75cf4f3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt
@@ -0,0 +1 @@
+This should not crash.  
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt
new file mode 100644
index 0000000..97296481
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt
@@ -0,0 +1 @@
+This test passes if it does not CRASH.
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt
@@ -0,0 +1 @@
+
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt
new file mode 100644
index 0000000..75cf4f3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt
@@ -0,0 +1 @@
+This should not crash.  
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt
new file mode 100644
index 0000000..97296481
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt
@@ -0,0 +1 @@
+This test passes if it does not CRASH.
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt
@@ -0,0 +1 @@
+
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt
new file mode 100644
index 0000000..75cf4f3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt
@@ -0,0 +1 @@
+This should not crash.  
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt
new file mode 100644
index 0000000..97296481
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt
@@ -0,0 +1 @@
+This test passes if it does not CRASH.
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt
@@ -0,0 +1 @@
+
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt
new file mode 100644
index 0000000..75cf4f3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt
@@ -0,0 +1 @@
+This should not crash.  
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt
new file mode 100644
index 0000000..97296481
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt
@@ -0,0 +1 @@
+This test passes if it does not CRASH.
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt
@@ -0,0 +1 @@
+
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt
new file mode 100644
index 0000000..75cf4f3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt
@@ -0,0 +1 @@
+This should not crash.  
diff --git a/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/a-element-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/a-element-expected.txt
new file mode 100644
index 0000000..26dcb10c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/a-element-expected.txt
@@ -0,0 +1,486 @@
+This is a testharness.js-based test.
+Found 473 tests; 303 PASS, 170 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS Parsing: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Parsing: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Parsing: <https://test:@test> against <about:blank> 
+PASS Parsing: <https://:@test> against <about:blank> 
+FAIL Parsing: <non-special://test:@test/x> against <about:blank> assert_equals: href expected "non-special://test@test/x" but got "non-special://test:@test/x"
+FAIL Parsing: <non-special://:@test/x> against <about:blank> assert_equals: href expected "non-special://test/x" but got "non-special://:@test/x"
+PASS Parsing: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Parsing: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Parsing: < foo.com  > against <http://example.org/foo/bar> 
+PASS Parsing: <a:	 foo.com> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing: <lolscheme:x x#x x> against <about:blank> 
+PASS Parsing: <http://f:/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:0/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:b/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <http://f: /c> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://f: /c" but got "http://f:%20/c"
+PASS Parsing: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:fifty-two/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:999999/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <non-special://f:999999/c> against <http://example.org/foo/bar> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://f: 21 / b ? d # e > against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://f: 21 / b ? d # e " but got "http://f:%2021%20/%20b%20?%20d%20# e"
+PASS Parsing: <> against <http://example.org/foo/bar> 
+PASS Parsing: <  	> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <:> against <http://example.org/foo/bar> 
+PASS Parsing: <:a> against <http://example.org/foo/bar> 
+PASS Parsing: <:/> against <http://example.org/foo/bar> 
+PASS Parsing: <:\> against <http://example.org/foo/bar> 
+PASS Parsing: <:#> against <http://example.org/foo/bar> 
+PASS Parsing: <#> against <http://example.org/foo/bar> 
+PASS Parsing: <#/> against <http://example.org/foo/bar> 
+PASS Parsing: <#\> against <http://example.org/foo/bar> 
+PASS Parsing: <#;?> against <http://example.org/foo/bar> 
+PASS Parsing: <?> against <http://example.org/foo/bar> 
+PASS Parsing: </> against <http://example.org/foo/bar> 
+PASS Parsing: <:23> against <http://example.org/foo/bar> 
+PASS Parsing: </:23> against <http://example.org/foo/bar> 
+PASS Parsing: <::> against <http://example.org/foo/bar> 
+PASS Parsing: <::23> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://> against <http://example.org/foo/bar> assert_equals: pathname expected "" but got "//"
+PASS Parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Parsing: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/bar.com/> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: pathname expected "///////" but got "/////////"
+FAIL Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: pathname expected "///////bar.com/" but got "/////////bar.com/"
+FAIL Parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: pathname expected "//://///" but got "////://///"
+PASS Parsing: <c:/foo> against <http://example.org/foo/bar> 
+PASS Parsing: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Parsing: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Parsing: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+FAIL Parsing: <http://[1::2]:3:4> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://[1::2]:3:4" but got "http://[1::2]:3:4/"
+FAIL Parsing: <http://2001::1> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1" but got "http://2001::1/"
+FAIL Parsing: <http://2001::1]> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1]" but got "http://2001::1]/"
+FAIL Parsing: <http://2001::1]:80> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1]:80" but got "http://2001::1]/"
+PASS Parsing: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <file:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <file://example:1/> against <about:blank> 
+PASS Parsing: <file://example:test/> against <about:blank> 
+FAIL Parsing: <file://example%/> against <about:blank> assert_equals: failure should set href to input expected "file://example%/" but got "file://example%25/"
+PASS Parsing: <file://[example]/> against <about:blank> 
+PASS Parsing: <ftps:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftps:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: </a/b/c> against <http://example.org/foo/bar> 
+PASS Parsing: </a/ /c> against <http://example.org/foo/bar> 
+PASS Parsing: </a%2fc> against <http://example.org/foo/bar> 
+PASS Parsing: </a/%2f/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <#β> against <http://example.org/foo/bar> assert_equals: href expected "http://example.org/foo/bar#%CE%B2" but got "http://example.org/foo/bar#β"
+PASS Parsing: <data:text/html,test#test> against <http://example.org/foo/bar> 
+PASS Parsing: <tel:1234567890> against <http://example.org/foo/bar> 
+FAIL Parsing: <file:c:\foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:/foo/bar.html" but got "file:///tmp/mock/c:/foo/bar.html"
+FAIL Parsing: <  File:c|////foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:////foo/bar.html" but got "file:///tmp/mock/c%7C////foo/bar.html"
+FAIL Parsing: <C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///tmp/mock/C%7C/foo/bar"
+FAIL Parsing: </C|\foo\bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///C%7C/foo/bar"
+FAIL Parsing: <//C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file://c%7C/foo/bar"
+PASS Parsing: <//server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <\\server\file> against <file:///tmp/mock/path> 
+PASS Parsing: </\server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///foo/bar.txt> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///home/me> against <file:///tmp/mock/path> 
+PASS Parsing: <//> against <file:///tmp/mock/path> 
+PASS Parsing: <///> against <file:///tmp/mock/path> 
+PASS Parsing: <///test> against <file:///tmp/mock/path> 
+PASS Parsing: <file://test> against <file:///tmp/mock/path> 
+FAIL Parsing: <file://localhost> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/test> against <file:///tmp/mock/path> assert_equals: href expected "file:///test" but got "file://localhost/test"
+PASS Parsing: <test> against <file:///tmp/mock/path> 
+PASS Parsing: <file:test> against <file:///tmp/mock/path> 
+PASS Parsing: <http://example.com/././foo> against <about:blank> 
+PASS Parsing: <http://example.com/./.foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo/.> against <about:blank> 
+PASS Parsing: <http://example.com/foo/./> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Parsing: <http://example.com/foo/..bar> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 
+FAIL Parsing: <http://example.com/foo/%2e%2> against <about:blank> assert_equals: href expected "http://example.com/foo/%2e%2" but got "http://example.com/foo/.%2"
+FAIL Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> assert_equals: href expected "http://example.com/%2e.bar" but got "http://example.com/..bar"
+PASS Parsing: <http://example.com////../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Parsing: <http://example.com/foo> against <about:blank> 
+PASS Parsing: <http://example.com/%20foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo%> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2©zbar> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%41%7a> against <about:blank> assert_equals: href expected "http://example.com/foo%41%7a" but got "http://example.com/fooAz"
+PASS Parsing: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%00%51> against <about:blank> assert_equals: href expected "http://example.com/foo%00%51" but got "http://example.com/foo%00Q"
+PASS Parsing: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Parsing: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Parsing: <http://example.com/foo	bar> against <about:blank> 
+PASS Parsing: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Parsing: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Parsing: <http://example.com/@asdf%40> against <about:blank> 
+PASS Parsing: <http://example.com/你好你好> against <about:blank> 
+PASS Parsing: <http://example.com/‥/foo> against <about:blank> 
+PASS Parsing: <http://example.com//foo> against <about:blank> 
+PASS Parsing: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Parsing: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+FAIL Parsing: <http://www.google.com/foo?bar=baz# »> against <about:blank> assert_equals: href expected "http://www.google.com/foo?bar=baz# %C2%BB" but got "http://www.google.com/foo?bar=baz# »"
+PASS Parsing: <data:test# »> against <about:blank> 
+PASS Parsing: <http://www.google.com> against <about:blank> 
+PASS Parsing: <http://192.0x00A80001> against <about:blank> 
+FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo%2Ehtml" but got "http://www/foo.html"
+PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 
+PASS Parsing: <http://user:pass@/> against <about:blank> 
+PASS Parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 
+PASS Parsing: <http://foo:80/> against <about:blank> 
+PASS Parsing: <http://foo:81/> against <about:blank> 
+FAIL Parsing: <httpa://foo:80/> against <about:blank> assert_equals: host expected "foo:80" but got ""
+PASS Parsing: <http://foo:-80/> against <about:blank> 
+PASS Parsing: <https://foo:443/> against <about:blank> 
+PASS Parsing: <https://foo:80/> against <about:blank> 
+PASS Parsing: <ftp://foo:21/> against <about:blank> 
+PASS Parsing: <ftp://foo:80/> against <about:blank> 
+PASS Parsing: <gopher://foo:70/> against <about:blank> 
+PASS Parsing: <gopher://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:80/> against <about:blank> 
+PASS Parsing: <ws://foo:81/> against <about:blank> 
+PASS Parsing: <ws://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:815/> against <about:blank> 
+PASS Parsing: <wss://foo:80/> against <about:blank> 
+PASS Parsing: <wss://foo:81/> against <about:blank> 
+PASS Parsing: <wss://foo:443/> against <about:blank> 
+PASS Parsing: <wss://foo:815/> against <about:blank> 
+PASS Parsing: <http:/example.com/> against <about:blank> 
+PASS Parsing: <ftp:/example.com/> against <about:blank> 
+PASS Parsing: <https:/example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:/example.com/> against <about:blank> 
+PASS Parsing: <file:/example.com/> against <about:blank> 
+PASS Parsing: <ftps:/example.com/> against <about:blank> 
+PASS Parsing: <gopher:/example.com/> against <about:blank> 
+PASS Parsing: <ws:/example.com/> against <about:blank> 
+PASS Parsing: <wss:/example.com/> against <about:blank> 
+PASS Parsing: <data:/example.com/> against <about:blank> 
+PASS Parsing: <javascript:/example.com/> against <about:blank> 
+PASS Parsing: <mailto:/example.com/> against <about:blank> 
+PASS Parsing: <http:example.com/> against <about:blank> 
+PASS Parsing: <ftp:example.com/> against <about:blank> 
+PASS Parsing: <https:example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:example.com/> against <about:blank> 
+PASS Parsing: <ftps:example.com/> against <about:blank> 
+PASS Parsing: <gopher:example.com/> against <about:blank> 
+PASS Parsing: <ws:example.com/> against <about:blank> 
+PASS Parsing: <wss:example.com/> against <about:blank> 
+PASS Parsing: <data:example.com/> against <about:blank> 
+PASS Parsing: <javascript:example.com/> against <about:blank> 
+PASS Parsing: <mailto:example.com/> against <about:blank> 
+PASS Parsing: <http:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/@www.example.com> against <about:blank> 
+PASS Parsing: <http://@www.example.com> against <about:blank> 
+PASS Parsing: <http:a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://@pple.com> against <about:blank> 
+PASS Parsing: <http::b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://:b@www.example.com> against <about:blank> 
+FAIL Parsing: <http:/:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/:@/www.example.com" but got "http:///www.example.com"
+PASS Parsing: <http://user@/www.example.com> against <about:blank> 
+FAIL Parsing: <http:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <http:/@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <http://@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http://@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <https:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "https:@/www.example.com" but got "https:///www.example.com"
+FAIL Parsing: <http:a:b@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:a:b@/www.example.com" but got "http://a:b@/www.example.com"
+FAIL Parsing: <http:/a:b@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/a:b@/www.example.com" but got "http://a:b@/www.example.com"
+PASS Parsing: <http://a:b@/www.example.com> against <about:blank> 
+FAIL Parsing: <http::@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http::@/www.example.com" but got "http:///www.example.com"
+PASS Parsing: <http:a:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://www.@pple.com> against <about:blank> 
+FAIL Parsing: <http:@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:@:www.example.com" but got "http://:www.example.com/"
+FAIL Parsing: <http:/@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/@:www.example.com" but got "http://:www.example.com/"
+FAIL Parsing: <http://@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http://@:www.example.com" but got "http://:www.example.com/"
+PASS Parsing: <http://:@www.example.com> against <about:blank> 
+PASS Parsing: </> against <http://www.example.com/test> 
+PASS Parsing: </test.txt> against <http://www.example.com/test> 
+PASS Parsing: <.> against <http://www.example.com/test> 
+PASS Parsing: <..> against <http://www.example.com/test> 
+PASS Parsing: <test.txt> against <http://www.example.com/test> 
+PASS Parsing: <./test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <中/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Parsing: <//www.example2.com> against <http://www.example.com/test> 
+PASS Parsing: <file:...> against <http://www.example.com/test> 
+PASS Parsing: <file:..> against <http://www.example.com/test> 
+PASS Parsing: <file:a> against <http://www.example.com/test> 
+PASS Parsing: <http://ExAmPlE.CoM> against <http://other.com/> 
+FAIL Parsing: <http://example example.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://Goo%20 goo%7C|.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[]" but got "http://[]/"
+FAIL Parsing: <http://[:]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[:]" but got "http://[:]/"
+FAIL Parsing: <http://GOO  goo.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Parsing: <http://www.foo。bar.com> against <http://other.com/> 
+FAIL Parsing: <http://﷐zyx.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://﷐zyx.com" but got "http://%EF%BF%BDzyx.com/"
+FAIL Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%ef%b7%90zyx.com" but got "http://%EF%BF%BDzyx.com/"
+FAIL Parsing: <https://�> against <about:blank> assert_equals: failure should set href to input expected "https://\ufffd" but got "https://%EF%BF%BD/"
+FAIL Parsing: <https://%EF%BF%BD> against <about:blank> assert_equals: failure should set href to input expected "https://%EF%BF%BD" but got "https://%EF%BF%BD/"
+FAIL Parsing: <https://x/�?�#�> against <about:blank> assert_equals: href expected "https://x/%EF%BF%BD?%EF%BF%BD#%EF%BF%BD" but got "https://x/%EF%BF%BD?%EF%BF%BD#\ufffd"
+PASS Parsing: <http://Go.com> against <http://other.com/> 
+FAIL Parsing: <http://%41.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://%00.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%00.com" but got "http://%00.com/"
+FAIL Parsing: <http://%ef%bc%85%ef%bc%90%ef%bc%90.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%ef%bc%85%ef%bc%90%ef%bc%90.com" but got "http://%00.com/"
+PASS Parsing: <http://你好你好> against <http://other.com/> 
+FAIL Parsing: <https://faß.ExAmPlE/> against <about:blank> assert_equals: href expected "https://xn--fa-hia.example/" but got "https://fass.example/"
+FAIL Parsing: <sc://faß.ExAmPlE/> against <about:blank> assert_equals: host expected "fa%C3%9F.ExAmPlE" but got ""
+FAIL Parsing: <http://%zz%66%a.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%zz%66%a.com" but got "http://%25zzf%25a.com/"
+FAIL Parsing: <http://%25> against <http://other.com/> assert_equals: failure should set href to input expected "http://%25" but got "http://%25/"
+FAIL Parsing: <http://hello%00> against <http://other.com/> assert_equals: failure should set href to input expected "http://hello%00" but got "http://hello%00/"
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+FAIL Parsing: <http://192.168.0.257> against <http://other.com/> assert_equals: failure should set href to input expected "http://192.168.0.257" but got "http://192.168.0.257/"
+FAIL Parsing: <http://%3g%78%63%30%2e%30%32%35%30%2E.01> against <http://other.com/> assert_equals: failure should set href to input expected "http://%3g%78%63%30%2e%30%32%35%30%2E.01" but got "http://%253gxc0.0250..01/"
+FAIL Parsing: <http://192.168.0.1 hello> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <https://x x:12> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Parsing: <http://./> against <about:blank> 
+PASS Parsing: <http://../> against <about:blank> 
+PASS Parsing: <http://0..0x300/> against <about:blank> 
+PASS Parsing: <http://[www.google.com]/> against <about:blank> 
+FAIL Parsing: <http://[google.com]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[google.com]" but got "http://[google.com]/"
+FAIL Parsing: <http://[::1.2.3.4x]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[::1.2.3.4x]" but got "http://[::1.2.3.4x]/"
+FAIL Parsing: <http://[::1.2.3.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[::1.2.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[::1.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://foo:💩@example.com/bar> against <http://other.com/> 
+PASS Parsing: <#> against <test:test> 
+PASS Parsing: <#x> against <mailto:x@x.com> 
+FAIL Parsing: <#x> against <data:,> assert_equals: href expected "data:,#x" but got "mailto:x@x.com#x"
+PASS Parsing: <#x> against <about:blank> 
+PASS Parsing: <#> against <test:test?test> 
+PASS Parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Parsing: </some/path> against <http://user@example.org/smth> 
+PASS Parsing: <> against <http://user:pass@example.org:21/smth> 
+PASS Parsing: </some/path> against <http://user:pass@example.org:21/smth> 
+FAIL Parsing: <i> against <sc:sd> assert_equals: failure should set href to input expected "i" but got ""
+FAIL Parsing: <i> against <sc:sd/sd> assert_equals: failure should set href to input expected "i" but got ""
+PASS Parsing: <i> against <sc:/pa/pa> 
+FAIL Parsing: <i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/i" but got "///pa/i"
+FAIL Parsing: <../i> against <sc:sd> assert_equals: failure should set href to input expected "../i" but got ""
+FAIL Parsing: <../i> against <sc:sd/sd> assert_equals: failure should set href to input expected "../i" but got ""
+PASS Parsing: <../i> against <sc:/pa/pa> 
+FAIL Parsing: <../i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <../i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+FAIL Parsing: </i> against <sc:sd> assert_equals: failure should set href to input expected "/i" but got ""
+FAIL Parsing: </i> against <sc:sd/sd> assert_equals: failure should set href to input expected "/i" but got ""
+PASS Parsing: </i> against <sc:/pa/pa> 
+FAIL Parsing: </i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: </i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+FAIL Parsing: <?i> against <sc:sd> assert_equals: failure should set href to input expected "?i" but got ""
+FAIL Parsing: <?i> against <sc:sd/sd> assert_equals: failure should set href to input expected "?i" but got ""
+PASS Parsing: <?i> against <sc:/pa/pa> 
+FAIL Parsing: <?i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <?i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+PASS Parsing: <#i> against <sc:sd> 
+PASS Parsing: <#i> against <sc:sd/sd> 
+PASS Parsing: <#i> against <sc:/pa/pa> 
+FAIL Parsing: <#i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <#i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+FAIL Parsing: <about:/../> against <about:blank> assert_equals: href expected "about:/" but got "about:/../"
+FAIL Parsing: <data:/../> against <about:blank> assert_equals: href expected "data:/" but got "data:/../"
+FAIL Parsing: <javascript:/../> against <about:blank> assert_equals: href expected "javascript:/" but got "javascript:/../"
+FAIL Parsing: <mailto:/../> against <about:blank> assert_equals: href expected "mailto:/" but got "mailto:/../"
+FAIL Parsing: <sc://ñ.test/> against <about:blank> assert_equals: host expected "%C3%B1.test" but got ""
+FAIL Parsing: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: host expected "%1F!\"$&'()*+,-.;<=>^_`{|}~" but got ""
+FAIL Parsing: <sc://\0/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc:// /> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://%/> against <about:blank> assert_equals: host expected "%" but got ""
+FAIL Parsing: <sc://@/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://te@s:t@/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://:/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://:12/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://[/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://\/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://]/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1/x" but got "sc://%C3%B1"
+PASS Parsing: <sc:\../> against <about:blank> 
+PASS Parsing: <sc::a@example.net> against <about:blank> 
+PASS Parsing: <wow:%NBD> against <about:blank> 
+PASS Parsing: <wow:%1G> against <about:blank> 
+FAIL Parsing: <ftp://example.com%80/> against <about:blank> assert_equals: failure should set href to input expected "ftp://example.com%80/" but got "ftp://example.com%EF%BF%BD/"
+FAIL Parsing: <ftp://example.com%A0/> against <about:blank> assert_equals: failure should set href to input expected "ftp://example.com%A0/" but got "ftp://example.com%EF%BF%BD/"
+FAIL Parsing: <https://example.com%80/> against <about:blank> assert_equals: failure should set href to input expected "https://example.com%80/" but got "https://example.com%EF%BF%BD/"
+FAIL Parsing: <https://example.com%A0/> against <about:blank> assert_equals: failure should set href to input expected "https://example.com%A0/" but got "https://example.com%EF%BF%BD/"
+PASS Parsing: <ftp://%e2%98%83> against <about:blank> 
+PASS Parsing: <https://%e2%98%83> against <about:blank> 
+PASS Parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Parsing: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Parsing: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <https://example.org/foo/bar> 
+PASS Parsing: <sc:> against <https://example.org/foo/bar> 
+PASS Parsing: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Parsing: <http://192.168.257> against <http://other.com/> 
+PASS Parsing: <http://192.168.257.com> against <http://other.com/> 
+PASS Parsing: <http://256> against <http://other.com/> 
+PASS Parsing: <http://256.com> against <http://other.com/> 
+PASS Parsing: <http://999999999> against <http://other.com/> 
+PASS Parsing: <http://999999999.com> against <http://other.com/> 
+FAIL Parsing: <http://10000000000> against <http://other.com/> assert_equals: failure should set href to input expected "http://10000000000" but got "http://10000000000/"
+PASS Parsing: <http://10000000000.com> against <http://other.com/> 
+PASS Parsing: <http://4294967295> against <http://other.com/> 
+FAIL Parsing: <http://4294967296> against <http://other.com/> assert_equals: failure should set href to input expected "http://4294967296" but got "http://4294967296/"
+PASS Parsing: <http://0xffffffff> against <http://other.com/> 
+FAIL Parsing: <http://0xffffffff1> against <http://other.com/> assert_equals: failure should set href to input expected "http://0xffffffff1" but got "http://0xffffffff1/"
+FAIL Parsing: <http://256.256.256.256> against <http://other.com/> assert_equals: failure should set href to input expected "http://256.256.256.256" but got "http://256.256.256.256/"
+PASS Parsing: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Parsing: <https://0x.0x.0> against <about:blank> 
+PASS Parsing: <file:///C%3A/> against <about:blank> 
+PASS Parsing: <file:///C%7C/> against <about:blank> 
+PASS Parsing: <pix/submit.gif> against <file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html> 
+FAIL Parsing: <..> against <file:///C:/> assert_equals: href expected "file:///C:/" but got "file:///"
+PASS Parsing: <..> against <file:///> 
+FAIL Parsing: </> against <file:///C:/a/b> assert_equals: href expected "file:///C:/" but got "file:///"
+FAIL Parsing: <//d:> against <file:///C:/a/b> assert_equals: href expected "file:///d:" but got "file://d:/"
+FAIL Parsing: <//d:/..> against <file:///C:/a/b> assert_equals: href expected "file:///d:/" but got "file://d:/"
+PASS Parsing: <..> against <file:///ab:/> 
+PASS Parsing: <..> against <file:///1:/> 
+PASS Parsing: <> against <file:///test?test#test> 
+PASS Parsing: <file:> against <file:///test?test#test> 
+PASS Parsing: <?x> against <file:///test?test#test> 
+PASS Parsing: <file:?x> against <file:///test?test#test> 
+PASS Parsing: <#x> against <file:///test?test#test> 
+PASS Parsing: <file:#x> against <file:///test?test#test> 
+PASS Parsing: <file:\\//> against <about:blank> 
+PASS Parsing: <file:\\\\> against <about:blank> 
+PASS Parsing: <file:\\\\?fox> against <about:blank> 
+PASS Parsing: <file:\\\\#guppy> against <about:blank> 
+FAIL Parsing: <file://spider///> against <about:blank> assert_equals: href expected "file://spider/" but got "file://spider///"
+FAIL Parsing: <file:\\localhost//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost//"
+PASS Parsing: <file:///localhost//cat> against <about:blank> 
+PASS Parsing: <file://\/localhost//cat> against <about:blank> 
+FAIL Parsing: <file://localhost//a//../..//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost///"
+PASS Parsing: </////mouse> against <file:///elephant> 
+PASS Parsing: <\//pig> against <file://lion/> 
+FAIL Parsing: <\/localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: <//localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: </..//localhost//pig> against <file://lion/> assert_equals: href expected "file://lion/localhost//pig" but got "file://lion//localhost//pig"
+PASS Parsing: <file://> against <file://ape/> 
+PASS Parsing: </rooibos> against <file://tea/> 
+PASS Parsing: </?chai> against <file://tea/> 
+FAIL Parsing: <C|> against <file://host/dir/file> assert_equals: href expected "file:///C:" but got "file://host/dir/C%7C"
+FAIL Parsing: <C|#> against <file://host/dir/file> assert_equals: href expected "file:///C:#" but got "file://host/dir/C%7C#"
+FAIL Parsing: <C|?> against <file://host/dir/file> assert_equals: href expected "file:///C:?" but got "file://host/dir/C%7C?"
+FAIL Parsing: <C|/> against <file://host/dir/file> assert_equals: href expected "file:///C:/" but got "file://host/dir/C%7C/"
+FAIL Parsing: <C|\> against <file://host/dir/file> assert_equals: href expected "file:///C:/" but got "file://host/dir/C%7C/"
+PASS Parsing: <C> against <file://host/dir/file> 
+FAIL Parsing: <C|a> against <file://host/dir/file> assert_equals: href expected "file://host/dir/C|a" but got "file://host/dir/C%7Ca"
+FAIL Parsing: <file://example.net/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://example.net/C:/"
+FAIL Parsing: <file://1.2.3.4/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://1.2.3.4/C:/"
+FAIL Parsing: <file://[1::8]/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://[1::8]/C:/"
+FAIL Parsing: <file:/C|/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file:///C%7C/"
+FAIL Parsing: <file://C|/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://c%7C/"
+PASS Parsing: <file:> against <about:blank> 
+PASS Parsing: <file:?q=v> against <about:blank> 
+PASS Parsing: <file:#frag> against <about:blank> 
+PASS Parsing: <http://[1:0::]> against <http://example.net/> 
+FAIL Parsing: <http://[0:1:2:3:4:5:6:7:8]> against <http://example.net/> assert_equals: failure should set href to input expected "http://[0:1:2:3:4:5:6:7:8]" but got "http://[0:1:2:3:4:5:6:7:8]/"
+FAIL Parsing: <https://[0::0::0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0::0::0]" but got "https://[0::0::0]/"
+FAIL Parsing: <https://[0:.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:.0]" but got "https://[0:.0]/"
+FAIL Parsing: <https://[0:0:]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:0:]" but got "https://[0:0:]/"
+FAIL Parsing: <https://[0:1:2:3:4:5:6:7.0.0.0.1]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1:2:3:4:5:6:7.0.0.0.1]" but got "https://[0:1:2:3:4:5:6:7.0.0.0.1]/"
+FAIL Parsing: <https://[0:1.00.0.0.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.00.0.0.0]" but got "https://[0:1.00.0.0.0]/"
+FAIL Parsing: <https://[0:1.290.0.0.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.290.0.0.0]" but got "https://[0:1.290.0.0.0]/"
+FAIL Parsing: <https://[0:1.23.23]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.23.23]" but got "https://[0:1.23.23]/"
+FAIL Parsing: <http://?> against <about:blank> assert_equals: failure should set href to input expected "http://?" but got "http:/?"
+FAIL Parsing: <http://#> against <about:blank> assert_equals: failure should set href to input expected "http://#" but got "http:/#"
+FAIL Parsing: <sc://ñ> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ?x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ#x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <#x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1#x" but got "sc://%C3%B1"
+FAIL Parsing: <?x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1?x" but got "sc://%C3%B1"
+FAIL Parsing: <sc://?> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <sc://#> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <///> against <sc://x/> assert_equals: href expected "sc:///" but got "sc:"
+FAIL Parsing: <////> against <sc://x/> assert_equals: href expected "sc:////" but got "sc:"
+FAIL Parsing: <////x/> against <sc://x/> assert_equals: href expected "sc:////x/" but got "sc://x/"
+FAIL Parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: host expected "foobar.com" but got ""
+FAIL Parsing: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: username expected "user" but got ""
+FAIL Parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: host expected "10.10.10.10:7777" but got ""
+FAIL Parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <rsync://foo@host:911/sup> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <git://github.com/foo/bar.git> against <about:blank> assert_equals: host expected "github.com" but got ""
+FAIL Parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: host expected "myserver.com:6999" but got ""
+FAIL Parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: host expected "fw.example.org:9999" but got ""
+FAIL Parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: host expected "localhost:389" but got ""
+FAIL Parsing: <git+https://github.com/foo/bar> against <about:blank> assert_equals: host expected "github.com" but got ""
+PASS Parsing: <urn:ietf:rfc:2648> against <about:blank> 
+PASS Parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank> 
+FAIL Parsing: <non-special://%E2%80%A0/> against <about:blank> assert_equals: host expected "%E2%80%A0" but got ""
+FAIL Parsing: <non-special://H%4fSt/path> against <about:blank> assert_equals: host expected "H%4fSt" but got ""
+FAIL Parsing: <non-special://[1:2:0:0:5:0:0:0]/> against <about:blank> assert_equals: href expected "non-special://[1:2:0:0:5::]/" but got "non-special://[1:2:0:0:5:0:0:0]/"
+FAIL Parsing: <non-special://[1:2:0:0:0:0:0:3]/> against <about:blank> assert_equals: href expected "non-special://[1:2::3]/" but got "non-special://[1:2:0:0:0:0:0:3]/"
+FAIL Parsing: <non-special://[1:2::3]:80/> against <about:blank> assert_equals: host expected "[1:2::3]:80" but got ""
+FAIL Parsing: <non-special://[:80/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <blob:https://example.com:443/> against <about:blank> 
+PASS Parsing: <blob:d3958f5c-0777-0845-9dcf-2cb28783acaf> against <about:blank> 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/a-element-origin-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/a-element-origin-expected.txt
new file mode 100644
index 0000000..3502d0c8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/a-element-origin-expected.txt
@@ -0,0 +1,307 @@
+This is a testharness.js-based test.
+Found 294 tests; 219 PASS, 75 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS Parsing origin: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https://test:@test> against <about:blank> 
+PASS Parsing origin: <https://:@test> against <about:blank> 
+FAIL Parsing origin: <non-special://test:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+FAIL Parsing origin: <non-special://:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+PASS Parsing origin: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Parsing origin: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Parsing origin: < foo.com  > against <http://example.org/foo/bar> 
+FAIL Parsing origin: <a:	 foo.com> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "a://"
+PASS Parsing origin: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://f:/c> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <http://f:0/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+FAIL Parsing origin: <http://f:00000000000000/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+PASS Parsing origin: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <> against <http://example.org/foo/bar> 
+PASS Parsing origin: <  	> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:a> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:#> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#;?> against <http://example.org/foo/bar> 
+PASS Parsing origin: <?> against <http://example.org/foo/bar> 
+PASS Parsing origin: </> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:23> against <http://example.org/foo/bar> 
+PASS Parsing origin: </:23> against <http://example.org/foo/bar> 
+PASS Parsing origin: <::> against <http://example.org/foo/bar> 
+PASS Parsing origin: <::23> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <foo://> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+PASS Parsing origin: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <foo:/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo:/bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo://///////> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo:////://///> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <c:/foo> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "c://"
+PASS Parsing origin: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Parsing origin: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https:/example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <madeupscheme:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <javascript:/example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <mailto:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https:example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <madeupscheme:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <javascript:example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <mailto:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: </a/b/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a/ /c> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a%2fc> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a/%2f/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#β> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:text/html,test#test> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <tel:1234567890> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "tel://"
+PASS Parsing origin: <http://example.com/././foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/./.foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/.> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/./> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/..bar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/../../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e%2> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 
+PASS Parsing origin: <http://example.com////../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/%20foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2©zbar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%41%7a> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Parsing origin: <http://example.com/foo%00%51> against <about:blank> assert_equals: origin expected "http://example.com" but got "null"
+PASS Parsing origin: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Parsing origin: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo	bar> against <about:blank> 
+PASS Parsing origin: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Parsing origin: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Parsing origin: <http://example.com/@asdf%40> against <about:blank> 
+PASS Parsing origin: <http://example.com/你好你好> against <about:blank> 
+PASS Parsing origin: <http://example.com/‥/foo> against <about:blank> 
+PASS Parsing origin: <http://example.com//foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Parsing origin: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+PASS Parsing origin: <http://www.google.com/foo?bar=baz# »> against <about:blank> 
+PASS Parsing origin: <data:test# »> against <about:blank> 
+PASS Parsing origin: <http://www.google.com> against <about:blank> 
+PASS Parsing origin: <http://192.0x00A80001> against <about:blank> 
+PASS Parsing origin: <http://www/foo%2Ehtml> against <about:blank> 
+PASS Parsing origin: <http://www/foo/%2E/html> against <about:blank> 
+PASS Parsing origin: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Parsing origin: <http:\\www.google.com\foo> against <about:blank> 
+PASS Parsing origin: <http://foo:80/> against <about:blank> 
+PASS Parsing origin: <http://foo:81/> against <about:blank> 
+FAIL Parsing origin: <httpa://foo:80/> against <about:blank> assert_equals: origin expected "null" but got "httpa://"
+PASS Parsing origin: <https://foo:443/> against <about:blank> 
+PASS Parsing origin: <https://foo:80/> against <about:blank> 
+PASS Parsing origin: <ftp://foo:21/> against <about:blank> 
+PASS Parsing origin: <ftp://foo:80/> against <about:blank> 
+PASS Parsing origin: <gopher://foo:70/> against <about:blank> 
+PASS Parsing origin: <gopher://foo:443/> against <about:blank> 
+PASS Parsing origin: <ws://foo:80/> against <about:blank> 
+PASS Parsing origin: <ws://foo:81/> against <about:blank> 
+PASS Parsing origin: <ws://foo:443/> against <about:blank> 
+PASS Parsing origin: <ws://foo:815/> against <about:blank> 
+PASS Parsing origin: <wss://foo:80/> against <about:blank> 
+PASS Parsing origin: <wss://foo:81/> against <about:blank> 
+PASS Parsing origin: <wss://foo:443/> against <about:blank> 
+PASS Parsing origin: <wss://foo:815/> against <about:blank> 
+PASS Parsing origin: <http:/example.com/> against <about:blank> 
+PASS Parsing origin: <ftp:/example.com/> against <about:blank> 
+PASS Parsing origin: <https:/example.com/> against <about:blank> 
+FAIL Parsing origin: <madeupscheme:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:/example.com/> against <about:blank> 
+PASS Parsing origin: <ws:/example.com/> against <about:blank> 
+PASS Parsing origin: <wss:/example.com/> against <about:blank> 
+PASS Parsing origin: <data:/example.com/> against <about:blank> 
+PASS Parsing origin: <javascript:/example.com/> against <about:blank> 
+FAIL Parsing origin: <mailto:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:example.com/> against <about:blank> 
+PASS Parsing origin: <ftp:example.com/> against <about:blank> 
+PASS Parsing origin: <https:example.com/> against <about:blank> 
+FAIL Parsing origin: <madeupscheme:example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:example.com/> against <about:blank> 
+PASS Parsing origin: <ws:example.com/> against <about:blank> 
+PASS Parsing origin: <wss:example.com/> against <about:blank> 
+PASS Parsing origin: <data:example.com/> against <about:blank> 
+PASS Parsing origin: <javascript:example.com/> against <about:blank> 
+FAIL Parsing origin: <mailto:example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://@pple.com> against <about:blank> 
+PASS Parsing origin: <http::b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://www.@pple.com> against <about:blank> 
+PASS Parsing origin: <http://:@www.example.com> against <about:blank> 
+PASS Parsing origin: </> against <http://www.example.com/test> 
+PASS Parsing origin: </test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <.> against <http://www.example.com/test> 
+PASS Parsing origin: <..> against <http://www.example.com/test> 
+PASS Parsing origin: <test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <./test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../../test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <中/test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Parsing origin: <//www.example2.com> against <http://www.example.com/test> 
+PASS Parsing origin: <http://ExAmPlE.CoM> against <http://other.com/> 
+PASS Parsing origin: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Parsing origin: <http://www.foo。bar.com> against <http://other.com/> 
+PASS Parsing origin: <https://x/�?�#�> against <about:blank> 
+PASS Parsing origin: <http://Go.com> against <http://other.com/> 
+FAIL Parsing origin: <http://你好你好> against <http://other.com/> assert_equals: origin expected "http://你好你好" but got "http://xn--6qqa088eba"
+FAIL Parsing origin: <https://faß.ExAmPlE/> against <about:blank> assert_equals: origin expected "https://faß.example" but got "https://fass.example"
+PASS Parsing origin: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing origin: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+PASS Parsing origin: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Parsing origin: <http://./> against <about:blank> 
+PASS Parsing origin: <http://../> against <about:blank> 
+PASS Parsing origin: <http://0..0x300/> against <about:blank> 
+PASS Parsing origin: <http://foo:💩@example.com/bar> against <http://other.com/> 
+FAIL Parsing origin: <#> against <test:test> assert_equals: origin expected "null" but got "test://"
+FAIL Parsing origin: <#x> against <mailto:x@x.com> assert_equals: origin expected "null" but got "mailto://"
+FAIL Parsing origin: <#x> against <data:,> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <#x> against <about:blank> 
+FAIL Parsing origin: <#> against <test:test?test> assert_equals: origin expected "null" but got "test://"
+PASS Parsing origin: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing origin: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing origin: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Parsing origin: </some/path> against <http://user@example.org/smth> 
+PASS Parsing origin: <> against <http://user:pass@example.org:21/smth> 
+PASS Parsing origin: </some/path> against <http://user:pass@example.org:21/smth> 
+FAIL Parsing origin: <i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:sd/sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <about:/../> against <about:blank> 
+PASS Parsing origin: <data:/../> against <about:blank> 
+PASS Parsing origin: <javascript:/../> against <about:blank> 
+FAIL Parsing origin: <mailto:/../> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+FAIL Parsing origin: <sc://ñ.test/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <x> against <sc://ñ> 
+FAIL Parsing origin: <sc:\../> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc::a@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <wow:%NBD> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Parsing origin: <wow:%1G> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Parsing origin: <ftp://%e2%98%83> against <about:blank> assert_equals: origin expected "ftp://☃" but got "ftp://xn--n3h"
+FAIL Parsing origin: <https://%e2%98%83> against <about:blank> assert_equals: origin expected "https://☃" but got "https://xn--n3h"
+PASS Parsing origin: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Parsing origin: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Parsing origin: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Parsing origin: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Parsing origin: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <sc:> against <https://example.org/foo/bar> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Parsing origin: <http://192.168.257> against <http://other.com/> 
+PASS Parsing origin: <http://192.168.257.com> against <http://other.com/> 
+PASS Parsing origin: <http://256> against <http://other.com/> 
+PASS Parsing origin: <http://256.com> against <http://other.com/> 
+PASS Parsing origin: <http://999999999> against <http://other.com/> 
+PASS Parsing origin: <http://999999999.com> against <http://other.com/> 
+PASS Parsing origin: <http://10000000000.com> against <http://other.com/> 
+PASS Parsing origin: <http://4294967295> against <http://other.com/> 
+PASS Parsing origin: <http://0xffffffff> against <http://other.com/> 
+PASS Parsing origin: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Parsing origin: <https://0x.0x.0> against <about:blank> 
+PASS Parsing origin: <http://[1:0::]> against <http://example.net/> 
+FAIL Parsing origin: <sc://ñ> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://ñ?x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://ñ#x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <#x> against <sc://ñ> 
+PASS Parsing origin: <?x> against <sc://ñ> 
+FAIL Parsing origin: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: origin expected "null" but got "tftp://"
+FAIL Parsing origin: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: origin expected "null" but got "telnet://"
+FAIL Parsing origin: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: origin expected "null" but got "ut2004://"
+FAIL Parsing origin: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: origin expected "null" but got "redis://"
+FAIL Parsing origin: <rsync://foo@host:911/sup> against <about:blank> assert_equals: origin expected "null" but got "rsync://"
+FAIL Parsing origin: <git://github.com/foo/bar.git> against <about:blank> assert_equals: origin expected "null" but got "git://"
+FAIL Parsing origin: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: origin expected "null" but got "irc://"
+FAIL Parsing origin: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: origin expected "null" but got "dns://"
+FAIL Parsing origin: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: origin expected "null" but got "ldap://"
+FAIL Parsing origin: <git+https://github.com/foo/bar> against <about:blank> assert_equals: origin expected "null" but got "git+https://"
+FAIL Parsing origin: <urn:ietf:rfc:2648> against <about:blank> assert_equals: origin expected "null" but got "urn://"
+FAIL Parsing origin: <tag:joe@example.org,2001:foo/bar> against <about:blank> assert_equals: origin expected "null" but got "tag://"
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/a-element-origin-xhtml-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/a-element-origin-xhtml-expected.txt
new file mode 100644
index 0000000..3502d0c8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/a-element-origin-xhtml-expected.txt
@@ -0,0 +1,307 @@
+This is a testharness.js-based test.
+Found 294 tests; 219 PASS, 75 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS Parsing origin: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https://test:@test> against <about:blank> 
+PASS Parsing origin: <https://:@test> against <about:blank> 
+FAIL Parsing origin: <non-special://test:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+FAIL Parsing origin: <non-special://:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+PASS Parsing origin: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Parsing origin: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Parsing origin: < foo.com  > against <http://example.org/foo/bar> 
+FAIL Parsing origin: <a:	 foo.com> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "a://"
+PASS Parsing origin: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://f:/c> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <http://f:0/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+FAIL Parsing origin: <http://f:00000000000000/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+PASS Parsing origin: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <> against <http://example.org/foo/bar> 
+PASS Parsing origin: <  	> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:a> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:#> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#;?> against <http://example.org/foo/bar> 
+PASS Parsing origin: <?> against <http://example.org/foo/bar> 
+PASS Parsing origin: </> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:23> against <http://example.org/foo/bar> 
+PASS Parsing origin: </:23> against <http://example.org/foo/bar> 
+PASS Parsing origin: <::> against <http://example.org/foo/bar> 
+PASS Parsing origin: <::23> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <foo://> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+PASS Parsing origin: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <foo:/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo:/bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo://///////> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo:////://///> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <c:/foo> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "c://"
+PASS Parsing origin: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Parsing origin: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https:/example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <madeupscheme:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <javascript:/example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <mailto:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https:example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <madeupscheme:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <javascript:example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <mailto:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: </a/b/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a/ /c> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a%2fc> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a/%2f/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#β> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:text/html,test#test> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <tel:1234567890> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "tel://"
+PASS Parsing origin: <http://example.com/././foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/./.foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/.> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/./> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/..bar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/../../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e%2> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 
+PASS Parsing origin: <http://example.com////../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/%20foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2©zbar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%41%7a> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Parsing origin: <http://example.com/foo%00%51> against <about:blank> assert_equals: origin expected "http://example.com" but got "null"
+PASS Parsing origin: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Parsing origin: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo	bar> against <about:blank> 
+PASS Parsing origin: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Parsing origin: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Parsing origin: <http://example.com/@asdf%40> against <about:blank> 
+PASS Parsing origin: <http://example.com/你好你好> against <about:blank> 
+PASS Parsing origin: <http://example.com/‥/foo> against <about:blank> 
+PASS Parsing origin: <http://example.com//foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Parsing origin: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+PASS Parsing origin: <http://www.google.com/foo?bar=baz# »> against <about:blank> 
+PASS Parsing origin: <data:test# »> against <about:blank> 
+PASS Parsing origin: <http://www.google.com> against <about:blank> 
+PASS Parsing origin: <http://192.0x00A80001> against <about:blank> 
+PASS Parsing origin: <http://www/foo%2Ehtml> against <about:blank> 
+PASS Parsing origin: <http://www/foo/%2E/html> against <about:blank> 
+PASS Parsing origin: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Parsing origin: <http:\\www.google.com\foo> against <about:blank> 
+PASS Parsing origin: <http://foo:80/> against <about:blank> 
+PASS Parsing origin: <http://foo:81/> against <about:blank> 
+FAIL Parsing origin: <httpa://foo:80/> against <about:blank> assert_equals: origin expected "null" but got "httpa://"
+PASS Parsing origin: <https://foo:443/> against <about:blank> 
+PASS Parsing origin: <https://foo:80/> against <about:blank> 
+PASS Parsing origin: <ftp://foo:21/> against <about:blank> 
+PASS Parsing origin: <ftp://foo:80/> against <about:blank> 
+PASS Parsing origin: <gopher://foo:70/> against <about:blank> 
+PASS Parsing origin: <gopher://foo:443/> against <about:blank> 
+PASS Parsing origin: <ws://foo:80/> against <about:blank> 
+PASS Parsing origin: <ws://foo:81/> against <about:blank> 
+PASS Parsing origin: <ws://foo:443/> against <about:blank> 
+PASS Parsing origin: <ws://foo:815/> against <about:blank> 
+PASS Parsing origin: <wss://foo:80/> against <about:blank> 
+PASS Parsing origin: <wss://foo:81/> against <about:blank> 
+PASS Parsing origin: <wss://foo:443/> against <about:blank> 
+PASS Parsing origin: <wss://foo:815/> against <about:blank> 
+PASS Parsing origin: <http:/example.com/> against <about:blank> 
+PASS Parsing origin: <ftp:/example.com/> against <about:blank> 
+PASS Parsing origin: <https:/example.com/> against <about:blank> 
+FAIL Parsing origin: <madeupscheme:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:/example.com/> against <about:blank> 
+PASS Parsing origin: <ws:/example.com/> against <about:blank> 
+PASS Parsing origin: <wss:/example.com/> against <about:blank> 
+PASS Parsing origin: <data:/example.com/> against <about:blank> 
+PASS Parsing origin: <javascript:/example.com/> against <about:blank> 
+FAIL Parsing origin: <mailto:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:example.com/> against <about:blank> 
+PASS Parsing origin: <ftp:example.com/> against <about:blank> 
+PASS Parsing origin: <https:example.com/> against <about:blank> 
+FAIL Parsing origin: <madeupscheme:example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:example.com/> against <about:blank> 
+PASS Parsing origin: <ws:example.com/> against <about:blank> 
+PASS Parsing origin: <wss:example.com/> against <about:blank> 
+PASS Parsing origin: <data:example.com/> against <about:blank> 
+PASS Parsing origin: <javascript:example.com/> against <about:blank> 
+FAIL Parsing origin: <mailto:example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://@pple.com> against <about:blank> 
+PASS Parsing origin: <http::b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://www.@pple.com> against <about:blank> 
+PASS Parsing origin: <http://:@www.example.com> against <about:blank> 
+PASS Parsing origin: </> against <http://www.example.com/test> 
+PASS Parsing origin: </test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <.> against <http://www.example.com/test> 
+PASS Parsing origin: <..> against <http://www.example.com/test> 
+PASS Parsing origin: <test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <./test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../../test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <中/test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Parsing origin: <//www.example2.com> against <http://www.example.com/test> 
+PASS Parsing origin: <http://ExAmPlE.CoM> against <http://other.com/> 
+PASS Parsing origin: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Parsing origin: <http://www.foo。bar.com> against <http://other.com/> 
+PASS Parsing origin: <https://x/�?�#�> against <about:blank> 
+PASS Parsing origin: <http://Go.com> against <http://other.com/> 
+FAIL Parsing origin: <http://你好你好> against <http://other.com/> assert_equals: origin expected "http://你好你好" but got "http://xn--6qqa088eba"
+FAIL Parsing origin: <https://faß.ExAmPlE/> against <about:blank> assert_equals: origin expected "https://faß.example" but got "https://fass.example"
+PASS Parsing origin: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing origin: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+PASS Parsing origin: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Parsing origin: <http://./> against <about:blank> 
+PASS Parsing origin: <http://../> against <about:blank> 
+PASS Parsing origin: <http://0..0x300/> against <about:blank> 
+PASS Parsing origin: <http://foo:💩@example.com/bar> against <http://other.com/> 
+FAIL Parsing origin: <#> against <test:test> assert_equals: origin expected "null" but got "test://"
+FAIL Parsing origin: <#x> against <mailto:x@x.com> assert_equals: origin expected "null" but got "mailto://"
+FAIL Parsing origin: <#x> against <data:,> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <#x> against <about:blank> 
+FAIL Parsing origin: <#> against <test:test?test> assert_equals: origin expected "null" but got "test://"
+PASS Parsing origin: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing origin: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing origin: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Parsing origin: </some/path> against <http://user@example.org/smth> 
+PASS Parsing origin: <> against <http://user:pass@example.org:21/smth> 
+PASS Parsing origin: </some/path> against <http://user:pass@example.org:21/smth> 
+FAIL Parsing origin: <i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:sd/sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <about:/../> against <about:blank> 
+PASS Parsing origin: <data:/../> against <about:blank> 
+PASS Parsing origin: <javascript:/../> against <about:blank> 
+FAIL Parsing origin: <mailto:/../> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+FAIL Parsing origin: <sc://ñ.test/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <x> against <sc://ñ> 
+FAIL Parsing origin: <sc:\../> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc::a@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <wow:%NBD> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Parsing origin: <wow:%1G> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Parsing origin: <ftp://%e2%98%83> against <about:blank> assert_equals: origin expected "ftp://☃" but got "ftp://xn--n3h"
+FAIL Parsing origin: <https://%e2%98%83> against <about:blank> assert_equals: origin expected "https://☃" but got "https://xn--n3h"
+PASS Parsing origin: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Parsing origin: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Parsing origin: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Parsing origin: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Parsing origin: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <sc:> against <https://example.org/foo/bar> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Parsing origin: <http://192.168.257> against <http://other.com/> 
+PASS Parsing origin: <http://192.168.257.com> against <http://other.com/> 
+PASS Parsing origin: <http://256> against <http://other.com/> 
+PASS Parsing origin: <http://256.com> against <http://other.com/> 
+PASS Parsing origin: <http://999999999> against <http://other.com/> 
+PASS Parsing origin: <http://999999999.com> against <http://other.com/> 
+PASS Parsing origin: <http://10000000000.com> against <http://other.com/> 
+PASS Parsing origin: <http://4294967295> against <http://other.com/> 
+PASS Parsing origin: <http://0xffffffff> against <http://other.com/> 
+PASS Parsing origin: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Parsing origin: <https://0x.0x.0> against <about:blank> 
+PASS Parsing origin: <http://[1:0::]> against <http://example.net/> 
+FAIL Parsing origin: <sc://ñ> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://ñ?x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://ñ#x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <#x> against <sc://ñ> 
+PASS Parsing origin: <?x> against <sc://ñ> 
+FAIL Parsing origin: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: origin expected "null" but got "tftp://"
+FAIL Parsing origin: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: origin expected "null" but got "telnet://"
+FAIL Parsing origin: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: origin expected "null" but got "ut2004://"
+FAIL Parsing origin: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: origin expected "null" but got "redis://"
+FAIL Parsing origin: <rsync://foo@host:911/sup> against <about:blank> assert_equals: origin expected "null" but got "rsync://"
+FAIL Parsing origin: <git://github.com/foo/bar.git> against <about:blank> assert_equals: origin expected "null" but got "git://"
+FAIL Parsing origin: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: origin expected "null" but got "irc://"
+FAIL Parsing origin: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: origin expected "null" but got "dns://"
+FAIL Parsing origin: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: origin expected "null" but got "ldap://"
+FAIL Parsing origin: <git+https://github.com/foo/bar> against <about:blank> assert_equals: origin expected "null" but got "git+https://"
+FAIL Parsing origin: <urn:ietf:rfc:2648> against <about:blank> assert_equals: origin expected "null" but got "urn://"
+FAIL Parsing origin: <tag:joe@example.org,2001:foo/bar> against <about:blank> assert_equals: origin expected "null" but got "tag://"
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/a-element-xhtml-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/a-element-xhtml-expected.txt
new file mode 100644
index 0000000..26dcb10c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/a-element-xhtml-expected.txt
@@ -0,0 +1,486 @@
+This is a testharness.js-based test.
+Found 473 tests; 303 PASS, 170 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS Parsing: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Parsing: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Parsing: <https://test:@test> against <about:blank> 
+PASS Parsing: <https://:@test> against <about:blank> 
+FAIL Parsing: <non-special://test:@test/x> against <about:blank> assert_equals: href expected "non-special://test@test/x" but got "non-special://test:@test/x"
+FAIL Parsing: <non-special://:@test/x> against <about:blank> assert_equals: href expected "non-special://test/x" but got "non-special://:@test/x"
+PASS Parsing: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Parsing: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Parsing: < foo.com  > against <http://example.org/foo/bar> 
+PASS Parsing: <a:	 foo.com> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing: <lolscheme:x x#x x> against <about:blank> 
+PASS Parsing: <http://f:/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:0/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:b/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <http://f: /c> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://f: /c" but got "http://f:%20/c"
+PASS Parsing: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:fifty-two/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:999999/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <non-special://f:999999/c> against <http://example.org/foo/bar> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://f: 21 / b ? d # e > against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://f: 21 / b ? d # e " but got "http://f:%2021%20/%20b%20?%20d%20# e"
+PASS Parsing: <> against <http://example.org/foo/bar> 
+PASS Parsing: <  	> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <:> against <http://example.org/foo/bar> 
+PASS Parsing: <:a> against <http://example.org/foo/bar> 
+PASS Parsing: <:/> against <http://example.org/foo/bar> 
+PASS Parsing: <:\> against <http://example.org/foo/bar> 
+PASS Parsing: <:#> against <http://example.org/foo/bar> 
+PASS Parsing: <#> against <http://example.org/foo/bar> 
+PASS Parsing: <#/> against <http://example.org/foo/bar> 
+PASS Parsing: <#\> against <http://example.org/foo/bar> 
+PASS Parsing: <#;?> against <http://example.org/foo/bar> 
+PASS Parsing: <?> against <http://example.org/foo/bar> 
+PASS Parsing: </> against <http://example.org/foo/bar> 
+PASS Parsing: <:23> against <http://example.org/foo/bar> 
+PASS Parsing: </:23> against <http://example.org/foo/bar> 
+PASS Parsing: <::> against <http://example.org/foo/bar> 
+PASS Parsing: <::23> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://> against <http://example.org/foo/bar> assert_equals: pathname expected "" but got "//"
+PASS Parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Parsing: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/bar.com/> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: pathname expected "///////" but got "/////////"
+FAIL Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: pathname expected "///////bar.com/" but got "/////////bar.com/"
+FAIL Parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: pathname expected "//://///" but got "////://///"
+PASS Parsing: <c:/foo> against <http://example.org/foo/bar> 
+PASS Parsing: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Parsing: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Parsing: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+FAIL Parsing: <http://[1::2]:3:4> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://[1::2]:3:4" but got "http://[1::2]:3:4/"
+FAIL Parsing: <http://2001::1> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1" but got "http://2001::1/"
+FAIL Parsing: <http://2001::1]> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1]" but got "http://2001::1]/"
+FAIL Parsing: <http://2001::1]:80> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1]:80" but got "http://2001::1]/"
+PASS Parsing: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <file:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <file://example:1/> against <about:blank> 
+PASS Parsing: <file://example:test/> against <about:blank> 
+FAIL Parsing: <file://example%/> against <about:blank> assert_equals: failure should set href to input expected "file://example%/" but got "file://example%25/"
+PASS Parsing: <file://[example]/> against <about:blank> 
+PASS Parsing: <ftps:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftps:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: </a/b/c> against <http://example.org/foo/bar> 
+PASS Parsing: </a/ /c> against <http://example.org/foo/bar> 
+PASS Parsing: </a%2fc> against <http://example.org/foo/bar> 
+PASS Parsing: </a/%2f/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <#β> against <http://example.org/foo/bar> assert_equals: href expected "http://example.org/foo/bar#%CE%B2" but got "http://example.org/foo/bar#β"
+PASS Parsing: <data:text/html,test#test> against <http://example.org/foo/bar> 
+PASS Parsing: <tel:1234567890> against <http://example.org/foo/bar> 
+FAIL Parsing: <file:c:\foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:/foo/bar.html" but got "file:///tmp/mock/c:/foo/bar.html"
+FAIL Parsing: <  File:c|////foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:////foo/bar.html" but got "file:///tmp/mock/c%7C////foo/bar.html"
+FAIL Parsing: <C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///tmp/mock/C%7C/foo/bar"
+FAIL Parsing: </C|\foo\bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///C%7C/foo/bar"
+FAIL Parsing: <//C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file://c%7C/foo/bar"
+PASS Parsing: <//server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <\\server\file> against <file:///tmp/mock/path> 
+PASS Parsing: </\server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///foo/bar.txt> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///home/me> against <file:///tmp/mock/path> 
+PASS Parsing: <//> against <file:///tmp/mock/path> 
+PASS Parsing: <///> against <file:///tmp/mock/path> 
+PASS Parsing: <///test> against <file:///tmp/mock/path> 
+PASS Parsing: <file://test> against <file:///tmp/mock/path> 
+FAIL Parsing: <file://localhost> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/test> against <file:///tmp/mock/path> assert_equals: href expected "file:///test" but got "file://localhost/test"
+PASS Parsing: <test> against <file:///tmp/mock/path> 
+PASS Parsing: <file:test> against <file:///tmp/mock/path> 
+PASS Parsing: <http://example.com/././foo> against <about:blank> 
+PASS Parsing: <http://example.com/./.foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo/.> against <about:blank> 
+PASS Parsing: <http://example.com/foo/./> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Parsing: <http://example.com/foo/..bar> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 
+FAIL Parsing: <http://example.com/foo/%2e%2> against <about:blank> assert_equals: href expected "http://example.com/foo/%2e%2" but got "http://example.com/foo/.%2"
+FAIL Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> assert_equals: href expected "http://example.com/%2e.bar" but got "http://example.com/..bar"
+PASS Parsing: <http://example.com////../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Parsing: <http://example.com/foo> against <about:blank> 
+PASS Parsing: <http://example.com/%20foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo%> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2©zbar> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%41%7a> against <about:blank> assert_equals: href expected "http://example.com/foo%41%7a" but got "http://example.com/fooAz"
+PASS Parsing: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%00%51> against <about:blank> assert_equals: href expected "http://example.com/foo%00%51" but got "http://example.com/foo%00Q"
+PASS Parsing: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Parsing: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Parsing: <http://example.com/foo	bar> against <about:blank> 
+PASS Parsing: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Parsing: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Parsing: <http://example.com/@asdf%40> against <about:blank> 
+PASS Parsing: <http://example.com/你好你好> against <about:blank> 
+PASS Parsing: <http://example.com/‥/foo> against <about:blank> 
+PASS Parsing: <http://example.com//foo> against <about:blank> 
+PASS Parsing: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Parsing: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+FAIL Parsing: <http://www.google.com/foo?bar=baz# »> against <about:blank> assert_equals: href expected "http://www.google.com/foo?bar=baz# %C2%BB" but got "http://www.google.com/foo?bar=baz# »"
+PASS Parsing: <data:test# »> against <about:blank> 
+PASS Parsing: <http://www.google.com> against <about:blank> 
+PASS Parsing: <http://192.0x00A80001> against <about:blank> 
+FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo%2Ehtml" but got "http://www/foo.html"
+PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 
+PASS Parsing: <http://user:pass@/> against <about:blank> 
+PASS Parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 
+PASS Parsing: <http://foo:80/> against <about:blank> 
+PASS Parsing: <http://foo:81/> against <about:blank> 
+FAIL Parsing: <httpa://foo:80/> against <about:blank> assert_equals: host expected "foo:80" but got ""
+PASS Parsing: <http://foo:-80/> against <about:blank> 
+PASS Parsing: <https://foo:443/> against <about:blank> 
+PASS Parsing: <https://foo:80/> against <about:blank> 
+PASS Parsing: <ftp://foo:21/> against <about:blank> 
+PASS Parsing: <ftp://foo:80/> against <about:blank> 
+PASS Parsing: <gopher://foo:70/> against <about:blank> 
+PASS Parsing: <gopher://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:80/> against <about:blank> 
+PASS Parsing: <ws://foo:81/> against <about:blank> 
+PASS Parsing: <ws://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:815/> against <about:blank> 
+PASS Parsing: <wss://foo:80/> against <about:blank> 
+PASS Parsing: <wss://foo:81/> against <about:blank> 
+PASS Parsing: <wss://foo:443/> against <about:blank> 
+PASS Parsing: <wss://foo:815/> against <about:blank> 
+PASS Parsing: <http:/example.com/> against <about:blank> 
+PASS Parsing: <ftp:/example.com/> against <about:blank> 
+PASS Parsing: <https:/example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:/example.com/> against <about:blank> 
+PASS Parsing: <file:/example.com/> against <about:blank> 
+PASS Parsing: <ftps:/example.com/> against <about:blank> 
+PASS Parsing: <gopher:/example.com/> against <about:blank> 
+PASS Parsing: <ws:/example.com/> against <about:blank> 
+PASS Parsing: <wss:/example.com/> against <about:blank> 
+PASS Parsing: <data:/example.com/> against <about:blank> 
+PASS Parsing: <javascript:/example.com/> against <about:blank> 
+PASS Parsing: <mailto:/example.com/> against <about:blank> 
+PASS Parsing: <http:example.com/> against <about:blank> 
+PASS Parsing: <ftp:example.com/> against <about:blank> 
+PASS Parsing: <https:example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:example.com/> against <about:blank> 
+PASS Parsing: <ftps:example.com/> against <about:blank> 
+PASS Parsing: <gopher:example.com/> against <about:blank> 
+PASS Parsing: <ws:example.com/> against <about:blank> 
+PASS Parsing: <wss:example.com/> against <about:blank> 
+PASS Parsing: <data:example.com/> against <about:blank> 
+PASS Parsing: <javascript:example.com/> against <about:blank> 
+PASS Parsing: <mailto:example.com/> against <about:blank> 
+PASS Parsing: <http:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/@www.example.com> against <about:blank> 
+PASS Parsing: <http://@www.example.com> against <about:blank> 
+PASS Parsing: <http:a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://@pple.com> against <about:blank> 
+PASS Parsing: <http::b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://:b@www.example.com> against <about:blank> 
+FAIL Parsing: <http:/:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/:@/www.example.com" but got "http:///www.example.com"
+PASS Parsing: <http://user@/www.example.com> against <about:blank> 
+FAIL Parsing: <http:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <http:/@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <http://@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http://@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <https:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "https:@/www.example.com" but got "https:///www.example.com"
+FAIL Parsing: <http:a:b@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:a:b@/www.example.com" but got "http://a:b@/www.example.com"
+FAIL Parsing: <http:/a:b@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/a:b@/www.example.com" but got "http://a:b@/www.example.com"
+PASS Parsing: <http://a:b@/www.example.com> against <about:blank> 
+FAIL Parsing: <http::@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http::@/www.example.com" but got "http:///www.example.com"
+PASS Parsing: <http:a:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://www.@pple.com> against <about:blank> 
+FAIL Parsing: <http:@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:@:www.example.com" but got "http://:www.example.com/"
+FAIL Parsing: <http:/@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/@:www.example.com" but got "http://:www.example.com/"
+FAIL Parsing: <http://@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http://@:www.example.com" but got "http://:www.example.com/"
+PASS Parsing: <http://:@www.example.com> against <about:blank> 
+PASS Parsing: </> against <http://www.example.com/test> 
+PASS Parsing: </test.txt> against <http://www.example.com/test> 
+PASS Parsing: <.> against <http://www.example.com/test> 
+PASS Parsing: <..> against <http://www.example.com/test> 
+PASS Parsing: <test.txt> against <http://www.example.com/test> 
+PASS Parsing: <./test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <中/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Parsing: <//www.example2.com> against <http://www.example.com/test> 
+PASS Parsing: <file:...> against <http://www.example.com/test> 
+PASS Parsing: <file:..> against <http://www.example.com/test> 
+PASS Parsing: <file:a> against <http://www.example.com/test> 
+PASS Parsing: <http://ExAmPlE.CoM> against <http://other.com/> 
+FAIL Parsing: <http://example example.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://Goo%20 goo%7C|.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[]" but got "http://[]/"
+FAIL Parsing: <http://[:]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[:]" but got "http://[:]/"
+FAIL Parsing: <http://GOO  goo.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Parsing: <http://www.foo。bar.com> against <http://other.com/> 
+FAIL Parsing: <http://﷐zyx.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://﷐zyx.com" but got "http://%EF%BF%BDzyx.com/"
+FAIL Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%ef%b7%90zyx.com" but got "http://%EF%BF%BDzyx.com/"
+FAIL Parsing: <https://�> against <about:blank> assert_equals: failure should set href to input expected "https://\ufffd" but got "https://%EF%BF%BD/"
+FAIL Parsing: <https://%EF%BF%BD> against <about:blank> assert_equals: failure should set href to input expected "https://%EF%BF%BD" but got "https://%EF%BF%BD/"
+FAIL Parsing: <https://x/�?�#�> against <about:blank> assert_equals: href expected "https://x/%EF%BF%BD?%EF%BF%BD#%EF%BF%BD" but got "https://x/%EF%BF%BD?%EF%BF%BD#\ufffd"
+PASS Parsing: <http://Go.com> against <http://other.com/> 
+FAIL Parsing: <http://%41.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://%00.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%00.com" but got "http://%00.com/"
+FAIL Parsing: <http://%ef%bc%85%ef%bc%90%ef%bc%90.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%ef%bc%85%ef%bc%90%ef%bc%90.com" but got "http://%00.com/"
+PASS Parsing: <http://你好你好> against <http://other.com/> 
+FAIL Parsing: <https://faß.ExAmPlE/> against <about:blank> assert_equals: href expected "https://xn--fa-hia.example/" but got "https://fass.example/"
+FAIL Parsing: <sc://faß.ExAmPlE/> against <about:blank> assert_equals: host expected "fa%C3%9F.ExAmPlE" but got ""
+FAIL Parsing: <http://%zz%66%a.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%zz%66%a.com" but got "http://%25zzf%25a.com/"
+FAIL Parsing: <http://%25> against <http://other.com/> assert_equals: failure should set href to input expected "http://%25" but got "http://%25/"
+FAIL Parsing: <http://hello%00> against <http://other.com/> assert_equals: failure should set href to input expected "http://hello%00" but got "http://hello%00/"
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+FAIL Parsing: <http://192.168.0.257> against <http://other.com/> assert_equals: failure should set href to input expected "http://192.168.0.257" but got "http://192.168.0.257/"
+FAIL Parsing: <http://%3g%78%63%30%2e%30%32%35%30%2E.01> against <http://other.com/> assert_equals: failure should set href to input expected "http://%3g%78%63%30%2e%30%32%35%30%2E.01" but got "http://%253gxc0.0250..01/"
+FAIL Parsing: <http://192.168.0.1 hello> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <https://x x:12> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Parsing: <http://./> against <about:blank> 
+PASS Parsing: <http://../> against <about:blank> 
+PASS Parsing: <http://0..0x300/> against <about:blank> 
+PASS Parsing: <http://[www.google.com]/> against <about:blank> 
+FAIL Parsing: <http://[google.com]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[google.com]" but got "http://[google.com]/"
+FAIL Parsing: <http://[::1.2.3.4x]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[::1.2.3.4x]" but got "http://[::1.2.3.4x]/"
+FAIL Parsing: <http://[::1.2.3.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[::1.2.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[::1.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://foo:💩@example.com/bar> against <http://other.com/> 
+PASS Parsing: <#> against <test:test> 
+PASS Parsing: <#x> against <mailto:x@x.com> 
+FAIL Parsing: <#x> against <data:,> assert_equals: href expected "data:,#x" but got "mailto:x@x.com#x"
+PASS Parsing: <#x> against <about:blank> 
+PASS Parsing: <#> against <test:test?test> 
+PASS Parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Parsing: </some/path> against <http://user@example.org/smth> 
+PASS Parsing: <> against <http://user:pass@example.org:21/smth> 
+PASS Parsing: </some/path> against <http://user:pass@example.org:21/smth> 
+FAIL Parsing: <i> against <sc:sd> assert_equals: failure should set href to input expected "i" but got ""
+FAIL Parsing: <i> against <sc:sd/sd> assert_equals: failure should set href to input expected "i" but got ""
+PASS Parsing: <i> against <sc:/pa/pa> 
+FAIL Parsing: <i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/i" but got "///pa/i"
+FAIL Parsing: <../i> against <sc:sd> assert_equals: failure should set href to input expected "../i" but got ""
+FAIL Parsing: <../i> against <sc:sd/sd> assert_equals: failure should set href to input expected "../i" but got ""
+PASS Parsing: <../i> against <sc:/pa/pa> 
+FAIL Parsing: <../i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <../i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+FAIL Parsing: </i> against <sc:sd> assert_equals: failure should set href to input expected "/i" but got ""
+FAIL Parsing: </i> against <sc:sd/sd> assert_equals: failure should set href to input expected "/i" but got ""
+PASS Parsing: </i> against <sc:/pa/pa> 
+FAIL Parsing: </i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: </i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+FAIL Parsing: <?i> against <sc:sd> assert_equals: failure should set href to input expected "?i" but got ""
+FAIL Parsing: <?i> against <sc:sd/sd> assert_equals: failure should set href to input expected "?i" but got ""
+PASS Parsing: <?i> against <sc:/pa/pa> 
+FAIL Parsing: <?i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <?i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+PASS Parsing: <#i> against <sc:sd> 
+PASS Parsing: <#i> against <sc:sd/sd> 
+PASS Parsing: <#i> against <sc:/pa/pa> 
+FAIL Parsing: <#i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <#i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+FAIL Parsing: <about:/../> against <about:blank> assert_equals: href expected "about:/" but got "about:/../"
+FAIL Parsing: <data:/../> against <about:blank> assert_equals: href expected "data:/" but got "data:/../"
+FAIL Parsing: <javascript:/../> against <about:blank> assert_equals: href expected "javascript:/" but got "javascript:/../"
+FAIL Parsing: <mailto:/../> against <about:blank> assert_equals: href expected "mailto:/" but got "mailto:/../"
+FAIL Parsing: <sc://ñ.test/> against <about:blank> assert_equals: host expected "%C3%B1.test" but got ""
+FAIL Parsing: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: host expected "%1F!\"$&'()*+,-.;<=>^_`{|}~" but got ""
+FAIL Parsing: <sc://\0/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc:// /> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://%/> against <about:blank> assert_equals: host expected "%" but got ""
+FAIL Parsing: <sc://@/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://te@s:t@/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://:/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://:12/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://[/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://\/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://]/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1/x" but got "sc://%C3%B1"
+PASS Parsing: <sc:\../> against <about:blank> 
+PASS Parsing: <sc::a@example.net> against <about:blank> 
+PASS Parsing: <wow:%NBD> against <about:blank> 
+PASS Parsing: <wow:%1G> against <about:blank> 
+FAIL Parsing: <ftp://example.com%80/> against <about:blank> assert_equals: failure should set href to input expected "ftp://example.com%80/" but got "ftp://example.com%EF%BF%BD/"
+FAIL Parsing: <ftp://example.com%A0/> against <about:blank> assert_equals: failure should set href to input expected "ftp://example.com%A0/" but got "ftp://example.com%EF%BF%BD/"
+FAIL Parsing: <https://example.com%80/> against <about:blank> assert_equals: failure should set href to input expected "https://example.com%80/" but got "https://example.com%EF%BF%BD/"
+FAIL Parsing: <https://example.com%A0/> against <about:blank> assert_equals: failure should set href to input expected "https://example.com%A0/" but got "https://example.com%EF%BF%BD/"
+PASS Parsing: <ftp://%e2%98%83> against <about:blank> 
+PASS Parsing: <https://%e2%98%83> against <about:blank> 
+PASS Parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Parsing: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Parsing: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <https://example.org/foo/bar> 
+PASS Parsing: <sc:> against <https://example.org/foo/bar> 
+PASS Parsing: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Parsing: <http://192.168.257> against <http://other.com/> 
+PASS Parsing: <http://192.168.257.com> against <http://other.com/> 
+PASS Parsing: <http://256> against <http://other.com/> 
+PASS Parsing: <http://256.com> against <http://other.com/> 
+PASS Parsing: <http://999999999> against <http://other.com/> 
+PASS Parsing: <http://999999999.com> against <http://other.com/> 
+FAIL Parsing: <http://10000000000> against <http://other.com/> assert_equals: failure should set href to input expected "http://10000000000" but got "http://10000000000/"
+PASS Parsing: <http://10000000000.com> against <http://other.com/> 
+PASS Parsing: <http://4294967295> against <http://other.com/> 
+FAIL Parsing: <http://4294967296> against <http://other.com/> assert_equals: failure should set href to input expected "http://4294967296" but got "http://4294967296/"
+PASS Parsing: <http://0xffffffff> against <http://other.com/> 
+FAIL Parsing: <http://0xffffffff1> against <http://other.com/> assert_equals: failure should set href to input expected "http://0xffffffff1" but got "http://0xffffffff1/"
+FAIL Parsing: <http://256.256.256.256> against <http://other.com/> assert_equals: failure should set href to input expected "http://256.256.256.256" but got "http://256.256.256.256/"
+PASS Parsing: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Parsing: <https://0x.0x.0> against <about:blank> 
+PASS Parsing: <file:///C%3A/> against <about:blank> 
+PASS Parsing: <file:///C%7C/> against <about:blank> 
+PASS Parsing: <pix/submit.gif> against <file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html> 
+FAIL Parsing: <..> against <file:///C:/> assert_equals: href expected "file:///C:/" but got "file:///"
+PASS Parsing: <..> against <file:///> 
+FAIL Parsing: </> against <file:///C:/a/b> assert_equals: href expected "file:///C:/" but got "file:///"
+FAIL Parsing: <//d:> against <file:///C:/a/b> assert_equals: href expected "file:///d:" but got "file://d:/"
+FAIL Parsing: <//d:/..> against <file:///C:/a/b> assert_equals: href expected "file:///d:/" but got "file://d:/"
+PASS Parsing: <..> against <file:///ab:/> 
+PASS Parsing: <..> against <file:///1:/> 
+PASS Parsing: <> against <file:///test?test#test> 
+PASS Parsing: <file:> against <file:///test?test#test> 
+PASS Parsing: <?x> against <file:///test?test#test> 
+PASS Parsing: <file:?x> against <file:///test?test#test> 
+PASS Parsing: <#x> against <file:///test?test#test> 
+PASS Parsing: <file:#x> against <file:///test?test#test> 
+PASS Parsing: <file:\\//> against <about:blank> 
+PASS Parsing: <file:\\\\> against <about:blank> 
+PASS Parsing: <file:\\\\?fox> against <about:blank> 
+PASS Parsing: <file:\\\\#guppy> against <about:blank> 
+FAIL Parsing: <file://spider///> against <about:blank> assert_equals: href expected "file://spider/" but got "file://spider///"
+FAIL Parsing: <file:\\localhost//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost//"
+PASS Parsing: <file:///localhost//cat> against <about:blank> 
+PASS Parsing: <file://\/localhost//cat> against <about:blank> 
+FAIL Parsing: <file://localhost//a//../..//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost///"
+PASS Parsing: </////mouse> against <file:///elephant> 
+PASS Parsing: <\//pig> against <file://lion/> 
+FAIL Parsing: <\/localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: <//localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: </..//localhost//pig> against <file://lion/> assert_equals: href expected "file://lion/localhost//pig" but got "file://lion//localhost//pig"
+PASS Parsing: <file://> against <file://ape/> 
+PASS Parsing: </rooibos> against <file://tea/> 
+PASS Parsing: </?chai> against <file://tea/> 
+FAIL Parsing: <C|> against <file://host/dir/file> assert_equals: href expected "file:///C:" but got "file://host/dir/C%7C"
+FAIL Parsing: <C|#> against <file://host/dir/file> assert_equals: href expected "file:///C:#" but got "file://host/dir/C%7C#"
+FAIL Parsing: <C|?> against <file://host/dir/file> assert_equals: href expected "file:///C:?" but got "file://host/dir/C%7C?"
+FAIL Parsing: <C|/> against <file://host/dir/file> assert_equals: href expected "file:///C:/" but got "file://host/dir/C%7C/"
+FAIL Parsing: <C|\> against <file://host/dir/file> assert_equals: href expected "file:///C:/" but got "file://host/dir/C%7C/"
+PASS Parsing: <C> against <file://host/dir/file> 
+FAIL Parsing: <C|a> against <file://host/dir/file> assert_equals: href expected "file://host/dir/C|a" but got "file://host/dir/C%7Ca"
+FAIL Parsing: <file://example.net/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://example.net/C:/"
+FAIL Parsing: <file://1.2.3.4/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://1.2.3.4/C:/"
+FAIL Parsing: <file://[1::8]/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://[1::8]/C:/"
+FAIL Parsing: <file:/C|/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file:///C%7C/"
+FAIL Parsing: <file://C|/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://c%7C/"
+PASS Parsing: <file:> against <about:blank> 
+PASS Parsing: <file:?q=v> against <about:blank> 
+PASS Parsing: <file:#frag> against <about:blank> 
+PASS Parsing: <http://[1:0::]> against <http://example.net/> 
+FAIL Parsing: <http://[0:1:2:3:4:5:6:7:8]> against <http://example.net/> assert_equals: failure should set href to input expected "http://[0:1:2:3:4:5:6:7:8]" but got "http://[0:1:2:3:4:5:6:7:8]/"
+FAIL Parsing: <https://[0::0::0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0::0::0]" but got "https://[0::0::0]/"
+FAIL Parsing: <https://[0:.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:.0]" but got "https://[0:.0]/"
+FAIL Parsing: <https://[0:0:]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:0:]" but got "https://[0:0:]/"
+FAIL Parsing: <https://[0:1:2:3:4:5:6:7.0.0.0.1]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1:2:3:4:5:6:7.0.0.0.1]" but got "https://[0:1:2:3:4:5:6:7.0.0.0.1]/"
+FAIL Parsing: <https://[0:1.00.0.0.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.00.0.0.0]" but got "https://[0:1.00.0.0.0]/"
+FAIL Parsing: <https://[0:1.290.0.0.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.290.0.0.0]" but got "https://[0:1.290.0.0.0]/"
+FAIL Parsing: <https://[0:1.23.23]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.23.23]" but got "https://[0:1.23.23]/"
+FAIL Parsing: <http://?> against <about:blank> assert_equals: failure should set href to input expected "http://?" but got "http:/?"
+FAIL Parsing: <http://#> against <about:blank> assert_equals: failure should set href to input expected "http://#" but got "http:/#"
+FAIL Parsing: <sc://ñ> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ?x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ#x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <#x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1#x" but got "sc://%C3%B1"
+FAIL Parsing: <?x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1?x" but got "sc://%C3%B1"
+FAIL Parsing: <sc://?> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <sc://#> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <///> against <sc://x/> assert_equals: href expected "sc:///" but got "sc:"
+FAIL Parsing: <////> against <sc://x/> assert_equals: href expected "sc:////" but got "sc:"
+FAIL Parsing: <////x/> against <sc://x/> assert_equals: href expected "sc:////x/" but got "sc://x/"
+FAIL Parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: host expected "foobar.com" but got ""
+FAIL Parsing: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: username expected "user" but got ""
+FAIL Parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: host expected "10.10.10.10:7777" but got ""
+FAIL Parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <rsync://foo@host:911/sup> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <git://github.com/foo/bar.git> against <about:blank> assert_equals: host expected "github.com" but got ""
+FAIL Parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: host expected "myserver.com:6999" but got ""
+FAIL Parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: host expected "fw.example.org:9999" but got ""
+FAIL Parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: host expected "localhost:389" but got ""
+FAIL Parsing: <git+https://github.com/foo/bar> against <about:blank> assert_equals: host expected "github.com" but got ""
+PASS Parsing: <urn:ietf:rfc:2648> against <about:blank> 
+PASS Parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank> 
+FAIL Parsing: <non-special://%E2%80%A0/> against <about:blank> assert_equals: host expected "%E2%80%A0" but got ""
+FAIL Parsing: <non-special://H%4fSt/path> against <about:blank> assert_equals: host expected "H%4fSt" but got ""
+FAIL Parsing: <non-special://[1:2:0:0:5:0:0:0]/> against <about:blank> assert_equals: href expected "non-special://[1:2:0:0:5::]/" but got "non-special://[1:2:0:0:5:0:0:0]/"
+FAIL Parsing: <non-special://[1:2:0:0:0:0:0:3]/> against <about:blank> assert_equals: href expected "non-special://[1:2::3]/" but got "non-special://[1:2:0:0:0:0:0:3]/"
+FAIL Parsing: <non-special://[1:2::3]:80/> against <about:blank> assert_equals: host expected "[1:2::3]:80" but got ""
+FAIL Parsing: <non-special://[:80/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <blob:https://example.com:443/> against <about:blank> 
+PASS Parsing: <blob:d3958f5c-0777-0845-9dcf-2cb28783acaf> against <about:blank> 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/failure-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/failure-expected.txt
new file mode 100644
index 0000000..cac2f08
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/failure-expected.txt
@@ -0,0 +1,235 @@
+This is a testharness.js-based test.
+Found 231 tests; 92 PASS, 139 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+FAIL URL's href: file://example:1/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: file://example:1/ should throw 
+PASS sendBeacon(): file://example:1/ should throw 
+FAIL Location's href: file://example:1/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'file://example:1/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): file://example:1/ should throw 
+FAIL URL's href: file://example:test/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: file://example:test/ should throw 
+PASS sendBeacon(): file://example:test/ should throw 
+FAIL Location's href: file://example:test/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'file://example:test/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): file://example:test/ should throw 
+FAIL URL's href: file://example%/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: file://example%/ should throw 
+PASS sendBeacon(): file://example%/ should throw 
+FAIL Location's href: file://example%/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'file://example%/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): file://example%/ should throw 
+FAIL URL's href: file://[example]/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: file://[example]/ should throw 
+PASS sendBeacon(): file://[example]/ should throw 
+FAIL Location's href: file://[example]/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'file://[example]/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): file://[example]/ should throw 
+FAIL URL's href: http://user:pass@/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://user:pass@/ should throw 
+PASS sendBeacon(): http://user:pass@/ should throw 
+FAIL Location's href: http://user:pass@/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://user:pass@/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://user:pass@/ should throw 
+FAIL URL's href: http://foo:-80/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://foo:-80/ should throw 
+PASS sendBeacon(): http://foo:-80/ should throw 
+FAIL Location's href: http://foo:-80/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://foo:-80/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://foo:-80/ should throw 
+FAIL URL's href: http:/:@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:/:@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:/:@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:/:@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:/:@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http://user@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://user@/www.example.com should throw 
+PASS sendBeacon(): http://user@/www.example.com should throw 
+FAIL Location's href: http://user@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://user@/www.example.com' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://user@/www.example.com should throw 
+FAIL URL's href: http:@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http:/@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:/@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:/@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:/@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:/@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http://@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://@/www.example.com should throw 
+PASS sendBeacon(): http://@/www.example.com should throw 
+FAIL Location's href: http://@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://@/www.example.com' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://@/www.example.com should throw 
+FAIL URL's href: https:@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https:@/www.example.com should throw 
+PASS sendBeacon(): https:@/www.example.com should throw 
+FAIL Location's href: https:@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https:@/www.example.com' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https:@/www.example.com should throw 
+FAIL URL's href: http:a:b@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:a:b@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:a:b@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:a:b@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:a:b@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http:/a:b@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:/a:b@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:/a:b@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:/a:b@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:/a:b@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http://a:b@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://a:b@/www.example.com should throw 
+PASS sendBeacon(): http://a:b@/www.example.com should throw 
+FAIL Location's href: http://a:b@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://a:b@/www.example.com' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://a:b@/www.example.com should throw 
+FAIL URL's href: http::@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http::@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http::@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http::@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http::@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http:@:www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:@:www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:@:www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:@:www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:@:www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http:/@:www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:/@:www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:/@:www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:/@:www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:/@:www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http://@:www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://@:www.example.com should throw 
+PASS sendBeacon(): http://@:www.example.com should throw 
+FAIL Location's href: http://@:www.example.com should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://@:www.example.com' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://@:www.example.com should throw 
+FAIL URL's href: https://� should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://� should throw 
+PASS sendBeacon(): https://� should throw 
+FAIL Location's href: https://� should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://�' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://� should throw 
+FAIL URL's href: https://%EF%BF%BD should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://%EF%BF%BD should throw 
+PASS sendBeacon(): https://%EF%BF%BD should throw 
+FAIL Location's href: https://%EF%BF%BD should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://%EF%BF%BD' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://%EF%BF%BD should throw 
+FAIL URL's href: https://x x:12 should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: https://x x:12 should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): https://x x:12 should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: https://x x:12 should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): https://x x:12 should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http://[www.google.com]/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://[www.google.com]/ should throw 
+PASS sendBeacon(): http://[www.google.com]/ should throw 
+FAIL Location's href: http://[www.google.com]/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://[www.google.com]/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://[www.google.com]/ should throw 
+FAIL URL's href: sc://\0/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://\0/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://\0/ should throw 
+FAIL Location's href: sc://\0/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://\0/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc:// / should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc:// / should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc:// / should throw 
+FAIL Location's href: sc:// / should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc:// / should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://@/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://@/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://@/ should throw 
+FAIL Location's href: sc://@/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://@/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://te@s:t@/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://te@s:t@/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://te@s:t@/ should throw 
+FAIL Location's href: sc://te@s:t@/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://te@s:t@/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://:/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://:/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://:/ should throw 
+FAIL Location's href: sc://:/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://:/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://:12/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://:12/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://:12/ should throw 
+FAIL Location's href: sc://:12/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://:12/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://[/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://[/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://[/ should throw 
+FAIL Location's href: sc://[/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://[/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://\/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://\/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://\/ should throw 
+FAIL Location's href: sc://\/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://\/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://]/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://]/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://]/ should throw 
+FAIL Location's href: sc://]/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://]/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: ftp://example.com%80/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: ftp://example.com%80/ should throw 
+PASS sendBeacon(): ftp://example.com%80/ should throw 
+FAIL Location's href: ftp://example.com%80/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'ftp://example.com%80/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): ftp://example.com%80/ should throw 
+FAIL URL's href: ftp://example.com%A0/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: ftp://example.com%A0/ should throw 
+PASS sendBeacon(): ftp://example.com%A0/ should throw 
+FAIL Location's href: ftp://example.com%A0/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'ftp://example.com%A0/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): ftp://example.com%A0/ should throw 
+FAIL URL's href: https://example.com%80/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://example.com%80/ should throw 
+PASS sendBeacon(): https://example.com%80/ should throw 
+FAIL Location's href: https://example.com%80/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://example.com%80/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://example.com%80/ should throw 
+FAIL URL's href: https://example.com%A0/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://example.com%A0/ should throw 
+PASS sendBeacon(): https://example.com%A0/ should throw 
+FAIL Location's href: https://example.com%A0/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://example.com%A0/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://example.com%A0/ should throw 
+FAIL URL's href: https://[0::0::0] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0::0::0] should throw 
+PASS sendBeacon(): https://[0::0::0] should throw 
+FAIL Location's href: https://[0::0::0] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0::0::0]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0::0::0] should throw 
+FAIL URL's href: https://[0:.0] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:.0] should throw 
+PASS sendBeacon(): https://[0:.0] should throw 
+FAIL Location's href: https://[0:.0] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:.0]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:.0] should throw 
+FAIL URL's href: https://[0:0:] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:0:] should throw 
+PASS sendBeacon(): https://[0:0:] should throw 
+FAIL Location's href: https://[0:0:] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:0:]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:0:] should throw 
+FAIL URL's href: https://[0:1:2:3:4:5:6:7.0.0.0.1] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:1:2:3:4:5:6:7.0.0.0.1] should throw 
+PASS sendBeacon(): https://[0:1:2:3:4:5:6:7.0.0.0.1] should throw 
+FAIL Location's href: https://[0:1:2:3:4:5:6:7.0.0.0.1] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:1:2:3:4:5:6:7.0.0.0.1]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:1:2:3:4:5:6:7.0.0.0.1] should throw 
+FAIL URL's href: https://[0:1.00.0.0.0] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:1.00.0.0.0] should throw 
+PASS sendBeacon(): https://[0:1.00.0.0.0] should throw 
+FAIL Location's href: https://[0:1.00.0.0.0] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:1.00.0.0.0]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:1.00.0.0.0] should throw 
+FAIL URL's href: https://[0:1.290.0.0.0] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:1.290.0.0.0] should throw 
+PASS sendBeacon(): https://[0:1.290.0.0.0] should throw 
+FAIL Location's href: https://[0:1.290.0.0.0] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:1.290.0.0.0]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:1.290.0.0.0] should throw 
+FAIL URL's href: https://[0:1.23.23] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:1.23.23] should throw 
+PASS sendBeacon(): https://[0:1.23.23] should throw 
+FAIL Location's href: https://[0:1.23.23] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:1.23.23]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:1.23.23] should throw 
+FAIL URL's href: http://? should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://? should throw 
+PASS sendBeacon(): http://? should throw 
+FAIL Location's href: http://? should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://?' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://? should throw 
+FAIL URL's href: http://# should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://# should throw 
+PASS sendBeacon(): http://# should throw 
+FAIL Location's href: http://# should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://#' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://# should throw 
+FAIL URL's href: non-special://[:80/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: non-special://[:80/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): non-special://[:80/ should throw 
+FAIL Location's href: non-special://[:80/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): non-special://[:80/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/url-constructor-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/url-constructor-expected.txt
new file mode 100644
index 0000000..d28b52a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/url-constructor-expected.txt
@@ -0,0 +1,532 @@
+This is a testharness.js-based test.
+Found 477 tests; 367 PASS, 110 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS URL.searchParams getter 
+PASS URL.searchParams updating, clearing 
+PASS URL.searchParams setter, invalid values 
+PASS URL.searchParams and URL.search setters, update propagation 
+PASS Loading data… 
+PASS Parsing: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Parsing: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Parsing: <https://test:@test> against <about:blank> 
+PASS Parsing: <https://:@test> against <about:blank> 
+FAIL Parsing: <non-special://test:@test/x> against <about:blank> assert_equals: href expected "non-special://test@test/x" but got "non-special://test:@test/x"
+FAIL Parsing: <non-special://:@test/x> against <about:blank> assert_equals: href expected "non-special://test/x" but got "non-special://:@test/x"
+PASS Parsing: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Parsing: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Parsing: < foo.com  > against <http://example.org/foo/bar> 
+PASS Parsing: <a:	 foo.com> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing: <lolscheme:x x#x x> against <about:blank> 
+PASS Parsing: <http://f:/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:0/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:b/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f: /c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:fifty-two/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:999999/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <non-special://f:999999/c> against <http://example.org/foo/bar> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://f: 21 / b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing: <> against <http://example.org/foo/bar> 
+PASS Parsing: <  	> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <:> against <http://example.org/foo/bar> 
+PASS Parsing: <:a> against <http://example.org/foo/bar> 
+PASS Parsing: <:/> against <http://example.org/foo/bar> 
+PASS Parsing: <:\> against <http://example.org/foo/bar> 
+PASS Parsing: <:#> against <http://example.org/foo/bar> 
+PASS Parsing: <#> against <http://example.org/foo/bar> 
+PASS Parsing: <#/> against <http://example.org/foo/bar> 
+PASS Parsing: <#\> against <http://example.org/foo/bar> 
+PASS Parsing: <#;?> against <http://example.org/foo/bar> 
+PASS Parsing: <?> against <http://example.org/foo/bar> 
+PASS Parsing: </> against <http://example.org/foo/bar> 
+PASS Parsing: <:23> against <http://example.org/foo/bar> 
+PASS Parsing: </:23> against <http://example.org/foo/bar> 
+PASS Parsing: <::> against <http://example.org/foo/bar> 
+PASS Parsing: <::23> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://> against <http://example.org/foo/bar> assert_equals: pathname expected "" but got "//"
+PASS Parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Parsing: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/bar.com/> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: pathname expected "///////" but got "/////////"
+FAIL Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: pathname expected "///////bar.com/" but got "/////////bar.com/"
+FAIL Parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: pathname expected "//://///" but got "////://///"
+PASS Parsing: <c:/foo> against <http://example.org/foo/bar> 
+PASS Parsing: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Parsing: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Parsing: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[1::2]:3:4> against <http://example.org/foo/bar> 
+PASS Parsing: <http://2001::1> against <http://example.org/foo/bar> 
+PASS Parsing: <http://2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <file:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <file://example:1/> against <about:blank> 
+PASS Parsing: <file://example:test/> against <about:blank> 
+PASS Parsing: <file://example%/> against <about:blank> 
+PASS Parsing: <file://[example]/> against <about:blank> 
+PASS Parsing: <ftps:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftps:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: </a/b/c> against <http://example.org/foo/bar> 
+PASS Parsing: </a/ /c> against <http://example.org/foo/bar> 
+PASS Parsing: </a%2fc> against <http://example.org/foo/bar> 
+PASS Parsing: </a/%2f/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <#β> against <http://example.org/foo/bar> assert_equals: href expected "http://example.org/foo/bar#%CE%B2" but got "http://example.org/foo/bar#β"
+PASS Parsing: <data:text/html,test#test> against <http://example.org/foo/bar> 
+PASS Parsing: <tel:1234567890> against <http://example.org/foo/bar> 
+FAIL Parsing: <file:c:\foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:/foo/bar.html" but got "file:///tmp/mock/c:/foo/bar.html"
+FAIL Parsing: <  File:c|////foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:////foo/bar.html" but got "file:///tmp/mock/c%7C////foo/bar.html"
+FAIL Parsing: <C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///tmp/mock/C%7C/foo/bar"
+FAIL Parsing: </C|\foo\bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///C%7C/foo/bar"
+FAIL Parsing: <//C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file://c%7C/foo/bar"
+PASS Parsing: <//server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <\\server\file> against <file:///tmp/mock/path> 
+PASS Parsing: </\server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///foo/bar.txt> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///home/me> against <file:///tmp/mock/path> 
+PASS Parsing: <//> against <file:///tmp/mock/path> 
+PASS Parsing: <///> against <file:///tmp/mock/path> 
+PASS Parsing: <///test> against <file:///tmp/mock/path> 
+PASS Parsing: <file://test> against <file:///tmp/mock/path> 
+FAIL Parsing: <file://localhost> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/test> against <file:///tmp/mock/path> assert_equals: href expected "file:///test" but got "file://localhost/test"
+PASS Parsing: <test> against <file:///tmp/mock/path> 
+PASS Parsing: <file:test> against <file:///tmp/mock/path> 
+PASS Parsing: <http://example.com/././foo> against <about:blank> 
+PASS Parsing: <http://example.com/./.foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo/.> against <about:blank> 
+PASS Parsing: <http://example.com/foo/./> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Parsing: <http://example.com/foo/..bar> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 
+FAIL Parsing: <http://example.com/foo/%2e%2> against <about:blank> assert_equals: href expected "http://example.com/foo/%2e%2" but got "http://example.com/foo/.%2"
+FAIL Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> assert_equals: href expected "http://example.com/%2e.bar" but got "http://example.com/..bar"
+PASS Parsing: <http://example.com////../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Parsing: <http://example.com/foo> against <about:blank> 
+PASS Parsing: <http://example.com/%20foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo%> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2©zbar> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%41%7a> against <about:blank> assert_equals: href expected "http://example.com/foo%41%7a" but got "http://example.com/fooAz"
+PASS Parsing: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%00%51> against <about:blank> Failed to construct 'URL': Invalid URL
+PASS Parsing: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Parsing: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Parsing: <http://example.com/foo	bar> against <about:blank> 
+PASS Parsing: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Parsing: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Parsing: <http://example.com/@asdf%40> against <about:blank> 
+PASS Parsing: <http://example.com/你好你好> against <about:blank> 
+PASS Parsing: <http://example.com/‥/foo> against <about:blank> 
+PASS Parsing: <http://example.com//foo> against <about:blank> 
+PASS Parsing: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Parsing: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+FAIL Parsing: <http://www.google.com/foo?bar=baz# »> against <about:blank> assert_equals: href expected "http://www.google.com/foo?bar=baz# %C2%BB" but got "http://www.google.com/foo?bar=baz# »"
+PASS Parsing: <data:test# »> against <about:blank> 
+PASS Parsing: <http://www.google.com> against <about:blank> 
+PASS Parsing: <http://192.0x00A80001> against <about:blank> 
+FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo%2Ehtml" but got "http://www/foo.html"
+PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 
+PASS Parsing: <http://user:pass@/> against <about:blank> 
+PASS Parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 
+PASS Parsing: <http://foo:80/> against <about:blank> 
+PASS Parsing: <http://foo:81/> against <about:blank> 
+FAIL Parsing: <httpa://foo:80/> against <about:blank> assert_equals: host expected "foo:80" but got ""
+PASS Parsing: <http://foo:-80/> against <about:blank> 
+PASS Parsing: <https://foo:443/> against <about:blank> 
+PASS Parsing: <https://foo:80/> against <about:blank> 
+PASS Parsing: <ftp://foo:21/> against <about:blank> 
+PASS Parsing: <ftp://foo:80/> against <about:blank> 
+PASS Parsing: <gopher://foo:70/> against <about:blank> 
+PASS Parsing: <gopher://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:80/> against <about:blank> 
+PASS Parsing: <ws://foo:81/> against <about:blank> 
+PASS Parsing: <ws://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:815/> against <about:blank> 
+PASS Parsing: <wss://foo:80/> against <about:blank> 
+PASS Parsing: <wss://foo:81/> against <about:blank> 
+PASS Parsing: <wss://foo:443/> against <about:blank> 
+PASS Parsing: <wss://foo:815/> against <about:blank> 
+PASS Parsing: <http:/example.com/> against <about:blank> 
+PASS Parsing: <ftp:/example.com/> against <about:blank> 
+PASS Parsing: <https:/example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:/example.com/> against <about:blank> 
+PASS Parsing: <file:/example.com/> against <about:blank> 
+PASS Parsing: <ftps:/example.com/> against <about:blank> 
+PASS Parsing: <gopher:/example.com/> against <about:blank> 
+PASS Parsing: <ws:/example.com/> against <about:blank> 
+PASS Parsing: <wss:/example.com/> against <about:blank> 
+PASS Parsing: <data:/example.com/> against <about:blank> 
+PASS Parsing: <javascript:/example.com/> against <about:blank> 
+PASS Parsing: <mailto:/example.com/> against <about:blank> 
+PASS Parsing: <http:example.com/> against <about:blank> 
+PASS Parsing: <ftp:example.com/> against <about:blank> 
+PASS Parsing: <https:example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:example.com/> against <about:blank> 
+PASS Parsing: <ftps:example.com/> against <about:blank> 
+PASS Parsing: <gopher:example.com/> against <about:blank> 
+PASS Parsing: <ws:example.com/> against <about:blank> 
+PASS Parsing: <wss:example.com/> against <about:blank> 
+PASS Parsing: <data:example.com/> against <about:blank> 
+PASS Parsing: <javascript:example.com/> against <about:blank> 
+PASS Parsing: <mailto:example.com/> against <about:blank> 
+PASS Parsing: <http:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/@www.example.com> against <about:blank> 
+PASS Parsing: <http://@www.example.com> against <about:blank> 
+PASS Parsing: <http:a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://@pple.com> against <about:blank> 
+PASS Parsing: <http::b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://:b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/:@/www.example.com> against <about:blank> 
+PASS Parsing: <http://user@/www.example.com> against <about:blank> 
+PASS Parsing: <http:@/www.example.com> against <about:blank> 
+PASS Parsing: <http:/@/www.example.com> against <about:blank> 
+PASS Parsing: <http://@/www.example.com> against <about:blank> 
+PASS Parsing: <https:@/www.example.com> against <about:blank> 
+PASS Parsing: <http:a:b@/www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:b@/www.example.com> against <about:blank> 
+PASS Parsing: <http://a:b@/www.example.com> against <about:blank> 
+PASS Parsing: <http::@/www.example.com> against <about:blank> 
+PASS Parsing: <http:a:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://www.@pple.com> against <about:blank> 
+PASS Parsing: <http:@:www.example.com> against <about:blank> 
+PASS Parsing: <http:/@:www.example.com> against <about:blank> 
+PASS Parsing: <http://@:www.example.com> against <about:blank> 
+PASS Parsing: <http://:@www.example.com> against <about:blank> 
+PASS Parsing: </> against <http://www.example.com/test> 
+PASS Parsing: </test.txt> against <http://www.example.com/test> 
+PASS Parsing: <.> against <http://www.example.com/test> 
+PASS Parsing: <..> against <http://www.example.com/test> 
+PASS Parsing: <test.txt> against <http://www.example.com/test> 
+PASS Parsing: <./test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <中/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Parsing: <//www.example2.com> against <http://www.example.com/test> 
+PASS Parsing: <file:...> against <http://www.example.com/test> 
+PASS Parsing: <file:..> against <http://www.example.com/test> 
+PASS Parsing: <file:a> against <http://www.example.com/test> 
+PASS Parsing: <http://ExAmPlE.CoM> against <http://other.com/> 
+FAIL Parsing: <http://example example.com> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <http://Goo%20 goo%7C|.com> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://[]> against <http://other.com/> 
+PASS Parsing: <http://[:]> against <http://other.com/> 
+FAIL Parsing: <http://GOO  goo.com> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Parsing: <http://www.foo。bar.com> against <http://other.com/> 
+PASS Parsing: <http://﷐zyx.com> against <http://other.com/> 
+PASS Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/> 
+PASS Parsing: <https://�> against <about:blank> 
+PASS Parsing: <https://%EF%BF%BD> against <about:blank> 
+FAIL Parsing: <https://x/�?�#�> against <about:blank> assert_equals: href expected "https://x/%EF%BF%BD?%EF%BF%BD#%EF%BF%BD" but got "https://x/%EF%BF%BD?%EF%BF%BD#\ufffd"
+PASS Parsing: <http://Go.com> against <http://other.com/> 
+FAIL Parsing: <http://%41.com> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://%00.com> against <http://other.com/> 
+PASS Parsing: <http://%ef%bc%85%ef%bc%90%ef%bc%90.com> against <http://other.com/> 
+PASS Parsing: <http://你好你好> against <http://other.com/> 
+FAIL Parsing: <https://faß.ExAmPlE/> against <about:blank> assert_equals: href expected "https://xn--fa-hia.example/" but got "https://fass.example/"
+FAIL Parsing: <sc://faß.ExAmPlE/> against <about:blank> assert_equals: host expected "fa%C3%9F.ExAmPlE" but got ""
+PASS Parsing: <http://%zz%66%a.com> against <http://other.com/> 
+PASS Parsing: <http://%25> against <http://other.com/> 
+PASS Parsing: <http://hello%00> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+PASS Parsing: <http://192.168.0.257> against <http://other.com/> 
+PASS Parsing: <http://%3g%78%63%30%2e%30%32%35%30%2E.01> against <http://other.com/> 
+FAIL Parsing: <http://192.168.0.1 hello> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <https://x x:12> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Parsing: <http://./> against <about:blank> 
+PASS Parsing: <http://../> against <about:blank> 
+PASS Parsing: <http://0..0x300/> against <about:blank> 
+PASS Parsing: <http://[www.google.com]/> against <about:blank> 
+PASS Parsing: <http://[google.com]> against <http://other.com/> 
+PASS Parsing: <http://[::1.2.3.4x]> against <http://other.com/> 
+FAIL Parsing: <http://[::1.2.3.]> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <http://[::1.2.]> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <http://[::1.]> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://foo:💩@example.com/bar> against <http://other.com/> 
+PASS Parsing: <#> against <test:test> 
+PASS Parsing: <#x> against <mailto:x@x.com> 
+PASS Parsing: <#x> against <data:,> 
+PASS Parsing: <#x> against <about:blank> 
+PASS Parsing: <#> against <test:test?test> 
+PASS Parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Parsing: </some/path> against <http://user@example.org/smth> 
+PASS Parsing: <> against <http://user:pass@example.org:21/smth> 
+PASS Parsing: </some/path> against <http://user:pass@example.org:21/smth> 
+PASS Parsing: <i> against <sc:sd> 
+PASS Parsing: <i> against <sc:sd/sd> 
+PASS Parsing: <i> against <sc:/pa/pa> 
+FAIL Parsing: <i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/i" but got "///pa/i"
+PASS Parsing: <../i> against <sc:sd> 
+PASS Parsing: <../i> against <sc:sd/sd> 
+PASS Parsing: <../i> against <sc:/pa/pa> 
+FAIL Parsing: <../i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <../i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+PASS Parsing: </i> against <sc:sd> 
+PASS Parsing: </i> against <sc:sd/sd> 
+PASS Parsing: </i> against <sc:/pa/pa> 
+FAIL Parsing: </i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: </i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+PASS Parsing: <?i> against <sc:sd> 
+PASS Parsing: <?i> against <sc:sd/sd> 
+PASS Parsing: <?i> against <sc:/pa/pa> 
+FAIL Parsing: <?i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <?i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+PASS Parsing: <#i> against <sc:sd> 
+PASS Parsing: <#i> against <sc:sd/sd> 
+PASS Parsing: <#i> against <sc:/pa/pa> 
+FAIL Parsing: <#i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <#i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+FAIL Parsing: <about:/../> against <about:blank> assert_equals: href expected "about:/" but got "about:/../"
+FAIL Parsing: <data:/../> against <about:blank> assert_equals: href expected "data:/" but got "data:/../"
+FAIL Parsing: <javascript:/../> against <about:blank> assert_equals: href expected "javascript:/" but got "javascript:/../"
+FAIL Parsing: <mailto:/../> against <about:blank> assert_equals: href expected "mailto:/" but got "mailto:/../"
+FAIL Parsing: <sc://ñ.test/> against <about:blank> assert_equals: host expected "%C3%B1.test" but got ""
+FAIL Parsing: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: host expected "%1F!\"$&'()*+,-.;<=>^_`{|}~" but got ""
+FAIL Parsing: <sc://\0/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc:// /> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://%/> against <about:blank> assert_equals: host expected "%" but got ""
+FAIL Parsing: <sc://@/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://te@s:t@/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://:/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://:12/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://[/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://\/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://]/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+PASS Parsing: <sc:\../> against <about:blank> 
+PASS Parsing: <sc::a@example.net> against <about:blank> 
+PASS Parsing: <wow:%NBD> against <about:blank> 
+PASS Parsing: <wow:%1G> against <about:blank> 
+PASS Parsing: <ftp://example.com%80/> against <about:blank> 
+PASS Parsing: <ftp://example.com%A0/> against <about:blank> 
+PASS Parsing: <https://example.com%80/> against <about:blank> 
+PASS Parsing: <https://example.com%A0/> against <about:blank> 
+PASS Parsing: <ftp://%e2%98%83> against <about:blank> 
+PASS Parsing: <https://%e2%98%83> against <about:blank> 
+PASS Parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Parsing: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Parsing: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <https://example.org/foo/bar> 
+PASS Parsing: <sc:> against <https://example.org/foo/bar> 
+PASS Parsing: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Parsing: <http://192.168.257> against <http://other.com/> 
+PASS Parsing: <http://192.168.257.com> against <http://other.com/> 
+PASS Parsing: <http://256> against <http://other.com/> 
+PASS Parsing: <http://256.com> against <http://other.com/> 
+PASS Parsing: <http://999999999> against <http://other.com/> 
+PASS Parsing: <http://999999999.com> against <http://other.com/> 
+PASS Parsing: <http://10000000000> against <http://other.com/> 
+PASS Parsing: <http://10000000000.com> against <http://other.com/> 
+PASS Parsing: <http://4294967295> against <http://other.com/> 
+PASS Parsing: <http://4294967296> against <http://other.com/> 
+PASS Parsing: <http://0xffffffff> against <http://other.com/> 
+PASS Parsing: <http://0xffffffff1> against <http://other.com/> 
+PASS Parsing: <http://256.256.256.256> against <http://other.com/> 
+PASS Parsing: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Parsing: <https://0x.0x.0> against <about:blank> 
+PASS Parsing: <file:///C%3A/> against <about:blank> 
+PASS Parsing: <file:///C%7C/> against <about:blank> 
+PASS Parsing: <pix/submit.gif> against <file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html> 
+FAIL Parsing: <..> against <file:///C:/> assert_equals: href expected "file:///C:/" but got "file:///"
+PASS Parsing: <..> against <file:///> 
+FAIL Parsing: </> against <file:///C:/a/b> assert_equals: href expected "file:///C:/" but got "file:///"
+FAIL Parsing: <//d:> against <file:///C:/a/b> Failed to construct 'URL': Invalid URL
+FAIL Parsing: <//d:/..> against <file:///C:/a/b> Failed to construct 'URL': Invalid URL
+PASS Parsing: <..> against <file:///ab:/> 
+PASS Parsing: <..> against <file:///1:/> 
+PASS Parsing: <> against <file:///test?test#test> 
+PASS Parsing: <file:> against <file:///test?test#test> 
+PASS Parsing: <?x> against <file:///test?test#test> 
+PASS Parsing: <file:?x> against <file:///test?test#test> 
+PASS Parsing: <#x> against <file:///test?test#test> 
+PASS Parsing: <file:#x> against <file:///test?test#test> 
+PASS Parsing: <file:\\//> against <about:blank> 
+PASS Parsing: <file:\\\\> against <about:blank> 
+PASS Parsing: <file:\\\\?fox> against <about:blank> 
+PASS Parsing: <file:\\\\#guppy> against <about:blank> 
+FAIL Parsing: <file://spider///> against <about:blank> assert_equals: href expected "file://spider/" but got "file://spider///"
+FAIL Parsing: <file:\\localhost//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost//"
+PASS Parsing: <file:///localhost//cat> against <about:blank> 
+PASS Parsing: <file://\/localhost//cat> against <about:blank> 
+FAIL Parsing: <file://localhost//a//../..//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost///"
+PASS Parsing: </////mouse> against <file:///elephant> 
+PASS Parsing: <\//pig> against <file://lion/> 
+FAIL Parsing: <\/localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: <//localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: </..//localhost//pig> against <file://lion/> assert_equals: href expected "file://lion/localhost//pig" but got "file://lion//localhost//pig"
+PASS Parsing: <file://> against <file://ape/> 
+PASS Parsing: </rooibos> against <file://tea/> 
+PASS Parsing: </?chai> against <file://tea/> 
+FAIL Parsing: <C|> against <file://host/dir/file> assert_equals: href expected "file:///C:" but got "file://host/dir/C%7C"
+FAIL Parsing: <C|#> against <file://host/dir/file> assert_equals: href expected "file:///C:#" but got "file://host/dir/C%7C#"
+FAIL Parsing: <C|?> against <file://host/dir/file> assert_equals: href expected "file:///C:?" but got "file://host/dir/C%7C?"
+FAIL Parsing: <C|/> against <file://host/dir/file> assert_equals: href expected "file:///C:/" but got "file://host/dir/C%7C/"
+FAIL Parsing: <C|\> against <file://host/dir/file> assert_equals: href expected "file:///C:/" but got "file://host/dir/C%7C/"
+PASS Parsing: <C> against <file://host/dir/file> 
+FAIL Parsing: <C|a> against <file://host/dir/file> assert_equals: href expected "file://host/dir/C|a" but got "file://host/dir/C%7Ca"
+FAIL Parsing: <file://example.net/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://example.net/C:/"
+FAIL Parsing: <file://1.2.3.4/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://1.2.3.4/C:/"
+FAIL Parsing: <file://[1::8]/C:/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://[1::8]/C:/"
+FAIL Parsing: <file:/C|/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file:///C%7C/"
+FAIL Parsing: <file://C|/> against <about:blank> assert_equals: href expected "file:///C:/" but got "file://c%7C/"
+PASS Parsing: <file:> against <about:blank> 
+PASS Parsing: <file:?q=v> against <about:blank> 
+PASS Parsing: <file:#frag> against <about:blank> 
+PASS Parsing: <http://[1:0::]> against <http://example.net/> 
+PASS Parsing: <http://[0:1:2:3:4:5:6:7:8]> against <http://example.net/> 
+PASS Parsing: <https://[0::0::0]> against <about:blank> 
+PASS Parsing: <https://[0:.0]> against <about:blank> 
+PASS Parsing: <https://[0:0:]> against <about:blank> 
+PASS Parsing: <https://[0:1:2:3:4:5:6:7.0.0.0.1]> against <about:blank> 
+PASS Parsing: <https://[0:1.00.0.0.0]> against <about:blank> 
+PASS Parsing: <https://[0:1.290.0.0.0]> against <about:blank> 
+PASS Parsing: <https://[0:1.23.23]> against <about:blank> 
+PASS Parsing: <http://?> against <about:blank> 
+PASS Parsing: <http://#> against <about:blank> 
+FAIL Parsing: <sc://ñ> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ?x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ#x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <#x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+FAIL Parsing: <?x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+FAIL Parsing: <sc://?> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <sc://#> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <///> against <sc://x/> Failed to construct 'URL': Invalid URL
+FAIL Parsing: <////> against <sc://x/> Failed to construct 'URL': Invalid URL
+FAIL Parsing: <////x/> against <sc://x/> assert_equals: href expected "sc:////x/" but got "sc://x/"
+FAIL Parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: host expected "foobar.com" but got ""
+FAIL Parsing: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: username expected "user" but got ""
+FAIL Parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: host expected "10.10.10.10:7777" but got ""
+FAIL Parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <rsync://foo@host:911/sup> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <git://github.com/foo/bar.git> against <about:blank> assert_equals: host expected "github.com" but got ""
+FAIL Parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: host expected "myserver.com:6999" but got ""
+FAIL Parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: host expected "fw.example.org:9999" but got ""
+FAIL Parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: host expected "localhost:389" but got ""
+FAIL Parsing: <git+https://github.com/foo/bar> against <about:blank> assert_equals: host expected "github.com" but got ""
+PASS Parsing: <urn:ietf:rfc:2648> against <about:blank> 
+PASS Parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank> 
+FAIL Parsing: <non-special://%E2%80%A0/> against <about:blank> assert_equals: host expected "%E2%80%A0" but got ""
+FAIL Parsing: <non-special://H%4fSt/path> against <about:blank> assert_equals: host expected "H%4fSt" but got ""
+FAIL Parsing: <non-special://[1:2:0:0:5:0:0:0]/> against <about:blank> assert_equals: href expected "non-special://[1:2:0:0:5::]/" but got "non-special://[1:2:0:0:5:0:0:0]/"
+FAIL Parsing: <non-special://[1:2:0:0:0:0:0:3]/> against <about:blank> assert_equals: href expected "non-special://[1:2::3]/" but got "non-special://[1:2:0:0:0:0:0:3]/"
+FAIL Parsing: <non-special://[1:2::3]:80/> against <about:blank> assert_equals: host expected "[1:2::3]:80" but got ""
+FAIL Parsing: <non-special://[:80/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <blob:https://example.com:443/> against <about:blank> 
+PASS Parsing: <blob:d3958f5c-0777-0845-9dcf-2cb28783acaf> against <about:blank> 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/url-origin-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/url-origin-expected.txt
new file mode 100644
index 0000000..863219f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/url-origin-expected.txt
@@ -0,0 +1,307 @@
+This is a testharness.js-based test.
+Found 294 tests; 217 PASS, 77 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS Origin parsing: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Origin parsing: <https://test:@test> against <about:blank> 
+PASS Origin parsing: <https://:@test> against <about:blank> 
+FAIL Origin parsing: <non-special://test:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+FAIL Origin parsing: <non-special://:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+PASS Origin parsing: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Origin parsing: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Origin parsing: < foo.com  > against <http://example.org/foo/bar> 
+FAIL Origin parsing: <a:	 foo.com> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "a://"
+PASS Origin parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://f:/c> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <http://f:0/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+FAIL Origin parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+PASS Origin parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Origin parsing: <> against <http://example.org/foo/bar> 
+PASS Origin parsing: <  	> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:a> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:\> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:#> against <http://example.org/foo/bar> 
+PASS Origin parsing: <#> against <http://example.org/foo/bar> 
+PASS Origin parsing: <#/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <#\> against <http://example.org/foo/bar> 
+PASS Origin parsing: <#;?> against <http://example.org/foo/bar> 
+PASS Origin parsing: <?> against <http://example.org/foo/bar> 
+PASS Origin parsing: </> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:23> against <http://example.org/foo/bar> 
+PASS Origin parsing: </:23> against <http://example.org/foo/bar> 
+PASS Origin parsing: <::> against <http://example.org/foo/bar> 
+PASS Origin parsing: <::23> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <foo://> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+PASS Origin parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <foo:/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Origin parsing: <foo:/bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Origin parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Origin parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Origin parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Origin parsing: <c:/foo> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "c://"
+PASS Origin parsing: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Origin parsing: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <https:/example.com/> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Origin parsing: <ftps:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Origin parsing: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <javascript:/example.com/> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <mailto:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Origin parsing: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <https:example.com/> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Origin parsing: <ftps:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Origin parsing: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <javascript:example.com/> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <mailto:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Origin parsing: </a/b/c> against <http://example.org/foo/bar> 
+PASS Origin parsing: </a/ /c> against <http://example.org/foo/bar> 
+PASS Origin parsing: </a%2fc> against <http://example.org/foo/bar> 
+PASS Origin parsing: </a/%2f/c> against <http://example.org/foo/bar> 
+PASS Origin parsing: <#β> against <http://example.org/foo/bar> 
+PASS Origin parsing: <data:text/html,test#test> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <tel:1234567890> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "tel://"
+PASS Origin parsing: <http://example.com/././foo> against <about:blank> 
+PASS Origin parsing: <http://example.com/./.foo> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/.> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/./> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/..bar> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/../../..> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/%2e> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/%2e%2> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 
+PASS Origin parsing: <http://example.com////../..> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo> against <about:blank> 
+PASS Origin parsing: <http://example.com/%20foo> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo%> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo%2> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo%2©zbar> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo%41%7a> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Origin parsing: <http://example.com/foo%00%51> against <about:blank> Failed to construct 'URL': Invalid URL
+PASS Origin parsing: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Origin parsing: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo	bar> against <about:blank> 
+PASS Origin parsing: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Origin parsing: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Origin parsing: <http://example.com/@asdf%40> against <about:blank> 
+PASS Origin parsing: <http://example.com/你好你好> against <about:blank> 
+PASS Origin parsing: <http://example.com/‥/foo> against <about:blank> 
+PASS Origin parsing: <http://example.com//foo> against <about:blank> 
+PASS Origin parsing: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Origin parsing: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+PASS Origin parsing: <http://www.google.com/foo?bar=baz# »> against <about:blank> 
+PASS Origin parsing: <data:test# »> against <about:blank> 
+PASS Origin parsing: <http://www.google.com> against <about:blank> 
+PASS Origin parsing: <http://192.0x00A80001> against <about:blank> 
+PASS Origin parsing: <http://www/foo%2Ehtml> against <about:blank> 
+PASS Origin parsing: <http://www/foo/%2E/html> against <about:blank> 
+PASS Origin parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Origin parsing: <http:\\www.google.com\foo> against <about:blank> 
+PASS Origin parsing: <http://foo:80/> against <about:blank> 
+PASS Origin parsing: <http://foo:81/> against <about:blank> 
+FAIL Origin parsing: <httpa://foo:80/> against <about:blank> assert_equals: origin expected "null" but got "httpa://"
+PASS Origin parsing: <https://foo:443/> against <about:blank> 
+PASS Origin parsing: <https://foo:80/> against <about:blank> 
+PASS Origin parsing: <ftp://foo:21/> against <about:blank> 
+PASS Origin parsing: <ftp://foo:80/> against <about:blank> 
+PASS Origin parsing: <gopher://foo:70/> against <about:blank> 
+PASS Origin parsing: <gopher://foo:443/> against <about:blank> 
+PASS Origin parsing: <ws://foo:80/> against <about:blank> 
+PASS Origin parsing: <ws://foo:81/> against <about:blank> 
+PASS Origin parsing: <ws://foo:443/> against <about:blank> 
+PASS Origin parsing: <ws://foo:815/> against <about:blank> 
+PASS Origin parsing: <wss://foo:80/> against <about:blank> 
+PASS Origin parsing: <wss://foo:81/> against <about:blank> 
+PASS Origin parsing: <wss://foo:443/> against <about:blank> 
+PASS Origin parsing: <wss://foo:815/> against <about:blank> 
+PASS Origin parsing: <http:/example.com/> against <about:blank> 
+PASS Origin parsing: <ftp:/example.com/> against <about:blank> 
+PASS Origin parsing: <https:/example.com/> against <about:blank> 
+FAIL Origin parsing: <madeupscheme:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Origin parsing: <ftps:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Origin parsing: <gopher:/example.com/> against <about:blank> 
+PASS Origin parsing: <ws:/example.com/> against <about:blank> 
+PASS Origin parsing: <wss:/example.com/> against <about:blank> 
+PASS Origin parsing: <data:/example.com/> against <about:blank> 
+PASS Origin parsing: <javascript:/example.com/> against <about:blank> 
+FAIL Origin parsing: <mailto:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Origin parsing: <http:example.com/> against <about:blank> 
+PASS Origin parsing: <ftp:example.com/> against <about:blank> 
+PASS Origin parsing: <https:example.com/> against <about:blank> 
+FAIL Origin parsing: <madeupscheme:example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Origin parsing: <ftps:example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Origin parsing: <gopher:example.com/> against <about:blank> 
+PASS Origin parsing: <ws:example.com/> against <about:blank> 
+PASS Origin parsing: <wss:example.com/> against <about:blank> 
+PASS Origin parsing: <data:example.com/> against <about:blank> 
+PASS Origin parsing: <javascript:example.com/> against <about:blank> 
+FAIL Origin parsing: <mailto:example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Origin parsing: <http:@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:/@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:a:b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:/a:b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://a:b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://@pple.com> against <about:blank> 
+PASS Origin parsing: <http::b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:/:b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://:b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:a:@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:/a:@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://a:@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://www.@pple.com> against <about:blank> 
+PASS Origin parsing: <http://:@www.example.com> against <about:blank> 
+PASS Origin parsing: </> against <http://www.example.com/test> 
+PASS Origin parsing: </test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <.> against <http://www.example.com/test> 
+PASS Origin parsing: <..> against <http://www.example.com/test> 
+PASS Origin parsing: <test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <./test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <../test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <../../test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <中/test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Origin parsing: <//www.example2.com> against <http://www.example.com/test> 
+PASS Origin parsing: <http://ExAmPlE.CoM> against <http://other.com/> 
+PASS Origin parsing: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Origin parsing: <http://www.foo。bar.com> against <http://other.com/> 
+PASS Origin parsing: <https://x/�?�#�> against <about:blank> 
+PASS Origin parsing: <http://Go.com> against <http://other.com/> 
+FAIL Origin parsing: <http://你好你好> against <http://other.com/> assert_equals: origin expected "http://你好你好" but got "http://xn--6qqa088eba"
+FAIL Origin parsing: <https://faß.ExAmPlE/> against <about:blank> assert_equals: origin expected "https://faß.example" but got "https://fass.example"
+PASS Origin parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Origin parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+PASS Origin parsing: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Origin parsing: <http://./> against <about:blank> 
+PASS Origin parsing: <http://../> against <about:blank> 
+PASS Origin parsing: <http://0..0x300/> against <about:blank> 
+PASS Origin parsing: <http://foo:💩@example.com/bar> against <http://other.com/> 
+FAIL Origin parsing: <#> against <test:test> assert_equals: origin expected "null" but got "test://"
+FAIL Origin parsing: <#x> against <mailto:x@x.com> assert_equals: origin expected "null" but got "mailto://"
+PASS Origin parsing: <#x> against <data:,> 
+PASS Origin parsing: <#x> against <about:blank> 
+FAIL Origin parsing: <#> against <test:test?test> assert_equals: origin expected "null" but got "test://"
+PASS Origin parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Origin parsing: <https://@@@example> against <http://doesnotmatter/> 
+PASS Origin parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Origin parsing: </some/path> against <http://user@example.org/smth> 
+PASS Origin parsing: <> against <http://user:pass@example.org:21/smth> 
+PASS Origin parsing: </some/path> against <http://user:pass@example.org:21/smth> 
+FAIL Origin parsing: <i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <../i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <../i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <../i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: </i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: </i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: </i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <?i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <?i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <?i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#i> against <sc:sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#i> against <sc:sd/sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Origin parsing: <about:/../> against <about:blank> 
+PASS Origin parsing: <data:/../> against <about:blank> 
+PASS Origin parsing: <javascript:/../> against <about:blank> 
+FAIL Origin parsing: <mailto:/../> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+FAIL Origin parsing: <sc://ñ.test/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+FAIL Origin parsing: <sc:\../> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <sc::a@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <wow:%NBD> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Origin parsing: <wow:%1G> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Origin parsing: <ftp://%e2%98%83> against <about:blank> assert_equals: origin expected "ftp://☃" but got "ftp://xn--n3h"
+FAIL Origin parsing: <https://%e2%98%83> against <about:blank> assert_equals: origin expected "https://☃" but got "https://xn--n3h"
+PASS Origin parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Origin parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Origin parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Origin parsing: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Origin parsing: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Origin parsing: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http:> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <sc:> against <https://example.org/foo/bar> assert_equals: origin expected "null" but got "sc://"
+PASS Origin parsing: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Origin parsing: <http://192.168.257> against <http://other.com/> 
+PASS Origin parsing: <http://192.168.257.com> against <http://other.com/> 
+PASS Origin parsing: <http://256> against <http://other.com/> 
+PASS Origin parsing: <http://256.com> against <http://other.com/> 
+PASS Origin parsing: <http://999999999> against <http://other.com/> 
+PASS Origin parsing: <http://999999999.com> against <http://other.com/> 
+PASS Origin parsing: <http://10000000000.com> against <http://other.com/> 
+PASS Origin parsing: <http://4294967295> against <http://other.com/> 
+PASS Origin parsing: <http://0xffffffff> against <http://other.com/> 
+PASS Origin parsing: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Origin parsing: <https://0x.0x.0> against <about:blank> 
+PASS Origin parsing: <http://[1:0::]> against <http://example.net/> 
+FAIL Origin parsing: <sc://ñ> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <sc://ñ?x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <sc://ñ#x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+FAIL Origin parsing: <?x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+FAIL Origin parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: origin expected "null" but got "tftp://"
+FAIL Origin parsing: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: origin expected "null" but got "telnet://"
+FAIL Origin parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: origin expected "null" but got "ut2004://"
+FAIL Origin parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: origin expected "null" but got "redis://"
+FAIL Origin parsing: <rsync://foo@host:911/sup> against <about:blank> assert_equals: origin expected "null" but got "rsync://"
+FAIL Origin parsing: <git://github.com/foo/bar.git> against <about:blank> assert_equals: origin expected "null" but got "git://"
+FAIL Origin parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: origin expected "null" but got "irc://"
+FAIL Origin parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: origin expected "null" but got "dns://"
+FAIL Origin parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: origin expected "null" but got "ldap://"
+FAIL Origin parsing: <git+https://github.com/foo/bar> against <about:blank> assert_equals: origin expected "null" but got "git+https://"
+FAIL Origin parsing: <urn:ietf:rfc:2648> against <about:blank> assert_equals: origin expected "null" but got "urn://"
+FAIL Origin parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank> assert_equals: origin expected "null" but got "tag://"
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/url-setters-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/url-setters-expected.txt
new file mode 100644
index 0000000..96b43a3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/url/url-setters-expected.txt
@@ -0,0 +1,596 @@
+This is a testharness.js-based test.
+Found 571 tests; 272 PASS, 299 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS URL: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged. 
+PASS <a>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged. 
+PASS <area>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged. 
+PASS URL: Setting <a://example.net>.protocol = 'b' 
+PASS <a>: Setting <a://example.net>.protocol = 'b' 
+PASS <area>: Setting <a://example.net>.protocol = 'b' 
+PASS URL: Setting <javascript:alert(1)>.protocol = 'defuse' 
+PASS <a>: Setting <javascript:alert(1)>.protocol = 'defuse' 
+PASS <area>: Setting <javascript:alert(1)>.protocol = 'defuse' 
+PASS URL: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased 
+PASS <a>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased 
+PASS <area>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased 
+PASS URL: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected 
+PASS <a>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected 
+PASS <area>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected 
+PASS URL: Setting <a://example.net>.protocol = '0b' No leading digit 
+PASS <a>: Setting <a://example.net>.protocol = '0b' No leading digit 
+PASS <area>: Setting <a://example.net>.protocol = '0b' No leading digit 
+PASS URL: Setting <a://example.net>.protocol = '+b' No leading punctuation 
+PASS <a>: Setting <a://example.net>.protocol = '+b' No leading punctuation 
+PASS <area>: Setting <a://example.net>.protocol = '+b' No leading punctuation 
+PASS URL: Setting <a://example.net>.protocol = 'bC0+-.' 
+PASS <a>: Setting <a://example.net>.protocol = 'bC0+-.' 
+PASS <area>: Setting <a://example.net>.protocol = 'bC0+-.' 
+PASS URL: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable 
+PASS <a>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable 
+PASS <area>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable 
+PASS URL: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected 
+PASS <a>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected 
+PASS <area>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected 
+FAIL URL: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to file assert_equals: expected "http://test@example.net/" but got "file://test%40example.net/"
+FAIL <a>: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to file assert_equals: expected "http://test@example.net/" but got "file://test%40example.net/"
+FAIL <area>: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to file assert_equals: expected "http://test@example.net/" but got "file://test%40example.net/"
+FAIL URL: Setting <gopher://example.net:1234>.protocol = 'file' assert_equals: expected "gopher://example.net:1234/" but got "file://example.net:1234/"
+FAIL <a>: Setting <gopher://example.net:1234>.protocol = 'file' assert_equals: expected "gopher://example.net:1234/" but got "file://example.net:1234/"
+FAIL <area>: Setting <gopher://example.net:1234>.protocol = 'file' assert_equals: expected "gopher://example.net:1234/" but got "file://example.net:1234/"
+FAIL URL: Setting <wss://x:x@example.net:1234>.protocol = 'file' assert_equals: expected "wss://x:x@example.net:1234/" but got "file://x:x%40example.net:1234/"
+FAIL <a>: Setting <wss://x:x@example.net:1234>.protocol = 'file' assert_equals: expected "wss://x:x@example.net:1234/" but got "file://x:x%40example.net:1234/"
+FAIL <area>: Setting <wss://x:x@example.net:1234>.protocol = 'file' assert_equals: expected "wss://x:x@example.net:1234/" but got "file://x:x%40example.net:1234/"
+FAIL URL: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host assert_equals: expected "file:///" but got "http://localhost/"
+FAIL <a>: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host assert_equals: expected "file:///" but got "http://localhost/"
+FAIL <area>: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host assert_equals: expected "file:///" but got "http://localhost/"
+FAIL URL: Setting <file:///test>.protocol = 'gopher' assert_equals: expected "file:///test" but got "gopher://test/"
+FAIL <a>: Setting <file:///test>.protocol = 'gopher' assert_equals: expected "file:///test" but got "gopher://test/"
+FAIL <area>: Setting <file:///test>.protocol = 'gopher' assert_equals: expected "file:///test" but got "gopher://test/"
+FAIL URL: Setting <file:>.protocol = 'wss' assert_equals: expected "file:///" but got "wss:"
+FAIL <a>: Setting <file:>.protocol = 'wss' assert_equals: expected "file:///" but got "wss:"
+FAIL <area>: Setting <file:>.protocol = 'wss' assert_equals: expected "file:///" but got "wss:"
+FAIL URL: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special assert_equals: expected "http://example.net/" but got "b://example.net/"
+FAIL <a>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special assert_equals: expected "http://example.net/" but got "b://example.net/"
+FAIL <area>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special assert_equals: expected "http://example.net/" but got "b://example.net/"
+FAIL URL: Setting <file://hi/path>.protocol = 's' assert_equals: expected "file://hi/path" but got "s://hi/path"
+FAIL <a>: Setting <file://hi/path>.protocol = 's' assert_equals: expected "file://hi/path" but got "s://hi/path"
+FAIL <area>: Setting <file://hi/path>.protocol = 's' assert_equals: expected "file://hi/path" but got "s://hi/path"
+FAIL URL: Setting <https://example.net>.protocol = 's' assert_equals: expected "https://example.net/" but got "s://example.net/"
+FAIL <a>: Setting <https://example.net>.protocol = 's' assert_equals: expected "https://example.net/" but got "s://example.net/"
+FAIL <area>: Setting <https://example.net>.protocol = 's' assert_equals: expected "https://example.net/" but got "s://example.net/"
+FAIL URL: Setting <ftp://example.net>.protocol = 'test' assert_equals: expected "ftp://example.net/" but got "test://example.net/"
+FAIL <a>: Setting <ftp://example.net>.protocol = 'test' assert_equals: expected "ftp://example.net/" but got "test://example.net/"
+FAIL <area>: Setting <ftp://example.net>.protocol = 'test' assert_equals: expected "ftp://example.net/" but got "test://example.net/"
+FAIL URL: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must. assert_equals: expected "mailto:me@example.net" but got "http://me@example.net/"
+FAIL <a>: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must. assert_equals: expected "mailto:me@example.net" but got "http://me@example.net/"
+FAIL <area>: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must. assert_equals: expected "mailto:me@example.net" but got "http://me@example.net/"
+FAIL URL: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special assert_equals: expected "ssh://me@example.net" but got "http://me@example.net/"
+FAIL <a>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special assert_equals: expected "ssh://me@example.net" but got "http://me@example.net/"
+FAIL <area>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special assert_equals: expected "ssh://me@example.net" but got "http://me@example.net/"
+FAIL URL: Setting <ssh://me@example.net>.protocol = 'gopher' assert_equals: expected "ssh://me@example.net" but got "gopher://me@example.net/"
+FAIL <a>: Setting <ssh://me@example.net>.protocol = 'gopher' assert_equals: expected "ssh://me@example.net" but got "gopher://me@example.net/"
+FAIL <area>: Setting <ssh://me@example.net>.protocol = 'gopher' assert_equals: expected "ssh://me@example.net" but got "gopher://me@example.net/"
+FAIL URL: Setting <ssh://me@example.net>.protocol = 'file' assert_equals: expected "ssh://me@example.net" but got "file://me%40example.net/"
+FAIL <a>: Setting <ssh://me@example.net>.protocol = 'file' assert_equals: expected "ssh://me@example.net" but got "file://me%40example.net/"
+FAIL <area>: Setting <ssh://me@example.net>.protocol = 'file' assert_equals: expected "ssh://me@example.net" but got "file://me%40example.net/"
+FAIL URL: Setting <ssh://example.net>.protocol = 'file' assert_equals: expected "ssh://example.net" but got "file://example.net/"
+FAIL <a>: Setting <ssh://example.net>.protocol = 'file' assert_equals: expected "ssh://example.net" but got "file://example.net/"
+FAIL <area>: Setting <ssh://example.net>.protocol = 'file' assert_equals: expected "ssh://example.net" but got "file://example.net/"
+FAIL URL: Setting <nonsense:///test>.protocol = 'https' assert_equals: expected "nonsense:///test" but got "https://test/"
+FAIL <a>: Setting <nonsense:///test>.protocol = 'https' assert_equals: expected "nonsense:///test" but got "https://test/"
+FAIL <area>: Setting <nonsense:///test>.protocol = 'https' assert_equals: expected "nonsense:///test" but got "https://test/"
+PASS URL: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored 
+PASS <a>: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored 
+PASS <area>: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored 
+PASS URL: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored 
+PASS <a>: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored 
+PASS <area>: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored 
+PASS URL: Setting <file:///home/you/index.html>.username = 'me' No host means no username 
+PASS <a>: Setting <file:///home/you/index.html>.username = 'me' No host means no username 
+PASS <area>: Setting <file:///home/you/index.html>.username = 'me' No host means no username 
+PASS URL: Setting <unix:/run/foo.socket>.username = 'me' No host means no username 
+PASS <a>: Setting <unix:/run/foo.socket>.username = 'me' No host means no username 
+PASS <area>: Setting <unix:/run/foo.socket>.username = 'me' No host means no username 
+PASS URL: Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username 
+PASS <a>: Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username 
+PASS <area>: Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username 
+PASS URL: Setting <javascript:alert(1)>.username = 'wario' 
+PASS <a>: Setting <javascript:alert(1)>.username = 'wario' 
+PASS <area>: Setting <javascript:alert(1)>.username = 'wario' 
+PASS URL: Setting <http://example.net>.username = 'me' 
+PASS <a>: Setting <http://example.net>.username = 'me' 
+PASS <area>: Setting <http://example.net>.username = 'me' 
+PASS URL: Setting <http://:secret@example.net>.username = 'me' 
+PASS <a>: Setting <http://:secret@example.net>.username = 'me' 
+PASS <area>: Setting <http://:secret@example.net>.username = 'me' 
+PASS URL: Setting <http://me@example.net>.username = '' 
+PASS <a>: Setting <http://me@example.net>.username = '' 
+PASS <area>: Setting <http://me@example.net>.username = '' 
+PASS URL: Setting <http://me:secret@example.net>.username = '' 
+PASS <a>: Setting <http://me:secret@example.net>.username = '' 
+PASS <area>: Setting <http://me:secret@example.net>.username = '' 
+FAIL URL: Setting <http://example.net>.username = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+FAIL <a>: Setting <http://example.net>.username = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+FAIL <area>: Setting <http://example.net>.username = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+PASS URL: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS <a>: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS <area>: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS URL: Setting <sc:///>.username = 'x' 
+PASS <a>: Setting <sc:///>.username = 'x' 
+PASS <area>: Setting <sc:///>.username = 'x' 
+FAIL URL: Setting <javascript://x/>.username = 'wario' assert_equals: expected "javascript://wario@x/" but got "javascript://x/"
+FAIL <a>: Setting <javascript://x/>.username = 'wario' assert_equals: expected "javascript://wario@x/" but got "javascript://x/"
+FAIL <area>: Setting <javascript://x/>.username = 'wario' assert_equals: expected "javascript://wario@x/" but got "javascript://x/"
+PASS URL: Setting <file://test/>.username = 'test' 
+PASS <a>: Setting <file://test/>.username = 'test' 
+PASS <area>: Setting <file://test/>.username = 'test' 
+PASS URL: Setting <file:///home/me/index.html>.password = 'secret' No host means no password 
+PASS <a>: Setting <file:///home/me/index.html>.password = 'secret' No host means no password 
+PASS <area>: Setting <file:///home/me/index.html>.password = 'secret' No host means no password 
+PASS URL: Setting <unix:/run/foo.socket>.password = 'secret' No host means no password 
+PASS <a>: Setting <unix:/run/foo.socket>.password = 'secret' No host means no password 
+PASS <area>: Setting <unix:/run/foo.socket>.password = 'secret' No host means no password 
+PASS URL: Setting <mailto:me@example.net>.password = 'secret' Cannot-be-a-base means no password 
+PASS <a>: Setting <mailto:me@example.net>.password = 'secret' Cannot-be-a-base means no password 
+PASS <area>: Setting <mailto:me@example.net>.password = 'secret' Cannot-be-a-base means no password 
+PASS URL: Setting <http://example.net>.password = 'secret' 
+PASS <a>: Setting <http://example.net>.password = 'secret' 
+PASS <area>: Setting <http://example.net>.password = 'secret' 
+PASS URL: Setting <http://me@example.net>.password = 'secret' 
+PASS <a>: Setting <http://me@example.net>.password = 'secret' 
+PASS <area>: Setting <http://me@example.net>.password = 'secret' 
+PASS URL: Setting <http://:secret@example.net>.password = '' 
+PASS <a>: Setting <http://:secret@example.net>.password = '' 
+PASS <area>: Setting <http://:secret@example.net>.password = '' 
+PASS URL: Setting <http://me:secret@example.net>.password = '' 
+PASS <a>: Setting <http://me:secret@example.net>.password = '' 
+PASS <area>: Setting <http://me:secret@example.net>.password = '' 
+FAIL URL: Setting <http://example.net>.password = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://:%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://:%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+FAIL <a>: Setting <http://example.net>.password = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://:%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://:%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+FAIL <area>: Setting <http://example.net>.password = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://:%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://:%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+PASS URL: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS <a>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS <area>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS URL: Setting <sc:///>.password = 'x' 
+PASS <a>: Setting <sc:///>.password = 'x' 
+PASS <area>: Setting <sc:///>.password = 'x' 
+FAIL URL: Setting <javascript://x/>.password = 'bowser' assert_equals: expected "javascript://:bowser@x/" but got "javascript://x/"
+FAIL <a>: Setting <javascript://x/>.password = 'bowser' assert_equals: expected "javascript://:bowser@x/" but got "javascript://x/"
+FAIL <area>: Setting <javascript://x/>.password = 'bowser' assert_equals: expected "javascript://:bowser@x/" but got "javascript://x/"
+PASS URL: Setting <file://test/>.password = 'test' 
+PASS <a>: Setting <file://test/>.password = 'test' 
+PASS <area>: Setting <file://test/>.password = 'test' 
+FAIL URL: Setting <sc://x/>.host = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.host = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.host = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL URL: Setting <sc://x/>.host = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = ' ' assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.host = ' ' assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.host = ' ' assert_equals: expected "x" but got ""
+FAIL URL: Setting <sc://x/>.host = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = '@' assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.host = '@' assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.host = '@' assert_equals: expected "x" but got ""
+FAIL URL: Setting <sc://x/>.host = 'ß' assert_equals: expected "sc://%C3%9F/" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = 'ß' assert_equals: expected "sc://%C3%9F/" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = 'ß' assert_equals: expected "sc://%C3%9F/" but got "sc://x/"
+FAIL URL: Setting <https://x/>.host = 'ß' IDNA Nontransitional_Processing assert_equals: expected "https://xn--zca/" but got "https://ss/"
+FAIL <a>: Setting <https://x/>.host = 'ß' IDNA Nontransitional_Processing assert_equals: expected "https://xn--zca/" but got "https://ss/"
+FAIL <area>: Setting <https://x/>.host = 'ß' IDNA Nontransitional_Processing assert_equals: expected "https://xn--zca/" but got "https://ss/"
+PASS URL: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host 
+PASS <a>: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host 
+PASS <area>: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host 
+PASS URL: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no password 
+PASS <a>: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no password 
+PASS <area>: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no password 
+PASS URL: Setting <http://example.net>.host = 'example.com:8080' 
+PASS <a>: Setting <http://example.net>.host = 'example.com:8080' 
+PASS <area>: Setting <http://example.net>.host = 'example.com:8080' 
+PASS URL: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new value 
+PASS <a>: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new value 
+PASS <area>: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new value 
+FAIL URL: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specified assert_equals: expected "http://example.com:8080/" but got "http://example.com:0/"
+FAIL <a>: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specified assert_equals: expected "http://example.com:8080/" but got "http://example.com:0/"
+FAIL <area>: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specified assert_equals: expected "http://example.com:8080/" but got "http://example.com:0/"
+PASS URL: Setting <http://example.net>.host = '' The empty host is not valid for special schemes 
+PASS <a>: Setting <http://example.net>.host = '' The empty host is not valid for special schemes 
+PASS <area>: Setting <http://example.net>.host = '' The empty host is not valid for special schemes 
+FAIL URL: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL <a>: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL <area>: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL URL: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "a:/foo"
+FAIL <a>: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "a:/foo"
+FAIL <area>: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "a:/foo"
+PASS URL: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized 
+PASS <a>: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized 
+PASS <area>: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized 
+FAIL URL: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalized assert_equals: expected "http://[::1]:2/" but got "http://[:0/"
+FAIL <a>: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalized assert_equals: expected "http://[::1]:2/" but got "http://[:0/"
+FAIL <area>: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalized assert_equals: expected "http://[::1]:2/" but got "http://[:0/"
+PASS URL: Setting <http://example.net>.host = 'example.com:80' Default port number is removed 
+PASS <a>: Setting <http://example.net>.host = 'example.com:80' Default port number is removed 
+PASS <area>: Setting <http://example.net>.host = 'example.com:80' Default port number is removed 
+PASS URL: Setting <https://example.net>.host = 'example.com:443' Default port number is removed 
+PASS <a>: Setting <https://example.net>.host = 'example.com:443' Default port number is removed 
+PASS <area>: Setting <https://example.net>.host = 'example.com:443' Default port number is removed 
+PASS URL: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant scheme 
+PASS <a>: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant scheme 
+PASS <area>: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant scheme 
+FAIL URL: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+FAIL <a>: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+FAIL <area>: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored 
+FAIL URL: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+FAIL <a>: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+FAIL <area>: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored 
+FAIL URL: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+FAIL <a>: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+FAIL <area>: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored 
+FAIL URL: Setting <http://example.net/path>.host = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+FAIL <a>: Setting <http://example.net/path>.host = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+FAIL <area>: Setting <http://example.net/path>.host = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+FAIL URL: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL <a>: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL <area>: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL URL: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.com:8080/path" but got "view-source+http://example.net/path"
+FAIL <a>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.com:8080/path" but got "view-source+http://example.net/path"
+FAIL <area>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.com:8080/path" but got "view-source+http://example.net/path"
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS URL: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integers 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integers 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integers 
+FAIL URL: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though. assert_equals: expected "http://example.com/path" but got "http://example.com:65536/path"
+FAIL <a>: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though. assert_equals: expected "http://example.com/path" but got "http://example.com:65536/path"
+FAIL <area>: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though. assert_equals: expected "http://example.com/path" but got "http://example.com:65536/path"
+FAIL URL: Setting <http://example.net/>.host = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL <a>: Setting <http://example.net/>.host = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL <area>: Setting <http://example.net/>.host = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL URL: Setting <http://example.net/>.host = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <a>: Setting <http://example.net/>.host = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <area>: Setting <http://example.net/>.host = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL URL: Setting <http://example.net/>.host = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <a>: Setting <http://example.net/>.host = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <area>: Setting <http://example.net/>.host = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL URL: Setting <http://example.net/>.host = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <a>: Setting <http://example.net/>.host = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <area>: Setting <http://example.net/>.host = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL URL: Setting <http://example.net/>.host = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <a>: Setting <http://example.net/>.host = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <area>: Setting <http://example.net/>.host = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL URL: Setting <file://y/>.host = 'x:123' assert_equals: expected "file://y/" but got "file://x/"
+FAIL <a>: Setting <file://y/>.host = 'x:123' assert_equals: expected "file://y/" but got "file://x/"
+FAIL <area>: Setting <file://y/>.host = 'x:123' assert_equals: expected "file://y/" but got "file://x/"
+FAIL URL: Setting <file://y/>.host = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <a>: Setting <file://y/>.host = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <area>: Setting <file://y/>.host = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL URL: Setting <file://hi/x>.host = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL <a>: Setting <file://hi/x>.host = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL <area>: Setting <file://hi/x>.host = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL URL: Setting <sc://test@test/>.host = '' assert_equals: expected "test" but got ""
+FAIL <a>: Setting <sc://test@test/>.host = '' assert_equals: expected "test" but got ""
+FAIL <area>: Setting <sc://test@test/>.host = '' assert_equals: expected "test" but got ""
+FAIL URL: Setting <sc://test:12/>.host = '' assert_equals: expected "test:12" but got ""
+FAIL <a>: Setting <sc://test:12/>.host = '' assert_equals: expected "test:12" but got ""
+FAIL <area>: Setting <sc://test:12/>.host = '' assert_equals: expected "test:12" but got ""
+FAIL URL: Setting <sc://x/>.hostname = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.hostname = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.hostname = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL URL: Setting <sc://x/>.hostname = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = ' ' assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.hostname = ' ' assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.hostname = ' ' assert_equals: expected "x" but got ""
+FAIL URL: Setting <sc://x/>.hostname = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = '@' assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.hostname = '@' assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.hostname = '@' assert_equals: expected "x" but got ""
+PASS URL: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host 
+PASS <a>: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host 
+PASS <area>: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host 
+PASS URL: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no password 
+PASS <a>: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no password 
+PASS <area>: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no password 
+PASS URL: Setting <http://example.net:8080>.hostname = 'example.com' 
+PASS <a>: Setting <http://example.net:8080>.hostname = 'example.com' 
+PASS <area>: Setting <http://example.net:8080>.hostname = 'example.com' 
+PASS URL: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemes 
+PASS <a>: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemes 
+PASS <area>: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemes 
+FAIL URL: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL <a>: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL <area>: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL URL: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "a:/foo"
+FAIL <a>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "a:/foo"
+FAIL <area>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "a:/foo"
+PASS URL: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalized 
+PASS <a>: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalized 
+PASS <area>: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalized 
+PASS URL: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized 
+PASS <a>: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized 
+PASS <area>: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized 
+FAIL URL: Setting <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com:8080/path"
+FAIL <a>: Setting <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com:8080/path"
+FAIL <area>: Setting <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com:8080/path"
+FAIL URL: Setting <http://example.net:8080/path>.hostname = 'example.com:' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com:8080/path" but got "http://example.com::8080/path"
+FAIL <a>: Setting <http://example.net:8080/path>.hostname = 'example.com:' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com:8080/path" but got "http://example.com::8080/path"
+FAIL <area>: Setting <http://example.net:8080/path>.hostname = 'example.com:' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com:8080/path" but got "http://example.com::8080/path"
+FAIL URL: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+FAIL <a>: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+FAIL <area>: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+FAIL URL: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+FAIL <a>: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+FAIL <area>: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+FAIL URL: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+FAIL <a>: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+FAIL <area>: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+FAIL URL: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+FAIL <a>: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+FAIL <area>: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+FAIL URL: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL <a>: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL <area>: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL URL: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL <a>: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL <area>: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL URL: Setting <http://example.net/>.hostname = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[::1.2.3.4x]/"
+FAIL <a>: Setting <http://example.net/>.hostname = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[::1.2.3.4x]/"
+FAIL <area>: Setting <http://example.net/>.hostname = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[::1.2.3.4x]/"
+FAIL URL: Setting <http://example.net/>.hostname = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[::102:3]/"
+FAIL <a>: Setting <http://example.net/>.hostname = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[::102:3]/"
+FAIL <area>: Setting <http://example.net/>.hostname = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[::102:3]/"
+FAIL URL: Setting <http://example.net/>.hostname = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[::100:2]/"
+FAIL <a>: Setting <http://example.net/>.hostname = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[::100:2]/"
+FAIL <area>: Setting <http://example.net/>.hostname = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[::100:2]/"
+FAIL URL: Setting <http://example.net/>.hostname = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[::1]/"
+FAIL <a>: Setting <http://example.net/>.hostname = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[::1]/"
+FAIL <area>: Setting <http://example.net/>.hostname = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[::1]/"
+FAIL URL: Setting <file://y/>.hostname = 'x:123' assert_equals: expected "file://y/" but got "file://x:123/"
+FAIL <a>: Setting <file://y/>.hostname = 'x:123' assert_equals: expected "file://y/" but got "file://x:123/"
+FAIL <area>: Setting <file://y/>.hostname = 'x:123' assert_equals: expected "file://y/" but got "file://x:123/"
+FAIL URL: Setting <file://y/>.hostname = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <a>: Setting <file://y/>.hostname = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <area>: Setting <file://y/>.hostname = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL URL: Setting <file://hi/x>.hostname = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL <a>: Setting <file://hi/x>.hostname = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL <area>: Setting <file://hi/x>.hostname = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL URL: Setting <sc://test@test/>.hostname = '' assert_equals: expected "test" but got ""
+FAIL <a>: Setting <sc://test@test/>.hostname = '' assert_equals: expected "test" but got ""
+FAIL <area>: Setting <sc://test@test/>.hostname = '' assert_equals: expected "test" but got ""
+FAIL URL: Setting <sc://test:12/>.hostname = '' assert_equals: expected "test:12" but got ""
+FAIL <a>: Setting <sc://test:12/>.hostname = '' assert_equals: expected "test:12" but got ""
+FAIL <area>: Setting <sc://test:12/>.hostname = '' assert_equals: expected "test:12" but got ""
+PASS URL: Setting <http://example.net>.port = '8080' 
+PASS <a>: Setting <http://example.net>.port = '8080' 
+PASS <area>: Setting <http://example.net>.port = '8080' 
+FAIL URL: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value assert_equals: expected "http://example.net/" but got "http://example.net:0/"
+FAIL <a>: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value assert_equals: expected "http://example.net/" but got "http://example.net:0/"
+FAIL <area>: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value assert_equals: expected "http://example.net/" but got "http://example.net:0/"
+PASS URL: Setting <http://example.net:8080>.port = '80' Default port number is removed 
+PASS <a>: Setting <http://example.net:8080>.port = '80' Default port number is removed 
+PASS <area>: Setting <http://example.net:8080>.port = '80' Default port number is removed 
+PASS URL: Setting <https://example.net:4433>.port = '443' Default port number is removed 
+PASS <a>: Setting <https://example.net:4433>.port = '443' Default port number is removed 
+PASS <area>: Setting <https://example.net:4433>.port = '443' Default port number is removed 
+PASS URL: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant scheme 
+PASS <a>: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant scheme 
+PASS <area>: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant scheme 
+PASS URL: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignored 
+PASS URL: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignored 
+PASS URL: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignored 
+PASS URL: Setting <http://example.net/path>.port = '8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+PASS <a>: Setting <http://example.net/path>.port = '8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+PASS <area>: Setting <http://example.net/path>.port = '8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+FAIL URL: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.net:8080/path" but got "view-source+http://example.net/path"
+FAIL <a>: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.net:8080/path" but got "view-source+http://example.net/path"
+FAIL <area>: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.net:8080/path" but got "view-source+http://example.net/path"
+PASS URL: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <a>: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <area>: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS URL: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <a>: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <area>: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS URL: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers 
+PASS <a>: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers 
+PASS <area>: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers 
+FAIL URL: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "http://example.net:8080/path" but got "http://example.net:0/path"
+FAIL <a>: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "http://example.net:8080/path" but got "http://example.net:0/path"
+FAIL <area>: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "http://example.net:8080/path" but got "http://example.net:0/path"
+FAIL URL: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "example.net:8080" but got ""
+FAIL <a>: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "example.net:8080" but got ""
+FAIL <area>: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "example.net:8080" but got ""
+PASS URL: Setting <file://test/>.port = '12' 
+PASS <a>: Setting <file://test/>.port = '12' 
+PASS <area>: Setting <file://test/>.port = '12' 
+FAIL URL: Setting <file://localhost/>.port = '12' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <a>: Setting <file://localhost/>.port = '12' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <area>: Setting <file://localhost/>.port = '12' assert_equals: expected "file:///" but got "file://localhost/"
+PASS URL: Setting <non-base:value>.port = '12' 
+PASS <a>: Setting <non-base:value>.port = '12' 
+PASS <area>: Setting <non-base:value>.port = '12' 
+PASS URL: Setting <sc:///>.port = '12' 
+PASS <a>: Setting <sc:///>.port = '12' 
+PASS <area>: Setting <sc:///>.port = '12' 
+FAIL URL: Setting <sc://x/>.port = '12' assert_equals: expected "sc://x:12/" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.port = '12' assert_equals: expected "sc://x:12/" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.port = '12' assert_equals: expected "sc://x:12/" but got "sc://x/"
+FAIL URL: Setting <javascript://x/>.port = '12' assert_equals: expected "javascript://x:12/" but got "javascript://x/"
+FAIL <a>: Setting <javascript://x/>.port = '12' assert_equals: expected "javascript://x:12/" but got "javascript://x/"
+FAIL <area>: Setting <javascript://x/>.port = '12' assert_equals: expected "javascript://x:12/" but got "javascript://x/"
+PASS URL: Setting <mailto:me@example.net>.pathname = '/foo' Cannot-be-a-base don’t have a path 
+PASS <a>: Setting <mailto:me@example.net>.pathname = '/foo' Cannot-be-a-base don’t have a path 
+PASS <area>: Setting <mailto:me@example.net>.pathname = '/foo' Cannot-be-a-base don’t have a path 
+FAIL URL: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket' assert_equals: expected "unix:/var/run/bar.socket?timeout=10" but got "unix:/run/foo.socket?timeout=10"
+FAIL <a>: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket' assert_equals: expected "unix:/var/run/bar.socket?timeout=10" but got "unix:/run/foo.socket?timeout=10"
+FAIL <area>: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket' assert_equals: expected "unix:/var/run/bar.socket?timeout=10" but got "unix:/run/foo.socket?timeout=10"
+PASS URL: Setting <https://example.net#nav>.pathname = 'home' 
+PASS <a>: Setting <https://example.net#nav>.pathname = 'home' 
+PASS <area>: Setting <https://example.net#nav>.pathname = 'home' 
+PASS URL: Setting <https://example.net#nav>.pathname = '../home' 
+PASS <a>: Setting <https://example.net#nav>.pathname = '../home' 
+PASS <area>: Setting <https://example.net#nav>.pathname = '../home' 
+PASS URL: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLs 
+PASS <a>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLs 
+PASS <area>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLs 
+FAIL URL: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is *not* a segment delimiter for non-'special' URLs assert_equals: expected "view-source+http://example.net/\\a\%2E\b\%2e.\c?lang=fr#nav" but got "view-source+http://example.net/home?lang=fr#nav"
+FAIL <a>: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is *not* a segment delimiter for non-'special' URLs assert_equals: expected "view-source+http://example.net/\\a\%2E\b\%2e.\c?lang=fr#nav" but got "view-source+http://example.net/home?lang=fr#nav"
+FAIL <area>: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is *not* a segment delimiter for non-'special' URLs assert_equals: expected "view-source+http://example.net/\\a\%2E\b\%2e.\c?lang=fr#nav" but got "view-source+http://example.net/home?lang=fr#nav"
+FAIL URL: Setting <a:/>.pathname = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed. assert_equals: expected "a:/%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E%3F@AZ[\\]^_%60az%7B|%7D~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/"
+FAIL <a>: Setting <a:/>.pathname = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed. assert_equals: expected "a:/%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E%3F@AZ[\\]^_%60az%7B|%7D~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/"
+FAIL <area>: Setting <a:/>.pathname = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed. assert_equals: expected "a:/%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E%3F@AZ[\\]^_%60az%7B|%7D~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/"
+FAIL URL: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments. assert_equals: expected "http://example.net/%2e%2E%c3%89t%C3%A9" but got "http://example.net/..%c3%89t%C3%A9"
+FAIL <a>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments. assert_equals: expected "http://example.net/%2e%2E%c3%89t%C3%A9" but got "http://example.net/..%c3%89t%C3%A9"
+FAIL <area>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments. assert_equals: expected "http://example.net/%2e%2E%c3%89t%C3%A9" but got "http://example.net/..%c3%89t%C3%A9"
+PASS URL: Setting <http://example.net>.pathname = '?' ? needs to be encoded 
+PASS <a>: Setting <http://example.net>.pathname = '?' ? needs to be encoded 
+PASS <area>: Setting <http://example.net>.pathname = '?' ? needs to be encoded 
+PASS URL: Setting <http://example.net>.pathname = '#' # needs to be encoded 
+PASS <a>: Setting <http://example.net>.pathname = '#' # needs to be encoded 
+PASS <area>: Setting <http://example.net>.pathname = '#' # needs to be encoded 
+FAIL URL: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%3F" but got "sc://example.net"
+FAIL <a>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%3F" but got "sc://example.net"
+FAIL <area>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%3F" but got "sc://example.net"
+FAIL URL: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%23" but got "sc://example.net"
+FAIL <a>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%23" but got "sc://example.net"
+FAIL <area>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%23" but got "sc://example.net"
+FAIL URL: Setting <file://monkey/>.pathname = '\\' File URLs and (back)slashes assert_equals: expected "file://monkey/" but got "file://monkey//"
+FAIL <a>: Setting <file://monkey/>.pathname = '\\' File URLs and (back)slashes assert_equals: expected "file://monkey/" but got "file://monkey//"
+FAIL <area>: Setting <file://monkey/>.pathname = '\\' File URLs and (back)slashes assert_equals: expected "file://monkey/" but got "file://monkey//"
+FAIL URL: Setting <file:///unicorn>.pathname = '//\/' File URLs and (back)slashes assert_equals: expected "file:///" but got "file://////"
+PASS <a>: Setting <file:///unicorn>.pathname = '//\/' File URLs and (back)slashes 
+PASS <area>: Setting <file:///unicorn>.pathname = '//\/' File URLs and (back)slashes 
+FAIL URL: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes assert_equals: expected "file:///" but got "file://///"
+PASS <a>: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes 
+PASS <area>: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes 
+PASS URL: Setting <https://example.net#nav>.search = 'lang=fr' 
+PASS <a>: Setting <https://example.net#nav>.search = 'lang=fr' 
+PASS <area>: Setting <https://example.net#nav>.search = 'lang=fr' 
+PASS URL: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr' 
+PASS URL: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr' 
+PASS URL: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr' 
+FAIL URL: Setting <https://example.net?lang=en-US#nav>.search = '?' assert_equals: expected "https://example.net/?#nav" but got "https://example.net/#nav"
+FAIL <a>: Setting <https://example.net?lang=en-US#nav>.search = '?' assert_equals: expected "https://example.net/?#nav" but got "https://example.net/#nav"
+FAIL <area>: Setting <https://example.net?lang=en-US#nav>.search = '?' assert_equals: expected "https://example.net/?#nav" but got "https://example.net/#nav"
+PASS URL: Setting <https://example.net?lang=en-US#nav>.search = '' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.search = '' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.search = '' 
+PASS URL: Setting <https://example.net?lang=en-US>.search = '' 
+PASS <a>: Setting <https://example.net?lang=en-US>.search = '' 
+PASS <area>: Setting <https://example.net?lang=en-US>.search = '' 
+PASS URL: Setting <https://example.net>.search = '' 
+PASS <a>: Setting <https://example.net>.search = '' 
+PASS <area>: Setting <https://example.net>.search = '' 
+FAIL URL: Setting <a:/>.search = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed. assert_equals: expected "a:/?%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/?%00%01%09%0A%0D%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%C2%80%C2%81%C3%89%C3%A9"
+FAIL <a>: Setting <a:/>.search = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed. assert_equals: expected "a:/?%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/?%00%01%09%0A%0D%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%C2%80%C2%81%C3%89%C3%A9"
+FAIL <area>: Setting <a:/>.search = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed. assert_equals: expected "a:/?%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/?%00%01%09%0A%0D%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%C2%80%C2%81%C3%89%C3%A9"
+PASS URL: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-is 
+PASS <a>: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-is 
+PASS <area>: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-is 
+PASS URL: Setting <https://example.net>.hash = 'main' 
+PASS <a>: Setting <https://example.net>.hash = 'main' 
+PASS <area>: Setting <https://example.net>.hash = 'main' 
+PASS URL: Setting <https://example.net#nav>.hash = 'main' 
+PASS <a>: Setting <https://example.net#nav>.hash = 'main' 
+PASS <area>: Setting <https://example.net#nav>.hash = 'main' 
+PASS URL: Setting <https://example.net?lang=en-US>.hash = '##nav' 
+PASS <a>: Setting <https://example.net?lang=en-US>.hash = '##nav' 
+PASS <area>: Setting <https://example.net?lang=en-US>.hash = '##nav' 
+PASS URL: Setting <https://example.net?lang=en-US#nav>.hash = '#main' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.hash = '#main' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.hash = '#main' 
+FAIL URL: Setting <https://example.net?lang=en-US#nav>.hash = '#' assert_equals: expected "https://example.net/?lang=en-US#" but got "https://example.net/?lang=en-US"
+FAIL <a>: Setting <https://example.net?lang=en-US#nav>.hash = '#' assert_equals: expected "https://example.net/?lang=en-US#" but got "https://example.net/?lang=en-US"
+FAIL <area>: Setting <https://example.net?lang=en-US#nav>.hash = '#' assert_equals: expected "https://example.net/?lang=en-US#" but got "https://example.net/?lang=en-US"
+PASS URL: Setting <https://example.net?lang=en-US#nav>.hash = '' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.hash = '' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.hash = '' 
+FAIL URL: Setting <a:/>.hash = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Simple percent-encoding; nuls, tabs, and newlines are removed assert_equals: expected "a:/#%01%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/#%00%01%09%0A%0D%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%C2%80%C2%81%C3%89%C3%A9"
+FAIL <a>: Setting <a:/>.hash = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Simple percent-encoding; nuls, tabs, and newlines are removed assert_equals: expected "a:/#%01%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/#%00%01%09%0A%0D%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%C2%80%C2%81%C3%89%C3%A9"
+FAIL <area>: Setting <a:/>.hash = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Simple percent-encoding; nuls, tabs, and newlines are removed assert_equals: expected "a:/#%01%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "a:/#%00%01%09%0A%0D%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%C2%80%C2%81%C3%89%C3%A9"
+FAIL URL: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is assert_equals: expected "http://example.net/#%c3%89t%C3%A9" but got "http://example.net/#%c3%89té"
+FAIL <a>: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is assert_equals: expected "http://example.net/#%c3%89t%C3%A9" but got "http://example.net/#%c3%89té"
+FAIL <area>: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is assert_equals: expected "http://example.net/#%c3%89t%C3%A9" but got "http://example.net/#%c3%89té"
+PASS URL: Setting <javascript:alert(1)>.hash = 'castle' 
+PASS <a>: Setting <javascript:alert(1)>.hash = 'castle' 
+PASS <area>: Setting <javascript:alert(1)>.hash = 'castle' 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/gradients/crash-on-zero-radius-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/gradients/crash-on-zero-radius-expected.txt
index a575569..785aed9 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/gradients/crash-on-zero-radius-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/gradients/crash-on-zero-radius-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
 layer at (0,0) size 800x600
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/gradients/generated-gradients-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/gradients/generated-gradients-expected.txt
index 0e441cd..6be0ccd 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/gradients/generated-gradients-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/gradients/generated-gradients-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
 layer at (0,0) size 800x600
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/gradients/radial-centered-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/gradients/radial-centered-expected.txt
index 0cc2994..0166e3c0 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/gradients/radial-centered-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/gradients/radial-centered-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
 layer at (0,0) size 800x600
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/gradients/simple-gradients-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/gradients/simple-gradients-expected.txt
index 21ec109..07d1a08 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/gradients/simple-gradients-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/gradients/simple-gradients-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
 layer at (0,0) size 800x600
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt
new file mode 100644
index 0000000..97296481
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt
@@ -0,0 +1 @@
+This test passes if it does not CRASH.
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt
@@ -0,0 +1 @@
+
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt
new file mode 100644
index 0000000..75cf4f3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt
@@ -0,0 +1 @@
+This should not crash.  
diff --git a/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/a-element-expected.txt b/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/a-element-expected.txt
new file mode 100644
index 0000000..aa856e2b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/a-element-expected.txt
@@ -0,0 +1,486 @@
+This is a testharness.js-based test.
+Found 473 tests; 302 PASS, 171 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS Parsing: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Parsing: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Parsing: <https://test:@test> against <about:blank> 
+PASS Parsing: <https://:@test> against <about:blank> 
+FAIL Parsing: <non-special://test:@test/x> against <about:blank> assert_equals: href expected "non-special://test@test/x" but got "non-special://test:@test/x"
+FAIL Parsing: <non-special://:@test/x> against <about:blank> assert_equals: href expected "non-special://test/x" but got "non-special://:@test/x"
+PASS Parsing: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Parsing: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Parsing: < foo.com  > against <http://example.org/foo/bar> 
+FAIL Parsing: <a:	 foo.com> against <http://example.org/foo/bar> assert_equals: href expected "a: foo.com" but got "file:///A:/%20foo.com"
+PASS Parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing: <lolscheme:x x#x x> against <about:blank> 
+PASS Parsing: <http://f:/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:0/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:b/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <http://f: /c> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://f: /c" but got "http://f:%20/c"
+PASS Parsing: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:fifty-two/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:999999/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <non-special://f:999999/c> against <http://example.org/foo/bar> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://f: 21 / b ? d # e > against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://f: 21 / b ? d # e " but got "http://f:%2021%20/%20b%20?%20d%20# e"
+PASS Parsing: <> against <http://example.org/foo/bar> 
+PASS Parsing: <  	> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <:> against <http://example.org/foo/bar> 
+PASS Parsing: <:a> against <http://example.org/foo/bar> 
+PASS Parsing: <:/> against <http://example.org/foo/bar> 
+PASS Parsing: <:\> against <http://example.org/foo/bar> 
+PASS Parsing: <:#> against <http://example.org/foo/bar> 
+PASS Parsing: <#> against <http://example.org/foo/bar> 
+PASS Parsing: <#/> against <http://example.org/foo/bar> 
+PASS Parsing: <#\> against <http://example.org/foo/bar> 
+PASS Parsing: <#;?> against <http://example.org/foo/bar> 
+PASS Parsing: <?> against <http://example.org/foo/bar> 
+PASS Parsing: </> against <http://example.org/foo/bar> 
+PASS Parsing: <:23> against <http://example.org/foo/bar> 
+PASS Parsing: </:23> against <http://example.org/foo/bar> 
+PASS Parsing: <::> against <http://example.org/foo/bar> 
+PASS Parsing: <::23> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://> against <http://example.org/foo/bar> assert_equals: pathname expected "" but got "//"
+PASS Parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Parsing: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/bar.com/> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: pathname expected "///////" but got "/////////"
+FAIL Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: pathname expected "///////bar.com/" but got "/////////bar.com/"
+FAIL Parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: pathname expected "//://///" but got "////://///"
+FAIL Parsing: <c:/foo> against <http://example.org/foo/bar> assert_equals: href expected "c:/foo" but got "file:///C:/foo"
+PASS Parsing: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Parsing: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Parsing: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+FAIL Parsing: <http://[1::2]:3:4> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://[1::2]:3:4" but got "http://[1::2]:3:4/"
+FAIL Parsing: <http://2001::1> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1" but got "http://2001::1/"
+FAIL Parsing: <http://2001::1]> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1]" but got "http://2001::1]/"
+FAIL Parsing: <http://2001::1]:80> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1]:80" but got "http://2001::1]/"
+PASS Parsing: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing: <file:/example.com/> against <http://example.org/foo/bar> assert_equals: href expected "file:///example.com/" but got "file://example.com/"
+PASS Parsing: <file://example:1/> against <about:blank> 
+PASS Parsing: <file://example:test/> against <about:blank> 
+FAIL Parsing: <file://example%/> against <about:blank> assert_equals: failure should set href to input expected "file://example%/" but got "file://example%25/"
+PASS Parsing: <file://[example]/> against <about:blank> 
+PASS Parsing: <ftps:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftps:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: </a/b/c> against <http://example.org/foo/bar> 
+PASS Parsing: </a/ /c> against <http://example.org/foo/bar> 
+PASS Parsing: </a%2fc> against <http://example.org/foo/bar> 
+PASS Parsing: </a/%2f/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <#β> against <http://example.org/foo/bar> assert_equals: href expected "http://example.org/foo/bar#%CE%B2" but got "http://example.org/foo/bar#β"
+PASS Parsing: <data:text/html,test#test> against <http://example.org/foo/bar> 
+PASS Parsing: <tel:1234567890> against <http://example.org/foo/bar> 
+FAIL Parsing: <file:c:\foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:/foo/bar.html" but got "file:///C:/foo/bar.html"
+FAIL Parsing: <  File:c|////foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:////foo/bar.html" but got "file:///C:////foo/bar.html"
+PASS Parsing: <C|/foo/bar> against <file:///tmp/mock/path> 
+PASS Parsing: </C|\foo\bar> against <file:///tmp/mock/path> 
+PASS Parsing: <//C|/foo/bar> against <file:///tmp/mock/path> 
+PASS Parsing: <//server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <\\server\file> against <file:///tmp/mock/path> 
+PASS Parsing: </\server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///foo/bar.txt> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///home/me> against <file:///tmp/mock/path> 
+PASS Parsing: <//> against <file:///tmp/mock/path> 
+PASS Parsing: <///> against <file:///tmp/mock/path> 
+PASS Parsing: <///test> against <file:///tmp/mock/path> 
+PASS Parsing: <file://test> against <file:///tmp/mock/path> 
+FAIL Parsing: <file://localhost> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/test> against <file:///tmp/mock/path> assert_equals: href expected "file:///test" but got "file://localhost/test"
+PASS Parsing: <test> against <file:///tmp/mock/path> 
+PASS Parsing: <file:test> against <file:///tmp/mock/path> 
+PASS Parsing: <http://example.com/././foo> against <about:blank> 
+PASS Parsing: <http://example.com/./.foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo/.> against <about:blank> 
+PASS Parsing: <http://example.com/foo/./> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Parsing: <http://example.com/foo/..bar> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 
+FAIL Parsing: <http://example.com/foo/%2e%2> against <about:blank> assert_equals: href expected "http://example.com/foo/%2e%2" but got "http://example.com/foo/.%2"
+FAIL Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> assert_equals: href expected "http://example.com/%2e.bar" but got "http://example.com/..bar"
+PASS Parsing: <http://example.com////../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Parsing: <http://example.com/foo> against <about:blank> 
+PASS Parsing: <http://example.com/%20foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo%> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2©zbar> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%41%7a> against <about:blank> assert_equals: href expected "http://example.com/foo%41%7a" but got "http://example.com/fooAz"
+PASS Parsing: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%00%51> against <about:blank> assert_equals: href expected "http://example.com/foo%00%51" but got "http://example.com/foo%00Q"
+PASS Parsing: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Parsing: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Parsing: <http://example.com/foo	bar> against <about:blank> 
+PASS Parsing: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Parsing: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Parsing: <http://example.com/@asdf%40> against <about:blank> 
+PASS Parsing: <http://example.com/你好你好> against <about:blank> 
+PASS Parsing: <http://example.com/‥/foo> against <about:blank> 
+PASS Parsing: <http://example.com//foo> against <about:blank> 
+PASS Parsing: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Parsing: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+FAIL Parsing: <http://www.google.com/foo?bar=baz# »> against <about:blank> assert_equals: href expected "http://www.google.com/foo?bar=baz# %C2%BB" but got "http://www.google.com/foo?bar=baz# »"
+PASS Parsing: <data:test# »> against <about:blank> 
+PASS Parsing: <http://www.google.com> against <about:blank> 
+PASS Parsing: <http://192.0x00A80001> against <about:blank> 
+FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo%2Ehtml" but got "http://www/foo.html"
+PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 
+PASS Parsing: <http://user:pass@/> against <about:blank> 
+PASS Parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 
+PASS Parsing: <http://foo:80/> against <about:blank> 
+PASS Parsing: <http://foo:81/> against <about:blank> 
+FAIL Parsing: <httpa://foo:80/> against <about:blank> assert_equals: host expected "foo:80" but got ""
+PASS Parsing: <http://foo:-80/> against <about:blank> 
+PASS Parsing: <https://foo:443/> against <about:blank> 
+PASS Parsing: <https://foo:80/> against <about:blank> 
+PASS Parsing: <ftp://foo:21/> against <about:blank> 
+PASS Parsing: <ftp://foo:80/> against <about:blank> 
+PASS Parsing: <gopher://foo:70/> against <about:blank> 
+PASS Parsing: <gopher://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:80/> against <about:blank> 
+PASS Parsing: <ws://foo:81/> against <about:blank> 
+PASS Parsing: <ws://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:815/> against <about:blank> 
+PASS Parsing: <wss://foo:80/> against <about:blank> 
+PASS Parsing: <wss://foo:81/> against <about:blank> 
+PASS Parsing: <wss://foo:443/> against <about:blank> 
+PASS Parsing: <wss://foo:815/> against <about:blank> 
+PASS Parsing: <http:/example.com/> against <about:blank> 
+PASS Parsing: <ftp:/example.com/> against <about:blank> 
+PASS Parsing: <https:/example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:/example.com/> against <about:blank> 
+FAIL Parsing: <file:/example.com/> against <about:blank> assert_equals: href expected "file:///example.com/" but got "file://example.com/"
+PASS Parsing: <ftps:/example.com/> against <about:blank> 
+PASS Parsing: <gopher:/example.com/> against <about:blank> 
+PASS Parsing: <ws:/example.com/> against <about:blank> 
+PASS Parsing: <wss:/example.com/> against <about:blank> 
+PASS Parsing: <data:/example.com/> against <about:blank> 
+PASS Parsing: <javascript:/example.com/> against <about:blank> 
+PASS Parsing: <mailto:/example.com/> against <about:blank> 
+PASS Parsing: <http:example.com/> against <about:blank> 
+PASS Parsing: <ftp:example.com/> against <about:blank> 
+PASS Parsing: <https:example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:example.com/> against <about:blank> 
+PASS Parsing: <ftps:example.com/> against <about:blank> 
+PASS Parsing: <gopher:example.com/> against <about:blank> 
+PASS Parsing: <ws:example.com/> against <about:blank> 
+PASS Parsing: <wss:example.com/> against <about:blank> 
+PASS Parsing: <data:example.com/> against <about:blank> 
+PASS Parsing: <javascript:example.com/> against <about:blank> 
+PASS Parsing: <mailto:example.com/> against <about:blank> 
+PASS Parsing: <http:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/@www.example.com> against <about:blank> 
+PASS Parsing: <http://@www.example.com> against <about:blank> 
+PASS Parsing: <http:a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://@pple.com> against <about:blank> 
+PASS Parsing: <http::b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://:b@www.example.com> against <about:blank> 
+FAIL Parsing: <http:/:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/:@/www.example.com" but got "http:///www.example.com"
+PASS Parsing: <http://user@/www.example.com> against <about:blank> 
+FAIL Parsing: <http:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <http:/@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <http://@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http://@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <https:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "https:@/www.example.com" but got "https:///www.example.com"
+FAIL Parsing: <http:a:b@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:a:b@/www.example.com" but got "http://a:b@/www.example.com"
+FAIL Parsing: <http:/a:b@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/a:b@/www.example.com" but got "http://a:b@/www.example.com"
+PASS Parsing: <http://a:b@/www.example.com> against <about:blank> 
+FAIL Parsing: <http::@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http::@/www.example.com" but got "http:///www.example.com"
+PASS Parsing: <http:a:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://www.@pple.com> against <about:blank> 
+FAIL Parsing: <http:@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:@:www.example.com" but got "http://:www.example.com/"
+FAIL Parsing: <http:/@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/@:www.example.com" but got "http://:www.example.com/"
+FAIL Parsing: <http://@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http://@:www.example.com" but got "http://:www.example.com/"
+PASS Parsing: <http://:@www.example.com> against <about:blank> 
+PASS Parsing: </> against <http://www.example.com/test> 
+PASS Parsing: </test.txt> against <http://www.example.com/test> 
+PASS Parsing: <.> against <http://www.example.com/test> 
+PASS Parsing: <..> against <http://www.example.com/test> 
+PASS Parsing: <test.txt> against <http://www.example.com/test> 
+PASS Parsing: <./test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <中/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Parsing: <//www.example2.com> against <http://www.example.com/test> 
+FAIL Parsing: <file:...> against <http://www.example.com/test> assert_equals: href expected "file:///..." but got "file://.../"
+FAIL Parsing: <file:..> against <http://www.example.com/test> assert_equals: href expected "file:///" but got "file://../"
+FAIL Parsing: <file:a> against <http://www.example.com/test> assert_equals: href expected "file:///a" but got "file://a/"
+PASS Parsing: <http://ExAmPlE.CoM> against <http://other.com/> 
+FAIL Parsing: <http://example example.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://Goo%20 goo%7C|.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[]" but got "http://[]/"
+FAIL Parsing: <http://[:]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[:]" but got "http://[:]/"
+FAIL Parsing: <http://GOO  goo.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Parsing: <http://www.foo。bar.com> against <http://other.com/> 
+FAIL Parsing: <http://﷐zyx.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://﷐zyx.com" but got "http://%EF%BF%BDzyx.com/"
+FAIL Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%ef%b7%90zyx.com" but got "http://%EF%BF%BDzyx.com/"
+FAIL Parsing: <https://�> against <about:blank> assert_equals: failure should set href to input expected "https://\ufffd" but got "https://%EF%BF%BD/"
+FAIL Parsing: <https://%EF%BF%BD> against <about:blank> assert_equals: failure should set href to input expected "https://%EF%BF%BD" but got "https://%EF%BF%BD/"
+FAIL Parsing: <https://x/�?�#�> against <about:blank> assert_equals: href expected "https://x/%EF%BF%BD?%EF%BF%BD#%EF%BF%BD" but got "https://x/%EF%BF%BD?%EF%BF%BD#\ufffd"
+PASS Parsing: <http://Go.com> against <http://other.com/> 
+FAIL Parsing: <http://%41.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://%00.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%00.com" but got "http://%00.com/"
+FAIL Parsing: <http://%ef%bc%85%ef%bc%90%ef%bc%90.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%ef%bc%85%ef%bc%90%ef%bc%90.com" but got "http://%00.com/"
+PASS Parsing: <http://你好你好> against <http://other.com/> 
+FAIL Parsing: <https://faß.ExAmPlE/> against <about:blank> assert_equals: href expected "https://xn--fa-hia.example/" but got "https://fass.example/"
+FAIL Parsing: <sc://faß.ExAmPlE/> against <about:blank> assert_equals: host expected "fa%C3%9F.ExAmPlE" but got ""
+FAIL Parsing: <http://%zz%66%a.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%zz%66%a.com" but got "http://%25zzf%25a.com/"
+FAIL Parsing: <http://%25> against <http://other.com/> assert_equals: failure should set href to input expected "http://%25" but got "http://%25/"
+FAIL Parsing: <http://hello%00> against <http://other.com/> assert_equals: failure should set href to input expected "http://hello%00" but got "http://hello%00/"
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+FAIL Parsing: <http://192.168.0.257> against <http://other.com/> assert_equals: failure should set href to input expected "http://192.168.0.257" but got "http://192.168.0.257/"
+FAIL Parsing: <http://%3g%78%63%30%2e%30%32%35%30%2E.01> against <http://other.com/> assert_equals: failure should set href to input expected "http://%3g%78%63%30%2e%30%32%35%30%2E.01" but got "http://%253gxc0.0250..01/"
+FAIL Parsing: <http://192.168.0.1 hello> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <https://x x:12> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Parsing: <http://./> against <about:blank> 
+PASS Parsing: <http://../> against <about:blank> 
+PASS Parsing: <http://0..0x300/> against <about:blank> 
+PASS Parsing: <http://[www.google.com]/> against <about:blank> 
+FAIL Parsing: <http://[google.com]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[google.com]" but got "http://[google.com]/"
+FAIL Parsing: <http://[::1.2.3.4x]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[::1.2.3.4x]" but got "http://[::1.2.3.4x]/"
+FAIL Parsing: <http://[::1.2.3.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[::1.2.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[::1.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://foo:💩@example.com/bar> against <http://other.com/> 
+PASS Parsing: <#> against <test:test> 
+PASS Parsing: <#x> against <mailto:x@x.com> 
+FAIL Parsing: <#x> against <data:,> assert_equals: href expected "data:,#x" but got "mailto:x@x.com#x"
+PASS Parsing: <#x> against <about:blank> 
+PASS Parsing: <#> against <test:test?test> 
+PASS Parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Parsing: </some/path> against <http://user@example.org/smth> 
+PASS Parsing: <> against <http://user:pass@example.org:21/smth> 
+PASS Parsing: </some/path> against <http://user:pass@example.org:21/smth> 
+FAIL Parsing: <i> against <sc:sd> assert_equals: failure should set href to input expected "i" but got ""
+FAIL Parsing: <i> against <sc:sd/sd> assert_equals: failure should set href to input expected "i" but got ""
+PASS Parsing: <i> against <sc:/pa/pa> 
+FAIL Parsing: <i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/i" but got "///pa/i"
+FAIL Parsing: <../i> against <sc:sd> assert_equals: failure should set href to input expected "../i" but got ""
+FAIL Parsing: <../i> against <sc:sd/sd> assert_equals: failure should set href to input expected "../i" but got ""
+PASS Parsing: <../i> against <sc:/pa/pa> 
+FAIL Parsing: <../i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <../i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+FAIL Parsing: </i> against <sc:sd> assert_equals: failure should set href to input expected "/i" but got ""
+FAIL Parsing: </i> against <sc:sd/sd> assert_equals: failure should set href to input expected "/i" but got ""
+PASS Parsing: </i> against <sc:/pa/pa> 
+FAIL Parsing: </i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: </i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+FAIL Parsing: <?i> against <sc:sd> assert_equals: failure should set href to input expected "?i" but got ""
+FAIL Parsing: <?i> against <sc:sd/sd> assert_equals: failure should set href to input expected "?i" but got ""
+PASS Parsing: <?i> against <sc:/pa/pa> 
+FAIL Parsing: <?i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <?i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+PASS Parsing: <#i> against <sc:sd> 
+PASS Parsing: <#i> against <sc:sd/sd> 
+PASS Parsing: <#i> against <sc:/pa/pa> 
+FAIL Parsing: <#i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <#i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+FAIL Parsing: <about:/../> against <about:blank> assert_equals: href expected "about:/" but got "about:/../"
+FAIL Parsing: <data:/../> against <about:blank> assert_equals: href expected "data:/" but got "data:/../"
+FAIL Parsing: <javascript:/../> against <about:blank> assert_equals: href expected "javascript:/" but got "javascript:/../"
+FAIL Parsing: <mailto:/../> against <about:blank> assert_equals: href expected "mailto:/" but got "mailto:/../"
+FAIL Parsing: <sc://ñ.test/> against <about:blank> assert_equals: host expected "%C3%B1.test" but got ""
+FAIL Parsing: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: host expected "%1F!\"$&'()*+,-.;<=>^_`{|}~" but got ""
+FAIL Parsing: <sc://\0/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc:// /> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://%/> against <about:blank> assert_equals: host expected "%" but got ""
+FAIL Parsing: <sc://@/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://te@s:t@/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://:/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://:12/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://[/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://\/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://]/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1/x" but got "sc://%C3%B1"
+PASS Parsing: <sc:\../> against <about:blank> 
+PASS Parsing: <sc::a@example.net> against <about:blank> 
+PASS Parsing: <wow:%NBD> against <about:blank> 
+PASS Parsing: <wow:%1G> against <about:blank> 
+FAIL Parsing: <ftp://example.com%80/> against <about:blank> assert_equals: failure should set href to input expected "ftp://example.com%80/" but got "ftp://example.com%EF%BF%BD/"
+FAIL Parsing: <ftp://example.com%A0/> against <about:blank> assert_equals: failure should set href to input expected "ftp://example.com%A0/" but got "ftp://example.com%EF%BF%BD/"
+FAIL Parsing: <https://example.com%80/> against <about:blank> assert_equals: failure should set href to input expected "https://example.com%80/" but got "https://example.com%EF%BF%BD/"
+FAIL Parsing: <https://example.com%A0/> against <about:blank> assert_equals: failure should set href to input expected "https://example.com%A0/" but got "https://example.com%EF%BF%BD/"
+PASS Parsing: <ftp://%e2%98%83> against <about:blank> 
+PASS Parsing: <https://%e2%98%83> against <about:blank> 
+PASS Parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Parsing: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Parsing: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <https://example.org/foo/bar> 
+PASS Parsing: <sc:> against <https://example.org/foo/bar> 
+PASS Parsing: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Parsing: <http://192.168.257> against <http://other.com/> 
+PASS Parsing: <http://192.168.257.com> against <http://other.com/> 
+PASS Parsing: <http://256> against <http://other.com/> 
+PASS Parsing: <http://256.com> against <http://other.com/> 
+PASS Parsing: <http://999999999> against <http://other.com/> 
+PASS Parsing: <http://999999999.com> against <http://other.com/> 
+FAIL Parsing: <http://10000000000> against <http://other.com/> assert_equals: failure should set href to input expected "http://10000000000" but got "http://10000000000/"
+PASS Parsing: <http://10000000000.com> against <http://other.com/> 
+PASS Parsing: <http://4294967295> against <http://other.com/> 
+FAIL Parsing: <http://4294967296> against <http://other.com/> assert_equals: failure should set href to input expected "http://4294967296" but got "http://4294967296/"
+PASS Parsing: <http://0xffffffff> against <http://other.com/> 
+FAIL Parsing: <http://0xffffffff1> against <http://other.com/> assert_equals: failure should set href to input expected "http://0xffffffff1" but got "http://0xffffffff1/"
+FAIL Parsing: <http://256.256.256.256> against <http://other.com/> assert_equals: failure should set href to input expected "http://256.256.256.256" but got "http://256.256.256.256/"
+PASS Parsing: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Parsing: <https://0x.0x.0> against <about:blank> 
+PASS Parsing: <file:///C%3A/> against <about:blank> 
+PASS Parsing: <file:///C%7C/> against <about:blank> 
+PASS Parsing: <pix/submit.gif> against <file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html> 
+PASS Parsing: <..> against <file:///C:/> 
+PASS Parsing: <..> against <file:///> 
+PASS Parsing: </> against <file:///C:/a/b> 
+FAIL Parsing: <//d:> against <file:///C:/a/b> assert_equals: href expected "file:///d:" but got "file:///D:/"
+FAIL Parsing: <//d:/..> against <file:///C:/a/b> assert_equals: href expected "file:///d:/" but got "file:///D:/"
+PASS Parsing: <..> against <file:///ab:/> 
+PASS Parsing: <..> against <file:///1:/> 
+PASS Parsing: <> against <file:///test?test#test> 
+PASS Parsing: <file:> against <file:///test?test#test> 
+PASS Parsing: <?x> against <file:///test?test#test> 
+PASS Parsing: <file:?x> against <file:///test?test#test> 
+PASS Parsing: <#x> against <file:///test?test#test> 
+PASS Parsing: <file:#x> against <file:///test?test#test> 
+PASS Parsing: <file:\\//> against <about:blank> 
+PASS Parsing: <file:\\\\> against <about:blank> 
+FAIL Parsing: <file:\\\\?fox> against <about:blank> assert_equals: href expected "file:///?fox" but got "file://%3Ffox/"
+FAIL Parsing: <file:\\\\#guppy> against <about:blank> assert_equals: href expected "file:///#guppy" but got "file://%23guppy/"
+FAIL Parsing: <file://spider///> against <about:blank> assert_equals: href expected "file://spider/" but got "file://spider///"
+FAIL Parsing: <file:\\localhost//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost//"
+PASS Parsing: <file:///localhost//cat> against <about:blank> 
+FAIL Parsing: <file://\/localhost//cat> against <about:blank> assert_equals: href expected "file:///localhost//cat" but got "file://localhost//cat"
+FAIL Parsing: <file://localhost//a//../..//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost///"
+FAIL Parsing: </////mouse> against <file:///elephant> assert_equals: href expected "file:///mouse" but got "file://mouse/"
+PASS Parsing: <\//pig> against <file://lion/> 
+FAIL Parsing: <\/localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: <//localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: </..//localhost//pig> against <file://lion/> assert_equals: href expected "file://lion/localhost//pig" but got "file://lion//localhost//pig"
+PASS Parsing: <file://> against <file://ape/> 
+PASS Parsing: </rooibos> against <file://tea/> 
+PASS Parsing: </?chai> against <file://tea/> 
+FAIL Parsing: <C|> against <file://host/dir/file> assert_equals: href expected "file:///C:" but got "file:///C:/"
+FAIL Parsing: <C|#> against <file://host/dir/file> assert_equals: href expected "file:///C:#" but got "file:///C:/#"
+FAIL Parsing: <C|?> against <file://host/dir/file> assert_equals: href expected "file:///C:?" but got "file:///C:/?"
+PASS Parsing: <C|/> against <file://host/dir/file> 
+PASS Parsing: <C|\> against <file://host/dir/file> 
+PASS Parsing: <C> against <file://host/dir/file> 
+FAIL Parsing: <C|a> against <file://host/dir/file> assert_equals: href expected "file://host/dir/C|a" but got "file:///C:/a"
+PASS Parsing: <file://example.net/C:/> against <about:blank> 
+PASS Parsing: <file://1.2.3.4/C:/> against <about:blank> 
+PASS Parsing: <file://[1::8]/C:/> against <about:blank> 
+PASS Parsing: <file:/C|/> against <about:blank> 
+PASS Parsing: <file://C|/> against <about:blank> 
+PASS Parsing: <file:> against <about:blank> 
+FAIL Parsing: <file:?q=v> against <about:blank> assert_equals: href expected "file:///?q=v" but got "file://%3Fq%3Dv/"
+FAIL Parsing: <file:#frag> against <about:blank> assert_equals: href expected "file:///#frag" but got "file://%23frag/"
+PASS Parsing: <http://[1:0::]> against <http://example.net/> 
+FAIL Parsing: <http://[0:1:2:3:4:5:6:7:8]> against <http://example.net/> assert_equals: failure should set href to input expected "http://[0:1:2:3:4:5:6:7:8]" but got "http://[0:1:2:3:4:5:6:7:8]/"
+FAIL Parsing: <https://[0::0::0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0::0::0]" but got "https://[0::0::0]/"
+FAIL Parsing: <https://[0:.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:.0]" but got "https://[0:.0]/"
+FAIL Parsing: <https://[0:0:]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:0:]" but got "https://[0:0:]/"
+FAIL Parsing: <https://[0:1:2:3:4:5:6:7.0.0.0.1]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1:2:3:4:5:6:7.0.0.0.1]" but got "https://[0:1:2:3:4:5:6:7.0.0.0.1]/"
+FAIL Parsing: <https://[0:1.00.0.0.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.00.0.0.0]" but got "https://[0:1.00.0.0.0]/"
+FAIL Parsing: <https://[0:1.290.0.0.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.290.0.0.0]" but got "https://[0:1.290.0.0.0]/"
+FAIL Parsing: <https://[0:1.23.23]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.23.23]" but got "https://[0:1.23.23]/"
+FAIL Parsing: <http://?> against <about:blank> assert_equals: failure should set href to input expected "http://?" but got "http:/?"
+FAIL Parsing: <http://#> against <about:blank> assert_equals: failure should set href to input expected "http://#" but got "http:/#"
+FAIL Parsing: <sc://ñ> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ?x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ#x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <#x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1#x" but got "sc://%C3%B1"
+FAIL Parsing: <?x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1?x" but got "sc://%C3%B1"
+FAIL Parsing: <sc://?> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <sc://#> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <///> against <sc://x/> assert_equals: href expected "sc:///" but got "sc:"
+FAIL Parsing: <////> against <sc://x/> assert_equals: href expected "sc:////" but got "sc:"
+FAIL Parsing: <////x/> against <sc://x/> assert_equals: href expected "sc:////x/" but got "sc://x/"
+FAIL Parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: host expected "foobar.com" but got ""
+FAIL Parsing: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: username expected "user" but got ""
+FAIL Parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: host expected "10.10.10.10:7777" but got ""
+FAIL Parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <rsync://foo@host:911/sup> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <git://github.com/foo/bar.git> against <about:blank> assert_equals: host expected "github.com" but got ""
+FAIL Parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: host expected "myserver.com:6999" but got ""
+FAIL Parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: host expected "fw.example.org:9999" but got ""
+FAIL Parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: host expected "localhost:389" but got ""
+FAIL Parsing: <git+https://github.com/foo/bar> against <about:blank> assert_equals: host expected "github.com" but got ""
+PASS Parsing: <urn:ietf:rfc:2648> against <about:blank> 
+PASS Parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank> 
+FAIL Parsing: <non-special://%E2%80%A0/> against <about:blank> assert_equals: host expected "%E2%80%A0" but got ""
+FAIL Parsing: <non-special://H%4fSt/path> against <about:blank> assert_equals: host expected "H%4fSt" but got ""
+FAIL Parsing: <non-special://[1:2:0:0:5:0:0:0]/> against <about:blank> assert_equals: href expected "non-special://[1:2:0:0:5::]/" but got "non-special://[1:2:0:0:5:0:0:0]/"
+FAIL Parsing: <non-special://[1:2:0:0:0:0:0:3]/> against <about:blank> assert_equals: href expected "non-special://[1:2::3]/" but got "non-special://[1:2:0:0:0:0:0:3]/"
+FAIL Parsing: <non-special://[1:2::3]:80/> against <about:blank> assert_equals: host expected "[1:2::3]:80" but got ""
+FAIL Parsing: <non-special://[:80/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <blob:https://example.com:443/> against <about:blank> 
+PASS Parsing: <blob:d3958f5c-0777-0845-9dcf-2cb28783acaf> against <about:blank> 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/a-element-origin-expected.txt b/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/a-element-origin-expected.txt
new file mode 100644
index 0000000..664b7f7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/a-element-origin-expected.txt
@@ -0,0 +1,307 @@
+This is a testharness.js-based test.
+Found 294 tests; 219 PASS, 75 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS Parsing origin: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https://test:@test> against <about:blank> 
+PASS Parsing origin: <https://:@test> against <about:blank> 
+FAIL Parsing origin: <non-special://test:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+FAIL Parsing origin: <non-special://:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+PASS Parsing origin: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Parsing origin: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Parsing origin: < foo.com  > against <http://example.org/foo/bar> 
+FAIL Parsing origin: <a:	 foo.com> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "file://"
+PASS Parsing origin: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://f:/c> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <http://f:0/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+FAIL Parsing origin: <http://f:00000000000000/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+PASS Parsing origin: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <> against <http://example.org/foo/bar> 
+PASS Parsing origin: <  	> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:a> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:#> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#;?> against <http://example.org/foo/bar> 
+PASS Parsing origin: <?> against <http://example.org/foo/bar> 
+PASS Parsing origin: </> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:23> against <http://example.org/foo/bar> 
+PASS Parsing origin: </:23> against <http://example.org/foo/bar> 
+PASS Parsing origin: <::> against <http://example.org/foo/bar> 
+PASS Parsing origin: <::23> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <foo://> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+PASS Parsing origin: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <foo:/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo:/bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo://///////> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo:////://///> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <c:/foo> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "file://"
+PASS Parsing origin: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Parsing origin: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https:/example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <madeupscheme:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <javascript:/example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <mailto:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https:example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <madeupscheme:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <javascript:example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <mailto:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: </a/b/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a/ /c> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a%2fc> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a/%2f/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#β> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:text/html,test#test> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <tel:1234567890> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "tel://"
+PASS Parsing origin: <http://example.com/././foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/./.foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/.> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/./> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/..bar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/../../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e%2> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 
+PASS Parsing origin: <http://example.com////../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/%20foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2©zbar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%41%7a> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Parsing origin: <http://example.com/foo%00%51> against <about:blank> assert_equals: origin expected "http://example.com" but got "null"
+PASS Parsing origin: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Parsing origin: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo	bar> against <about:blank> 
+PASS Parsing origin: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Parsing origin: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Parsing origin: <http://example.com/@asdf%40> against <about:blank> 
+PASS Parsing origin: <http://example.com/你好你好> against <about:blank> 
+PASS Parsing origin: <http://example.com/‥/foo> against <about:blank> 
+PASS Parsing origin: <http://example.com//foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Parsing origin: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+PASS Parsing origin: <http://www.google.com/foo?bar=baz# »> against <about:blank> 
+PASS Parsing origin: <data:test# »> against <about:blank> 
+PASS Parsing origin: <http://www.google.com> against <about:blank> 
+PASS Parsing origin: <http://192.0x00A80001> against <about:blank> 
+PASS Parsing origin: <http://www/foo%2Ehtml> against <about:blank> 
+PASS Parsing origin: <http://www/foo/%2E/html> against <about:blank> 
+PASS Parsing origin: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Parsing origin: <http:\\www.google.com\foo> against <about:blank> 
+PASS Parsing origin: <http://foo:80/> against <about:blank> 
+PASS Parsing origin: <http://foo:81/> against <about:blank> 
+FAIL Parsing origin: <httpa://foo:80/> against <about:blank> assert_equals: origin expected "null" but got "httpa://"
+PASS Parsing origin: <https://foo:443/> against <about:blank> 
+PASS Parsing origin: <https://foo:80/> against <about:blank> 
+PASS Parsing origin: <ftp://foo:21/> against <about:blank> 
+PASS Parsing origin: <ftp://foo:80/> against <about:blank> 
+PASS Parsing origin: <gopher://foo:70/> against <about:blank> 
+PASS Parsing origin: <gopher://foo:443/> against <about:blank> 
+PASS Parsing origin: <ws://foo:80/> against <about:blank> 
+PASS Parsing origin: <ws://foo:81/> against <about:blank> 
+PASS Parsing origin: <ws://foo:443/> against <about:blank> 
+PASS Parsing origin: <ws://foo:815/> against <about:blank> 
+PASS Parsing origin: <wss://foo:80/> against <about:blank> 
+PASS Parsing origin: <wss://foo:81/> against <about:blank> 
+PASS Parsing origin: <wss://foo:443/> against <about:blank> 
+PASS Parsing origin: <wss://foo:815/> against <about:blank> 
+PASS Parsing origin: <http:/example.com/> against <about:blank> 
+PASS Parsing origin: <ftp:/example.com/> against <about:blank> 
+PASS Parsing origin: <https:/example.com/> against <about:blank> 
+FAIL Parsing origin: <madeupscheme:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:/example.com/> against <about:blank> 
+PASS Parsing origin: <ws:/example.com/> against <about:blank> 
+PASS Parsing origin: <wss:/example.com/> against <about:blank> 
+PASS Parsing origin: <data:/example.com/> against <about:blank> 
+PASS Parsing origin: <javascript:/example.com/> against <about:blank> 
+FAIL Parsing origin: <mailto:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:example.com/> against <about:blank> 
+PASS Parsing origin: <ftp:example.com/> against <about:blank> 
+PASS Parsing origin: <https:example.com/> against <about:blank> 
+FAIL Parsing origin: <madeupscheme:example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:example.com/> against <about:blank> 
+PASS Parsing origin: <ws:example.com/> against <about:blank> 
+PASS Parsing origin: <wss:example.com/> against <about:blank> 
+PASS Parsing origin: <data:example.com/> against <about:blank> 
+PASS Parsing origin: <javascript:example.com/> against <about:blank> 
+FAIL Parsing origin: <mailto:example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://@pple.com> against <about:blank> 
+PASS Parsing origin: <http::b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://www.@pple.com> against <about:blank> 
+PASS Parsing origin: <http://:@www.example.com> against <about:blank> 
+PASS Parsing origin: </> against <http://www.example.com/test> 
+PASS Parsing origin: </test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <.> against <http://www.example.com/test> 
+PASS Parsing origin: <..> against <http://www.example.com/test> 
+PASS Parsing origin: <test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <./test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../../test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <中/test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Parsing origin: <//www.example2.com> against <http://www.example.com/test> 
+PASS Parsing origin: <http://ExAmPlE.CoM> against <http://other.com/> 
+PASS Parsing origin: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Parsing origin: <http://www.foo。bar.com> against <http://other.com/> 
+PASS Parsing origin: <https://x/�?�#�> against <about:blank> 
+PASS Parsing origin: <http://Go.com> against <http://other.com/> 
+FAIL Parsing origin: <http://你好你好> against <http://other.com/> assert_equals: origin expected "http://你好你好" but got "http://xn--6qqa088eba"
+FAIL Parsing origin: <https://faß.ExAmPlE/> against <about:blank> assert_equals: origin expected "https://faß.example" but got "https://fass.example"
+PASS Parsing origin: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing origin: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+PASS Parsing origin: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Parsing origin: <http://./> against <about:blank> 
+PASS Parsing origin: <http://../> against <about:blank> 
+PASS Parsing origin: <http://0..0x300/> against <about:blank> 
+PASS Parsing origin: <http://foo:💩@example.com/bar> against <http://other.com/> 
+FAIL Parsing origin: <#> against <test:test> assert_equals: origin expected "null" but got "test://"
+FAIL Parsing origin: <#x> against <mailto:x@x.com> assert_equals: origin expected "null" but got "mailto://"
+FAIL Parsing origin: <#x> against <data:,> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <#x> against <about:blank> 
+FAIL Parsing origin: <#> against <test:test?test> assert_equals: origin expected "null" but got "test://"
+PASS Parsing origin: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing origin: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing origin: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Parsing origin: </some/path> against <http://user@example.org/smth> 
+PASS Parsing origin: <> against <http://user:pass@example.org:21/smth> 
+PASS Parsing origin: </some/path> against <http://user:pass@example.org:21/smth> 
+FAIL Parsing origin: <i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:sd/sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <about:/../> against <about:blank> 
+PASS Parsing origin: <data:/../> against <about:blank> 
+PASS Parsing origin: <javascript:/../> against <about:blank> 
+FAIL Parsing origin: <mailto:/../> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+FAIL Parsing origin: <sc://ñ.test/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <x> against <sc://ñ> 
+FAIL Parsing origin: <sc:\../> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc::a@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <wow:%NBD> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Parsing origin: <wow:%1G> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Parsing origin: <ftp://%e2%98%83> against <about:blank> assert_equals: origin expected "ftp://☃" but got "ftp://xn--n3h"
+FAIL Parsing origin: <https://%e2%98%83> against <about:blank> assert_equals: origin expected "https://☃" but got "https://xn--n3h"
+PASS Parsing origin: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Parsing origin: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Parsing origin: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Parsing origin: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Parsing origin: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <sc:> against <https://example.org/foo/bar> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Parsing origin: <http://192.168.257> against <http://other.com/> 
+PASS Parsing origin: <http://192.168.257.com> against <http://other.com/> 
+PASS Parsing origin: <http://256> against <http://other.com/> 
+PASS Parsing origin: <http://256.com> against <http://other.com/> 
+PASS Parsing origin: <http://999999999> against <http://other.com/> 
+PASS Parsing origin: <http://999999999.com> against <http://other.com/> 
+PASS Parsing origin: <http://10000000000.com> against <http://other.com/> 
+PASS Parsing origin: <http://4294967295> against <http://other.com/> 
+PASS Parsing origin: <http://0xffffffff> against <http://other.com/> 
+PASS Parsing origin: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Parsing origin: <https://0x.0x.0> against <about:blank> 
+PASS Parsing origin: <http://[1:0::]> against <http://example.net/> 
+FAIL Parsing origin: <sc://ñ> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://ñ?x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://ñ#x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <#x> against <sc://ñ> 
+PASS Parsing origin: <?x> against <sc://ñ> 
+FAIL Parsing origin: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: origin expected "null" but got "tftp://"
+FAIL Parsing origin: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: origin expected "null" but got "telnet://"
+FAIL Parsing origin: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: origin expected "null" but got "ut2004://"
+FAIL Parsing origin: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: origin expected "null" but got "redis://"
+FAIL Parsing origin: <rsync://foo@host:911/sup> against <about:blank> assert_equals: origin expected "null" but got "rsync://"
+FAIL Parsing origin: <git://github.com/foo/bar.git> against <about:blank> assert_equals: origin expected "null" but got "git://"
+FAIL Parsing origin: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: origin expected "null" but got "irc://"
+FAIL Parsing origin: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: origin expected "null" but got "dns://"
+FAIL Parsing origin: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: origin expected "null" but got "ldap://"
+FAIL Parsing origin: <git+https://github.com/foo/bar> against <about:blank> assert_equals: origin expected "null" but got "git+https://"
+FAIL Parsing origin: <urn:ietf:rfc:2648> against <about:blank> assert_equals: origin expected "null" but got "urn://"
+FAIL Parsing origin: <tag:joe@example.org,2001:foo/bar> against <about:blank> assert_equals: origin expected "null" but got "tag://"
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/a-element-origin-xhtml-expected.txt b/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/a-element-origin-xhtml-expected.txt
new file mode 100644
index 0000000..664b7f7
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/a-element-origin-xhtml-expected.txt
@@ -0,0 +1,307 @@
+This is a testharness.js-based test.
+Found 294 tests; 219 PASS, 75 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS Parsing origin: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https://test:@test> against <about:blank> 
+PASS Parsing origin: <https://:@test> against <about:blank> 
+FAIL Parsing origin: <non-special://test:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+FAIL Parsing origin: <non-special://:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+PASS Parsing origin: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Parsing origin: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Parsing origin: < foo.com  > against <http://example.org/foo/bar> 
+FAIL Parsing origin: <a:	 foo.com> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "file://"
+PASS Parsing origin: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://f:/c> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <http://f:0/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+FAIL Parsing origin: <http://f:00000000000000/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+PASS Parsing origin: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <> against <http://example.org/foo/bar> 
+PASS Parsing origin: <  	> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:a> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:#> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#;?> against <http://example.org/foo/bar> 
+PASS Parsing origin: <?> against <http://example.org/foo/bar> 
+PASS Parsing origin: </> against <http://example.org/foo/bar> 
+PASS Parsing origin: <:23> against <http://example.org/foo/bar> 
+PASS Parsing origin: </:23> against <http://example.org/foo/bar> 
+PASS Parsing origin: <::> against <http://example.org/foo/bar> 
+PASS Parsing origin: <::23> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <foo://> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+PASS Parsing origin: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <foo:/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo:/bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo://///////> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <foo:////://///> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Parsing origin: <c:/foo> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "file://"
+PASS Parsing origin: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Parsing origin: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https:/example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <madeupscheme:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <javascript:/example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <mailto:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <https:example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <madeupscheme:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing origin: <javascript:example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <mailto:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: </a/b/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a/ /c> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a%2fc> against <http://example.org/foo/bar> 
+PASS Parsing origin: </a/%2f/c> against <http://example.org/foo/bar> 
+PASS Parsing origin: <#β> against <http://example.org/foo/bar> 
+PASS Parsing origin: <data:text/html,test#test> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <tel:1234567890> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "tel://"
+PASS Parsing origin: <http://example.com/././foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/./.foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/.> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/./> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/..bar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/../../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e%2> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 
+PASS Parsing origin: <http://example.com////../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/%20foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%2©zbar> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo%41%7a> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Parsing origin: <http://example.com/foo%00%51> against <about:blank> assert_equals: origin expected "http://example.com" but got "null"
+PASS Parsing origin: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Parsing origin: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Parsing origin: <http://example.com/foo	bar> against <about:blank> 
+PASS Parsing origin: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Parsing origin: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Parsing origin: <http://example.com/@asdf%40> against <about:blank> 
+PASS Parsing origin: <http://example.com/你好你好> against <about:blank> 
+PASS Parsing origin: <http://example.com/‥/foo> against <about:blank> 
+PASS Parsing origin: <http://example.com//foo> against <about:blank> 
+PASS Parsing origin: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Parsing origin: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+PASS Parsing origin: <http://www.google.com/foo?bar=baz# »> against <about:blank> 
+PASS Parsing origin: <data:test# »> against <about:blank> 
+PASS Parsing origin: <http://www.google.com> against <about:blank> 
+PASS Parsing origin: <http://192.0x00A80001> against <about:blank> 
+PASS Parsing origin: <http://www/foo%2Ehtml> against <about:blank> 
+PASS Parsing origin: <http://www/foo/%2E/html> against <about:blank> 
+PASS Parsing origin: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Parsing origin: <http:\\www.google.com\foo> against <about:blank> 
+PASS Parsing origin: <http://foo:80/> against <about:blank> 
+PASS Parsing origin: <http://foo:81/> against <about:blank> 
+FAIL Parsing origin: <httpa://foo:80/> against <about:blank> assert_equals: origin expected "null" but got "httpa://"
+PASS Parsing origin: <https://foo:443/> against <about:blank> 
+PASS Parsing origin: <https://foo:80/> against <about:blank> 
+PASS Parsing origin: <ftp://foo:21/> against <about:blank> 
+PASS Parsing origin: <ftp://foo:80/> against <about:blank> 
+PASS Parsing origin: <gopher://foo:70/> against <about:blank> 
+PASS Parsing origin: <gopher://foo:443/> against <about:blank> 
+PASS Parsing origin: <ws://foo:80/> against <about:blank> 
+PASS Parsing origin: <ws://foo:81/> against <about:blank> 
+PASS Parsing origin: <ws://foo:443/> against <about:blank> 
+PASS Parsing origin: <ws://foo:815/> against <about:blank> 
+PASS Parsing origin: <wss://foo:80/> against <about:blank> 
+PASS Parsing origin: <wss://foo:81/> against <about:blank> 
+PASS Parsing origin: <wss://foo:443/> against <about:blank> 
+PASS Parsing origin: <wss://foo:815/> against <about:blank> 
+PASS Parsing origin: <http:/example.com/> against <about:blank> 
+PASS Parsing origin: <ftp:/example.com/> against <about:blank> 
+PASS Parsing origin: <https:/example.com/> against <about:blank> 
+FAIL Parsing origin: <madeupscheme:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:/example.com/> against <about:blank> 
+PASS Parsing origin: <ws:/example.com/> against <about:blank> 
+PASS Parsing origin: <wss:/example.com/> against <about:blank> 
+PASS Parsing origin: <data:/example.com/> against <about:blank> 
+PASS Parsing origin: <javascript:/example.com/> against <about:blank> 
+FAIL Parsing origin: <mailto:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:example.com/> against <about:blank> 
+PASS Parsing origin: <ftp:example.com/> against <about:blank> 
+PASS Parsing origin: <https:example.com/> against <about:blank> 
+FAIL Parsing origin: <madeupscheme:example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Parsing origin: <ftps:example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing origin: <gopher:example.com/> against <about:blank> 
+PASS Parsing origin: <ws:example.com/> against <about:blank> 
+PASS Parsing origin: <wss:example.com/> against <about:blank> 
+PASS Parsing origin: <data:example.com/> against <about:blank> 
+PASS Parsing origin: <javascript:example.com/> against <about:blank> 
+FAIL Parsing origin: <mailto:example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <http:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://a:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://@pple.com> against <about:blank> 
+PASS Parsing origin: <http::b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://:b@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http:/a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://a:@www.example.com> against <about:blank> 
+PASS Parsing origin: <http://www.@pple.com> against <about:blank> 
+PASS Parsing origin: <http://:@www.example.com> against <about:blank> 
+PASS Parsing origin: </> against <http://www.example.com/test> 
+PASS Parsing origin: </test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <.> against <http://www.example.com/test> 
+PASS Parsing origin: <..> against <http://www.example.com/test> 
+PASS Parsing origin: <test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <./test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <../../test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <中/test.txt> against <http://www.example.com/test> 
+PASS Parsing origin: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Parsing origin: <//www.example2.com> against <http://www.example.com/test> 
+PASS Parsing origin: <http://ExAmPlE.CoM> against <http://other.com/> 
+PASS Parsing origin: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Parsing origin: <http://www.foo。bar.com> against <http://other.com/> 
+PASS Parsing origin: <https://x/�?�#�> against <about:blank> 
+PASS Parsing origin: <http://Go.com> against <http://other.com/> 
+FAIL Parsing origin: <http://你好你好> against <http://other.com/> assert_equals: origin expected "http://你好你好" but got "http://xn--6qqa088eba"
+FAIL Parsing origin: <https://faß.ExAmPlE/> against <about:blank> assert_equals: origin expected "https://faß.example" but got "https://fass.example"
+PASS Parsing origin: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing origin: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+PASS Parsing origin: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Parsing origin: <http://./> against <about:blank> 
+PASS Parsing origin: <http://../> against <about:blank> 
+PASS Parsing origin: <http://0..0x300/> against <about:blank> 
+PASS Parsing origin: <http://foo:💩@example.com/bar> against <http://other.com/> 
+FAIL Parsing origin: <#> against <test:test> assert_equals: origin expected "null" but got "test://"
+FAIL Parsing origin: <#x> against <mailto:x@x.com> assert_equals: origin expected "null" but got "mailto://"
+FAIL Parsing origin: <#x> against <data:,> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing origin: <#x> against <about:blank> 
+FAIL Parsing origin: <#> against <test:test?test> assert_equals: origin expected "null" but got "test://"
+PASS Parsing origin: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing origin: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing origin: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Parsing origin: </some/path> against <http://user@example.org/smth> 
+PASS Parsing origin: <> against <http://user:pass@example.org:21/smth> 
+PASS Parsing origin: </some/path> against <http://user:pass@example.org:21/smth> 
+FAIL Parsing origin: <i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <../i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: </i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <?i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:sd/sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <#i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <about:/../> against <about:blank> 
+PASS Parsing origin: <data:/../> against <about:blank> 
+PASS Parsing origin: <javascript:/../> against <about:blank> 
+FAIL Parsing origin: <mailto:/../> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+FAIL Parsing origin: <sc://ñ.test/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <x> against <sc://ñ> 
+FAIL Parsing origin: <sc:\../> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc::a@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <wow:%NBD> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Parsing origin: <wow:%1G> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Parsing origin: <ftp://%e2%98%83> against <about:blank> assert_equals: origin expected "ftp://☃" but got "ftp://xn--n3h"
+FAIL Parsing origin: <https://%e2%98%83> against <about:blank> assert_equals: origin expected "https://☃" but got "https://xn--n3h"
+PASS Parsing origin: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Parsing origin: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Parsing origin: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Parsing origin: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Parsing origin: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing origin: <http:> against <http://example.org/foo/bar> 
+FAIL Parsing origin: <sc:> against <https://example.org/foo/bar> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Parsing origin: <http://192.168.257> against <http://other.com/> 
+PASS Parsing origin: <http://192.168.257.com> against <http://other.com/> 
+PASS Parsing origin: <http://256> against <http://other.com/> 
+PASS Parsing origin: <http://256.com> against <http://other.com/> 
+PASS Parsing origin: <http://999999999> against <http://other.com/> 
+PASS Parsing origin: <http://999999999.com> against <http://other.com/> 
+PASS Parsing origin: <http://10000000000.com> against <http://other.com/> 
+PASS Parsing origin: <http://4294967295> against <http://other.com/> 
+PASS Parsing origin: <http://0xffffffff> against <http://other.com/> 
+PASS Parsing origin: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Parsing origin: <https://0x.0x.0> against <about:blank> 
+PASS Parsing origin: <http://[1:0::]> against <http://example.net/> 
+FAIL Parsing origin: <sc://ñ> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://ñ?x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Parsing origin: <sc://ñ#x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing origin: <#x> against <sc://ñ> 
+PASS Parsing origin: <?x> against <sc://ñ> 
+FAIL Parsing origin: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: origin expected "null" but got "tftp://"
+FAIL Parsing origin: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: origin expected "null" but got "telnet://"
+FAIL Parsing origin: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: origin expected "null" but got "ut2004://"
+FAIL Parsing origin: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: origin expected "null" but got "redis://"
+FAIL Parsing origin: <rsync://foo@host:911/sup> against <about:blank> assert_equals: origin expected "null" but got "rsync://"
+FAIL Parsing origin: <git://github.com/foo/bar.git> against <about:blank> assert_equals: origin expected "null" but got "git://"
+FAIL Parsing origin: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: origin expected "null" but got "irc://"
+FAIL Parsing origin: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: origin expected "null" but got "dns://"
+FAIL Parsing origin: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: origin expected "null" but got "ldap://"
+FAIL Parsing origin: <git+https://github.com/foo/bar> against <about:blank> assert_equals: origin expected "null" but got "git+https://"
+FAIL Parsing origin: <urn:ietf:rfc:2648> against <about:blank> assert_equals: origin expected "null" but got "urn://"
+FAIL Parsing origin: <tag:joe@example.org,2001:foo/bar> against <about:blank> assert_equals: origin expected "null" but got "tag://"
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/a-element-xhtml-expected.txt b/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/a-element-xhtml-expected.txt
new file mode 100644
index 0000000..aa856e2b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/a-element-xhtml-expected.txt
@@ -0,0 +1,486 @@
+This is a testharness.js-based test.
+Found 473 tests; 302 PASS, 171 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS Parsing: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Parsing: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Parsing: <https://test:@test> against <about:blank> 
+PASS Parsing: <https://:@test> against <about:blank> 
+FAIL Parsing: <non-special://test:@test/x> against <about:blank> assert_equals: href expected "non-special://test@test/x" but got "non-special://test:@test/x"
+FAIL Parsing: <non-special://:@test/x> against <about:blank> assert_equals: href expected "non-special://test/x" but got "non-special://:@test/x"
+PASS Parsing: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Parsing: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Parsing: < foo.com  > against <http://example.org/foo/bar> 
+FAIL Parsing: <a:	 foo.com> against <http://example.org/foo/bar> assert_equals: href expected "a: foo.com" but got "file:///A:/%20foo.com"
+PASS Parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing: <lolscheme:x x#x x> against <about:blank> 
+PASS Parsing: <http://f:/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:0/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:b/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <http://f: /c> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://f: /c" but got "http://f:%20/c"
+PASS Parsing: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:fifty-two/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:999999/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <non-special://f:999999/c> against <http://example.org/foo/bar> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://f: 21 / b ? d # e > against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://f: 21 / b ? d # e " but got "http://f:%2021%20/%20b%20?%20d%20# e"
+PASS Parsing: <> against <http://example.org/foo/bar> 
+PASS Parsing: <  	> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <:> against <http://example.org/foo/bar> 
+PASS Parsing: <:a> against <http://example.org/foo/bar> 
+PASS Parsing: <:/> against <http://example.org/foo/bar> 
+PASS Parsing: <:\> against <http://example.org/foo/bar> 
+PASS Parsing: <:#> against <http://example.org/foo/bar> 
+PASS Parsing: <#> against <http://example.org/foo/bar> 
+PASS Parsing: <#/> against <http://example.org/foo/bar> 
+PASS Parsing: <#\> against <http://example.org/foo/bar> 
+PASS Parsing: <#;?> against <http://example.org/foo/bar> 
+PASS Parsing: <?> against <http://example.org/foo/bar> 
+PASS Parsing: </> against <http://example.org/foo/bar> 
+PASS Parsing: <:23> against <http://example.org/foo/bar> 
+PASS Parsing: </:23> against <http://example.org/foo/bar> 
+PASS Parsing: <::> against <http://example.org/foo/bar> 
+PASS Parsing: <::23> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://> against <http://example.org/foo/bar> assert_equals: pathname expected "" but got "//"
+PASS Parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Parsing: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/bar.com/> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: pathname expected "///////" but got "/////////"
+FAIL Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: pathname expected "///////bar.com/" but got "/////////bar.com/"
+FAIL Parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: pathname expected "//://///" but got "////://///"
+FAIL Parsing: <c:/foo> against <http://example.org/foo/bar> assert_equals: href expected "c:/foo" but got "file:///C:/foo"
+PASS Parsing: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Parsing: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Parsing: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+FAIL Parsing: <http://[1::2]:3:4> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://[1::2]:3:4" but got "http://[1::2]:3:4/"
+FAIL Parsing: <http://2001::1> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1" but got "http://2001::1/"
+FAIL Parsing: <http://2001::1]> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1]" but got "http://2001::1]/"
+FAIL Parsing: <http://2001::1]:80> against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://2001::1]:80" but got "http://2001::1]/"
+PASS Parsing: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing: <file:/example.com/> against <http://example.org/foo/bar> assert_equals: href expected "file:///example.com/" but got "file://example.com/"
+PASS Parsing: <file://example:1/> against <about:blank> 
+PASS Parsing: <file://example:test/> against <about:blank> 
+FAIL Parsing: <file://example%/> against <about:blank> assert_equals: failure should set href to input expected "file://example%/" but got "file://example%25/"
+PASS Parsing: <file://[example]/> against <about:blank> 
+PASS Parsing: <ftps:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftps:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: </a/b/c> against <http://example.org/foo/bar> 
+PASS Parsing: </a/ /c> against <http://example.org/foo/bar> 
+PASS Parsing: </a%2fc> against <http://example.org/foo/bar> 
+PASS Parsing: </a/%2f/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <#β> against <http://example.org/foo/bar> assert_equals: href expected "http://example.org/foo/bar#%CE%B2" but got "http://example.org/foo/bar#β"
+PASS Parsing: <data:text/html,test#test> against <http://example.org/foo/bar> 
+PASS Parsing: <tel:1234567890> against <http://example.org/foo/bar> 
+FAIL Parsing: <file:c:\foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:/foo/bar.html" but got "file:///C:/foo/bar.html"
+FAIL Parsing: <  File:c|////foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:////foo/bar.html" but got "file:///C:////foo/bar.html"
+PASS Parsing: <C|/foo/bar> against <file:///tmp/mock/path> 
+PASS Parsing: </C|\foo\bar> against <file:///tmp/mock/path> 
+PASS Parsing: <//C|/foo/bar> against <file:///tmp/mock/path> 
+PASS Parsing: <//server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <\\server\file> against <file:///tmp/mock/path> 
+PASS Parsing: </\server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///foo/bar.txt> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///home/me> against <file:///tmp/mock/path> 
+PASS Parsing: <//> against <file:///tmp/mock/path> 
+PASS Parsing: <///> against <file:///tmp/mock/path> 
+PASS Parsing: <///test> against <file:///tmp/mock/path> 
+PASS Parsing: <file://test> against <file:///tmp/mock/path> 
+FAIL Parsing: <file://localhost> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/test> against <file:///tmp/mock/path> assert_equals: href expected "file:///test" but got "file://localhost/test"
+PASS Parsing: <test> against <file:///tmp/mock/path> 
+PASS Parsing: <file:test> against <file:///tmp/mock/path> 
+PASS Parsing: <http://example.com/././foo> against <about:blank> 
+PASS Parsing: <http://example.com/./.foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo/.> against <about:blank> 
+PASS Parsing: <http://example.com/foo/./> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Parsing: <http://example.com/foo/..bar> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 
+FAIL Parsing: <http://example.com/foo/%2e%2> against <about:blank> assert_equals: href expected "http://example.com/foo/%2e%2" but got "http://example.com/foo/.%2"
+FAIL Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> assert_equals: href expected "http://example.com/%2e.bar" but got "http://example.com/..bar"
+PASS Parsing: <http://example.com////../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Parsing: <http://example.com/foo> against <about:blank> 
+PASS Parsing: <http://example.com/%20foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo%> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2©zbar> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%41%7a> against <about:blank> assert_equals: href expected "http://example.com/foo%41%7a" but got "http://example.com/fooAz"
+PASS Parsing: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%00%51> against <about:blank> assert_equals: href expected "http://example.com/foo%00%51" but got "http://example.com/foo%00Q"
+PASS Parsing: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Parsing: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Parsing: <http://example.com/foo	bar> against <about:blank> 
+PASS Parsing: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Parsing: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Parsing: <http://example.com/@asdf%40> against <about:blank> 
+PASS Parsing: <http://example.com/你好你好> against <about:blank> 
+PASS Parsing: <http://example.com/‥/foo> against <about:blank> 
+PASS Parsing: <http://example.com//foo> against <about:blank> 
+PASS Parsing: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Parsing: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+FAIL Parsing: <http://www.google.com/foo?bar=baz# »> against <about:blank> assert_equals: href expected "http://www.google.com/foo?bar=baz# %C2%BB" but got "http://www.google.com/foo?bar=baz# »"
+PASS Parsing: <data:test# »> against <about:blank> 
+PASS Parsing: <http://www.google.com> against <about:blank> 
+PASS Parsing: <http://192.0x00A80001> against <about:blank> 
+FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo%2Ehtml" but got "http://www/foo.html"
+PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 
+PASS Parsing: <http://user:pass@/> against <about:blank> 
+PASS Parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 
+PASS Parsing: <http://foo:80/> against <about:blank> 
+PASS Parsing: <http://foo:81/> against <about:blank> 
+FAIL Parsing: <httpa://foo:80/> against <about:blank> assert_equals: host expected "foo:80" but got ""
+PASS Parsing: <http://foo:-80/> against <about:blank> 
+PASS Parsing: <https://foo:443/> against <about:blank> 
+PASS Parsing: <https://foo:80/> against <about:blank> 
+PASS Parsing: <ftp://foo:21/> against <about:blank> 
+PASS Parsing: <ftp://foo:80/> against <about:blank> 
+PASS Parsing: <gopher://foo:70/> against <about:blank> 
+PASS Parsing: <gopher://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:80/> against <about:blank> 
+PASS Parsing: <ws://foo:81/> against <about:blank> 
+PASS Parsing: <ws://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:815/> against <about:blank> 
+PASS Parsing: <wss://foo:80/> against <about:blank> 
+PASS Parsing: <wss://foo:81/> against <about:blank> 
+PASS Parsing: <wss://foo:443/> against <about:blank> 
+PASS Parsing: <wss://foo:815/> against <about:blank> 
+PASS Parsing: <http:/example.com/> against <about:blank> 
+PASS Parsing: <ftp:/example.com/> against <about:blank> 
+PASS Parsing: <https:/example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:/example.com/> against <about:blank> 
+FAIL Parsing: <file:/example.com/> against <about:blank> assert_equals: href expected "file:///example.com/" but got "file://example.com/"
+PASS Parsing: <ftps:/example.com/> against <about:blank> 
+PASS Parsing: <gopher:/example.com/> against <about:blank> 
+PASS Parsing: <ws:/example.com/> against <about:blank> 
+PASS Parsing: <wss:/example.com/> against <about:blank> 
+PASS Parsing: <data:/example.com/> against <about:blank> 
+PASS Parsing: <javascript:/example.com/> against <about:blank> 
+PASS Parsing: <mailto:/example.com/> against <about:blank> 
+PASS Parsing: <http:example.com/> against <about:blank> 
+PASS Parsing: <ftp:example.com/> against <about:blank> 
+PASS Parsing: <https:example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:example.com/> against <about:blank> 
+PASS Parsing: <ftps:example.com/> against <about:blank> 
+PASS Parsing: <gopher:example.com/> against <about:blank> 
+PASS Parsing: <ws:example.com/> against <about:blank> 
+PASS Parsing: <wss:example.com/> against <about:blank> 
+PASS Parsing: <data:example.com/> against <about:blank> 
+PASS Parsing: <javascript:example.com/> against <about:blank> 
+PASS Parsing: <mailto:example.com/> against <about:blank> 
+PASS Parsing: <http:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/@www.example.com> against <about:blank> 
+PASS Parsing: <http://@www.example.com> against <about:blank> 
+PASS Parsing: <http:a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://@pple.com> against <about:blank> 
+PASS Parsing: <http::b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://:b@www.example.com> against <about:blank> 
+FAIL Parsing: <http:/:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/:@/www.example.com" but got "http:///www.example.com"
+PASS Parsing: <http://user@/www.example.com> against <about:blank> 
+FAIL Parsing: <http:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <http:/@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <http://@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http://@/www.example.com" but got "http:///www.example.com"
+FAIL Parsing: <https:@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "https:@/www.example.com" but got "https:///www.example.com"
+FAIL Parsing: <http:a:b@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:a:b@/www.example.com" but got "http://a:b@/www.example.com"
+FAIL Parsing: <http:/a:b@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/a:b@/www.example.com" but got "http://a:b@/www.example.com"
+PASS Parsing: <http://a:b@/www.example.com> against <about:blank> 
+FAIL Parsing: <http::@/www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http::@/www.example.com" but got "http:///www.example.com"
+PASS Parsing: <http:a:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://www.@pple.com> against <about:blank> 
+FAIL Parsing: <http:@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:@:www.example.com" but got "http://:www.example.com/"
+FAIL Parsing: <http:/@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http:/@:www.example.com" but got "http://:www.example.com/"
+FAIL Parsing: <http://@:www.example.com> against <about:blank> assert_equals: failure should set href to input expected "http://@:www.example.com" but got "http://:www.example.com/"
+PASS Parsing: <http://:@www.example.com> against <about:blank> 
+PASS Parsing: </> against <http://www.example.com/test> 
+PASS Parsing: </test.txt> against <http://www.example.com/test> 
+PASS Parsing: <.> against <http://www.example.com/test> 
+PASS Parsing: <..> against <http://www.example.com/test> 
+PASS Parsing: <test.txt> against <http://www.example.com/test> 
+PASS Parsing: <./test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <中/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Parsing: <//www.example2.com> against <http://www.example.com/test> 
+FAIL Parsing: <file:...> against <http://www.example.com/test> assert_equals: href expected "file:///..." but got "file://.../"
+FAIL Parsing: <file:..> against <http://www.example.com/test> assert_equals: href expected "file:///" but got "file://../"
+FAIL Parsing: <file:a> against <http://www.example.com/test> assert_equals: href expected "file:///a" but got "file://a/"
+PASS Parsing: <http://ExAmPlE.CoM> against <http://other.com/> 
+FAIL Parsing: <http://example example.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://Goo%20 goo%7C|.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[]" but got "http://[]/"
+FAIL Parsing: <http://[:]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[:]" but got "http://[:]/"
+FAIL Parsing: <http://GOO  goo.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Parsing: <http://www.foo。bar.com> against <http://other.com/> 
+FAIL Parsing: <http://﷐zyx.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://﷐zyx.com" but got "http://%EF%BF%BDzyx.com/"
+FAIL Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%ef%b7%90zyx.com" but got "http://%EF%BF%BDzyx.com/"
+FAIL Parsing: <https://�> against <about:blank> assert_equals: failure should set href to input expected "https://\ufffd" but got "https://%EF%BF%BD/"
+FAIL Parsing: <https://%EF%BF%BD> against <about:blank> assert_equals: failure should set href to input expected "https://%EF%BF%BD" but got "https://%EF%BF%BD/"
+FAIL Parsing: <https://x/�?�#�> against <about:blank> assert_equals: href expected "https://x/%EF%BF%BD?%EF%BF%BD#%EF%BF%BD" but got "https://x/%EF%BF%BD?%EF%BF%BD#\ufffd"
+PASS Parsing: <http://Go.com> against <http://other.com/> 
+FAIL Parsing: <http://%41.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://%00.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%00.com" but got "http://%00.com/"
+FAIL Parsing: <http://%ef%bc%85%ef%bc%90%ef%bc%90.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%ef%bc%85%ef%bc%90%ef%bc%90.com" but got "http://%00.com/"
+PASS Parsing: <http://你好你好> against <http://other.com/> 
+FAIL Parsing: <https://faß.ExAmPlE/> against <about:blank> assert_equals: href expected "https://xn--fa-hia.example/" but got "https://fass.example/"
+FAIL Parsing: <sc://faß.ExAmPlE/> against <about:blank> assert_equals: host expected "fa%C3%9F.ExAmPlE" but got ""
+FAIL Parsing: <http://%zz%66%a.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://%zz%66%a.com" but got "http://%25zzf%25a.com/"
+FAIL Parsing: <http://%25> against <http://other.com/> assert_equals: failure should set href to input expected "http://%25" but got "http://%25/"
+FAIL Parsing: <http://hello%00> against <http://other.com/> assert_equals: failure should set href to input expected "http://hello%00" but got "http://hello%00/"
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+FAIL Parsing: <http://192.168.0.257> against <http://other.com/> assert_equals: failure should set href to input expected "http://192.168.0.257" but got "http://192.168.0.257/"
+FAIL Parsing: <http://%3g%78%63%30%2e%30%32%35%30%2E.01> against <http://other.com/> assert_equals: failure should set href to input expected "http://%3g%78%63%30%2e%30%32%35%30%2E.01" but got "http://%253gxc0.0250..01/"
+FAIL Parsing: <http://192.168.0.1 hello> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <https://x x:12> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Parsing: <http://./> against <about:blank> 
+PASS Parsing: <http://../> against <about:blank> 
+PASS Parsing: <http://0..0x300/> against <about:blank> 
+PASS Parsing: <http://[www.google.com]/> against <about:blank> 
+FAIL Parsing: <http://[google.com]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[google.com]" but got "http://[google.com]/"
+FAIL Parsing: <http://[::1.2.3.4x]> against <http://other.com/> assert_equals: failure should set href to input expected "http://[::1.2.3.4x]" but got "http://[::1.2.3.4x]/"
+FAIL Parsing: <http://[::1.2.3.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[::1.2.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://[::1.]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://foo:💩@example.com/bar> against <http://other.com/> 
+PASS Parsing: <#> against <test:test> 
+PASS Parsing: <#x> against <mailto:x@x.com> 
+FAIL Parsing: <#x> against <data:,> assert_equals: href expected "data:,#x" but got "mailto:x@x.com#x"
+PASS Parsing: <#x> against <about:blank> 
+PASS Parsing: <#> against <test:test?test> 
+PASS Parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Parsing: </some/path> against <http://user@example.org/smth> 
+PASS Parsing: <> against <http://user:pass@example.org:21/smth> 
+PASS Parsing: </some/path> against <http://user:pass@example.org:21/smth> 
+FAIL Parsing: <i> against <sc:sd> assert_equals: failure should set href to input expected "i" but got ""
+FAIL Parsing: <i> against <sc:sd/sd> assert_equals: failure should set href to input expected "i" but got ""
+PASS Parsing: <i> against <sc:/pa/pa> 
+FAIL Parsing: <i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/i" but got "///pa/i"
+FAIL Parsing: <../i> against <sc:sd> assert_equals: failure should set href to input expected "../i" but got ""
+FAIL Parsing: <../i> against <sc:sd/sd> assert_equals: failure should set href to input expected "../i" but got ""
+PASS Parsing: <../i> against <sc:/pa/pa> 
+FAIL Parsing: <../i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <../i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+FAIL Parsing: </i> against <sc:sd> assert_equals: failure should set href to input expected "/i" but got ""
+FAIL Parsing: </i> against <sc:sd/sd> assert_equals: failure should set href to input expected "/i" but got ""
+PASS Parsing: </i> against <sc:/pa/pa> 
+FAIL Parsing: </i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: </i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+FAIL Parsing: <?i> against <sc:sd> assert_equals: failure should set href to input expected "?i" but got ""
+FAIL Parsing: <?i> against <sc:sd/sd> assert_equals: failure should set href to input expected "?i" but got ""
+PASS Parsing: <?i> against <sc:/pa/pa> 
+FAIL Parsing: <?i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <?i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+PASS Parsing: <#i> against <sc:sd> 
+PASS Parsing: <#i> against <sc:sd/sd> 
+PASS Parsing: <#i> against <sc:/pa/pa> 
+FAIL Parsing: <#i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <#i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+FAIL Parsing: <about:/../> against <about:blank> assert_equals: href expected "about:/" but got "about:/../"
+FAIL Parsing: <data:/../> against <about:blank> assert_equals: href expected "data:/" but got "data:/../"
+FAIL Parsing: <javascript:/../> against <about:blank> assert_equals: href expected "javascript:/" but got "javascript:/../"
+FAIL Parsing: <mailto:/../> against <about:blank> assert_equals: href expected "mailto:/" but got "mailto:/../"
+FAIL Parsing: <sc://ñ.test/> against <about:blank> assert_equals: host expected "%C3%B1.test" but got ""
+FAIL Parsing: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: host expected "%1F!\"$&'()*+,-.;<=>^_`{|}~" but got ""
+FAIL Parsing: <sc://\0/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc:// /> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://%/> against <about:blank> assert_equals: host expected "%" but got ""
+FAIL Parsing: <sc://@/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://te@s:t@/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://:/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://:12/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://[/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://\/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://]/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1/x" but got "sc://%C3%B1"
+PASS Parsing: <sc:\../> against <about:blank> 
+PASS Parsing: <sc::a@example.net> against <about:blank> 
+PASS Parsing: <wow:%NBD> against <about:blank> 
+PASS Parsing: <wow:%1G> against <about:blank> 
+FAIL Parsing: <ftp://example.com%80/> against <about:blank> assert_equals: failure should set href to input expected "ftp://example.com%80/" but got "ftp://example.com%EF%BF%BD/"
+FAIL Parsing: <ftp://example.com%A0/> against <about:blank> assert_equals: failure should set href to input expected "ftp://example.com%A0/" but got "ftp://example.com%EF%BF%BD/"
+FAIL Parsing: <https://example.com%80/> against <about:blank> assert_equals: failure should set href to input expected "https://example.com%80/" but got "https://example.com%EF%BF%BD/"
+FAIL Parsing: <https://example.com%A0/> against <about:blank> assert_equals: failure should set href to input expected "https://example.com%A0/" but got "https://example.com%EF%BF%BD/"
+PASS Parsing: <ftp://%e2%98%83> against <about:blank> 
+PASS Parsing: <https://%e2%98%83> against <about:blank> 
+PASS Parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Parsing: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Parsing: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <https://example.org/foo/bar> 
+PASS Parsing: <sc:> against <https://example.org/foo/bar> 
+PASS Parsing: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Parsing: <http://192.168.257> against <http://other.com/> 
+PASS Parsing: <http://192.168.257.com> against <http://other.com/> 
+PASS Parsing: <http://256> against <http://other.com/> 
+PASS Parsing: <http://256.com> against <http://other.com/> 
+PASS Parsing: <http://999999999> against <http://other.com/> 
+PASS Parsing: <http://999999999.com> against <http://other.com/> 
+FAIL Parsing: <http://10000000000> against <http://other.com/> assert_equals: failure should set href to input expected "http://10000000000" but got "http://10000000000/"
+PASS Parsing: <http://10000000000.com> against <http://other.com/> 
+PASS Parsing: <http://4294967295> against <http://other.com/> 
+FAIL Parsing: <http://4294967296> against <http://other.com/> assert_equals: failure should set href to input expected "http://4294967296" but got "http://4294967296/"
+PASS Parsing: <http://0xffffffff> against <http://other.com/> 
+FAIL Parsing: <http://0xffffffff1> against <http://other.com/> assert_equals: failure should set href to input expected "http://0xffffffff1" but got "http://0xffffffff1/"
+FAIL Parsing: <http://256.256.256.256> against <http://other.com/> assert_equals: failure should set href to input expected "http://256.256.256.256" but got "http://256.256.256.256/"
+PASS Parsing: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Parsing: <https://0x.0x.0> against <about:blank> 
+PASS Parsing: <file:///C%3A/> against <about:blank> 
+PASS Parsing: <file:///C%7C/> against <about:blank> 
+PASS Parsing: <pix/submit.gif> against <file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html> 
+PASS Parsing: <..> against <file:///C:/> 
+PASS Parsing: <..> against <file:///> 
+PASS Parsing: </> against <file:///C:/a/b> 
+FAIL Parsing: <//d:> against <file:///C:/a/b> assert_equals: href expected "file:///d:" but got "file:///D:/"
+FAIL Parsing: <//d:/..> against <file:///C:/a/b> assert_equals: href expected "file:///d:/" but got "file:///D:/"
+PASS Parsing: <..> against <file:///ab:/> 
+PASS Parsing: <..> against <file:///1:/> 
+PASS Parsing: <> against <file:///test?test#test> 
+PASS Parsing: <file:> against <file:///test?test#test> 
+PASS Parsing: <?x> against <file:///test?test#test> 
+PASS Parsing: <file:?x> against <file:///test?test#test> 
+PASS Parsing: <#x> against <file:///test?test#test> 
+PASS Parsing: <file:#x> against <file:///test?test#test> 
+PASS Parsing: <file:\\//> against <about:blank> 
+PASS Parsing: <file:\\\\> against <about:blank> 
+FAIL Parsing: <file:\\\\?fox> against <about:blank> assert_equals: href expected "file:///?fox" but got "file://%3Ffox/"
+FAIL Parsing: <file:\\\\#guppy> against <about:blank> assert_equals: href expected "file:///#guppy" but got "file://%23guppy/"
+FAIL Parsing: <file://spider///> against <about:blank> assert_equals: href expected "file://spider/" but got "file://spider///"
+FAIL Parsing: <file:\\localhost//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost//"
+PASS Parsing: <file:///localhost//cat> against <about:blank> 
+FAIL Parsing: <file://\/localhost//cat> against <about:blank> assert_equals: href expected "file:///localhost//cat" but got "file://localhost//cat"
+FAIL Parsing: <file://localhost//a//../..//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost///"
+FAIL Parsing: </////mouse> against <file:///elephant> assert_equals: href expected "file:///mouse" but got "file://mouse/"
+PASS Parsing: <\//pig> against <file://lion/> 
+FAIL Parsing: <\/localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: <//localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: </..//localhost//pig> against <file://lion/> assert_equals: href expected "file://lion/localhost//pig" but got "file://lion//localhost//pig"
+PASS Parsing: <file://> against <file://ape/> 
+PASS Parsing: </rooibos> against <file://tea/> 
+PASS Parsing: </?chai> against <file://tea/> 
+FAIL Parsing: <C|> against <file://host/dir/file> assert_equals: href expected "file:///C:" but got "file:///C:/"
+FAIL Parsing: <C|#> against <file://host/dir/file> assert_equals: href expected "file:///C:#" but got "file:///C:/#"
+FAIL Parsing: <C|?> against <file://host/dir/file> assert_equals: href expected "file:///C:?" but got "file:///C:/?"
+PASS Parsing: <C|/> against <file://host/dir/file> 
+PASS Parsing: <C|\> against <file://host/dir/file> 
+PASS Parsing: <C> against <file://host/dir/file> 
+FAIL Parsing: <C|a> against <file://host/dir/file> assert_equals: href expected "file://host/dir/C|a" but got "file:///C:/a"
+PASS Parsing: <file://example.net/C:/> against <about:blank> 
+PASS Parsing: <file://1.2.3.4/C:/> against <about:blank> 
+PASS Parsing: <file://[1::8]/C:/> against <about:blank> 
+PASS Parsing: <file:/C|/> against <about:blank> 
+PASS Parsing: <file://C|/> against <about:blank> 
+PASS Parsing: <file:> against <about:blank> 
+FAIL Parsing: <file:?q=v> against <about:blank> assert_equals: href expected "file:///?q=v" but got "file://%3Fq%3Dv/"
+FAIL Parsing: <file:#frag> against <about:blank> assert_equals: href expected "file:///#frag" but got "file://%23frag/"
+PASS Parsing: <http://[1:0::]> against <http://example.net/> 
+FAIL Parsing: <http://[0:1:2:3:4:5:6:7:8]> against <http://example.net/> assert_equals: failure should set href to input expected "http://[0:1:2:3:4:5:6:7:8]" but got "http://[0:1:2:3:4:5:6:7:8]/"
+FAIL Parsing: <https://[0::0::0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0::0::0]" but got "https://[0::0::0]/"
+FAIL Parsing: <https://[0:.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:.0]" but got "https://[0:.0]/"
+FAIL Parsing: <https://[0:0:]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:0:]" but got "https://[0:0:]/"
+FAIL Parsing: <https://[0:1:2:3:4:5:6:7.0.0.0.1]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1:2:3:4:5:6:7.0.0.0.1]" but got "https://[0:1:2:3:4:5:6:7.0.0.0.1]/"
+FAIL Parsing: <https://[0:1.00.0.0.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.00.0.0.0]" but got "https://[0:1.00.0.0.0]/"
+FAIL Parsing: <https://[0:1.290.0.0.0]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.290.0.0.0]" but got "https://[0:1.290.0.0.0]/"
+FAIL Parsing: <https://[0:1.23.23]> against <about:blank> assert_equals: failure should set href to input expected "https://[0:1.23.23]" but got "https://[0:1.23.23]/"
+FAIL Parsing: <http://?> against <about:blank> assert_equals: failure should set href to input expected "http://?" but got "http:/?"
+FAIL Parsing: <http://#> against <about:blank> assert_equals: failure should set href to input expected "http://#" but got "http:/#"
+FAIL Parsing: <sc://ñ> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ?x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ#x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <#x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1#x" but got "sc://%C3%B1"
+FAIL Parsing: <?x> against <sc://ñ> assert_equals: href expected "sc://%C3%B1?x" but got "sc://%C3%B1"
+FAIL Parsing: <sc://?> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <sc://#> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <///> against <sc://x/> assert_equals: href expected "sc:///" but got "sc:"
+FAIL Parsing: <////> against <sc://x/> assert_equals: href expected "sc:////" but got "sc:"
+FAIL Parsing: <////x/> against <sc://x/> assert_equals: href expected "sc:////x/" but got "sc://x/"
+FAIL Parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: host expected "foobar.com" but got ""
+FAIL Parsing: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: username expected "user" but got ""
+FAIL Parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: host expected "10.10.10.10:7777" but got ""
+FAIL Parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <rsync://foo@host:911/sup> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <git://github.com/foo/bar.git> against <about:blank> assert_equals: host expected "github.com" but got ""
+FAIL Parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: host expected "myserver.com:6999" but got ""
+FAIL Parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: host expected "fw.example.org:9999" but got ""
+FAIL Parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: host expected "localhost:389" but got ""
+FAIL Parsing: <git+https://github.com/foo/bar> against <about:blank> assert_equals: host expected "github.com" but got ""
+PASS Parsing: <urn:ietf:rfc:2648> against <about:blank> 
+PASS Parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank> 
+FAIL Parsing: <non-special://%E2%80%A0/> against <about:blank> assert_equals: host expected "%E2%80%A0" but got ""
+FAIL Parsing: <non-special://H%4fSt/path> against <about:blank> assert_equals: host expected "H%4fSt" but got ""
+FAIL Parsing: <non-special://[1:2:0:0:5:0:0:0]/> against <about:blank> assert_equals: href expected "non-special://[1:2:0:0:5::]/" but got "non-special://[1:2:0:0:5:0:0:0]/"
+FAIL Parsing: <non-special://[1:2:0:0:0:0:0:3]/> against <about:blank> assert_equals: href expected "non-special://[1:2::3]/" but got "non-special://[1:2:0:0:0:0:0:3]/"
+FAIL Parsing: <non-special://[1:2::3]:80/> against <about:blank> assert_equals: host expected "[1:2::3]:80" but got ""
+FAIL Parsing: <non-special://[:80/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <blob:https://example.com:443/> against <about:blank> 
+PASS Parsing: <blob:d3958f5c-0777-0845-9dcf-2cb28783acaf> against <about:blank> 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/failure-expected.txt b/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/failure-expected.txt
new file mode 100644
index 0000000..8c5ca0477
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/failure-expected.txt
@@ -0,0 +1,235 @@
+This is a testharness.js-based test.
+Found 231 tests; 93 PASS, 138 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+FAIL URL's href: file://example:1/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: file://example:1/ should throw 
+PASS sendBeacon(): file://example:1/ should throw 
+FAIL Location's href: file://example:1/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'file://example:1/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): file://example:1/ should throw 
+FAIL URL's href: file://example:test/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: file://example:test/ should throw 
+PASS sendBeacon(): file://example:test/ should throw 
+FAIL Location's href: file://example:test/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'file://example:test/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): file://example:test/ should throw 
+FAIL URL's href: file://example%/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: file://example%/ should throw 
+PASS sendBeacon(): file://example%/ should throw 
+FAIL Location's href: file://example%/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'file://example%/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): file://example%/ should throw 
+FAIL URL's href: file://[example]/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: file://[example]/ should throw 
+PASS sendBeacon(): file://[example]/ should throw 
+FAIL Location's href: file://[example]/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'file://[example]/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): file://[example]/ should throw 
+FAIL URL's href: http://user:pass@/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://user:pass@/ should throw 
+PASS sendBeacon(): http://user:pass@/ should throw 
+FAIL Location's href: http://user:pass@/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://user:pass@/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://user:pass@/ should throw 
+FAIL URL's href: http://foo:-80/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://foo:-80/ should throw 
+PASS sendBeacon(): http://foo:-80/ should throw 
+FAIL Location's href: http://foo:-80/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://foo:-80/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://foo:-80/ should throw 
+FAIL URL's href: http:/:@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:/:@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:/:@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:/:@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:/:@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http://user@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://user@/www.example.com should throw 
+PASS sendBeacon(): http://user@/www.example.com should throw 
+FAIL Location's href: http://user@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://user@/www.example.com' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://user@/www.example.com should throw 
+FAIL URL's href: http:@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http:/@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:/@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:/@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:/@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:/@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http://@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://@/www.example.com should throw 
+PASS sendBeacon(): http://@/www.example.com should throw 
+FAIL Location's href: http://@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://@/www.example.com' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://@/www.example.com should throw 
+FAIL URL's href: https:@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https:@/www.example.com should throw 
+PASS sendBeacon(): https:@/www.example.com should throw 
+FAIL Location's href: https:@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https:@/www.example.com' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https:@/www.example.com should throw 
+FAIL URL's href: http:a:b@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:a:b@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): http:a:b@/www.example.com should throw 
+FAIL Location's href: http:a:b@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:a:b@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http:/a:b@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:/a:b@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:/a:b@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:/a:b@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:/a:b@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http://a:b@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://a:b@/www.example.com should throw 
+PASS sendBeacon(): http://a:b@/www.example.com should throw 
+FAIL Location's href: http://a:b@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://a:b@/www.example.com' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://a:b@/www.example.com should throw 
+FAIL URL's href: http::@/www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http::@/www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http::@/www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http::@/www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http::@/www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http:@:www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:@:www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:@:www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:@:www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:@:www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http:/@:www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: http:/@:www.example.com should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): http:/@:www.example.com should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: http:/@:www.example.com should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): http:/@:www.example.com should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http://@:www.example.com should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://@:www.example.com should throw 
+PASS sendBeacon(): http://@:www.example.com should throw 
+FAIL Location's href: http://@:www.example.com should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://@:www.example.com' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://@:www.example.com should throw 
+FAIL URL's href: https://� should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://� should throw 
+PASS sendBeacon(): https://� should throw 
+FAIL Location's href: https://� should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://�' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://� should throw 
+FAIL URL's href: https://%EF%BF%BD should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://%EF%BF%BD should throw 
+PASS sendBeacon(): https://%EF%BF%BD should throw 
+FAIL Location's href: https://%EF%BF%BD should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://%EF%BF%BD' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://%EF%BF%BD should throw 
+FAIL URL's href: https://x x:12 should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: https://x x:12 should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+FAIL sendBeacon(): https://x x:12 should throw assert_throws: function "() => self.navigator.sendBeacon(test.input)" did not throw
+FAIL Location's href: https://x x:12 should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): https://x x:12 should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: http://[www.google.com]/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://[www.google.com]/ should throw 
+PASS sendBeacon(): http://[www.google.com]/ should throw 
+FAIL Location's href: http://[www.google.com]/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://[www.google.com]/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://[www.google.com]/ should throw 
+FAIL URL's href: sc://\0/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://\0/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://\0/ should throw 
+FAIL Location's href: sc://\0/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://\0/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc:// / should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc:// / should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc:// / should throw 
+FAIL Location's href: sc:// / should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc:// / should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://@/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://@/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://@/ should throw 
+FAIL Location's href: sc://@/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://@/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://te@s:t@/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://te@s:t@/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://te@s:t@/ should throw 
+FAIL Location's href: sc://te@s:t@/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://te@s:t@/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://:/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://:/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://:/ should throw 
+FAIL Location's href: sc://:/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://:/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://:12/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://:12/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://:12/ should throw 
+FAIL Location's href: sc://:12/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://:12/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://[/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://[/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://[/ should throw 
+FAIL Location's href: sc://[/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://[/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://\/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://\/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://\/ should throw 
+FAIL Location's href: sc://\/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://\/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: sc://]/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: sc://]/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): sc://]/ should throw 
+FAIL Location's href: sc://]/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): sc://]/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+FAIL URL's href: ftp://example.com%80/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: ftp://example.com%80/ should throw 
+PASS sendBeacon(): ftp://example.com%80/ should throw 
+FAIL Location's href: ftp://example.com%80/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'ftp://example.com%80/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): ftp://example.com%80/ should throw 
+FAIL URL's href: ftp://example.com%A0/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: ftp://example.com%A0/ should throw 
+PASS sendBeacon(): ftp://example.com%A0/ should throw 
+FAIL Location's href: ftp://example.com%A0/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'ftp://example.com%A0/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): ftp://example.com%A0/ should throw 
+FAIL URL's href: https://example.com%80/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://example.com%80/ should throw 
+PASS sendBeacon(): https://example.com%80/ should throw 
+FAIL Location's href: https://example.com%80/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://example.com%80/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://example.com%80/ should throw 
+FAIL URL's href: https://example.com%A0/ should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://example.com%A0/ should throw 
+PASS sendBeacon(): https://example.com%A0/ should throw 
+FAIL Location's href: https://example.com%A0/ should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://example.com%A0/' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://example.com%A0/ should throw 
+FAIL URL's href: https://[0::0::0] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0::0::0] should throw 
+PASS sendBeacon(): https://[0::0::0] should throw 
+FAIL Location's href: https://[0::0::0] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0::0::0]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0::0::0] should throw 
+FAIL URL's href: https://[0:.0] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:.0] should throw 
+PASS sendBeacon(): https://[0:.0] should throw 
+FAIL Location's href: https://[0:.0] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:.0]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:.0] should throw 
+FAIL URL's href: https://[0:0:] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:0:] should throw 
+PASS sendBeacon(): https://[0:0:] should throw 
+FAIL Location's href: https://[0:0:] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:0:]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:0:] should throw 
+FAIL URL's href: https://[0:1:2:3:4:5:6:7.0.0.0.1] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:1:2:3:4:5:6:7.0.0.0.1] should throw 
+PASS sendBeacon(): https://[0:1:2:3:4:5:6:7.0.0.0.1] should throw 
+FAIL Location's href: https://[0:1:2:3:4:5:6:7.0.0.0.1] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:1:2:3:4:5:6:7.0.0.0.1]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:1:2:3:4:5:6:7.0.0.0.1] should throw 
+FAIL URL's href: https://[0:1.00.0.0.0] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:1.00.0.0.0] should throw 
+PASS sendBeacon(): https://[0:1.00.0.0.0] should throw 
+FAIL Location's href: https://[0:1.00.0.0.0] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:1.00.0.0.0]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:1.00.0.0.0] should throw 
+FAIL URL's href: https://[0:1.290.0.0.0] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:1.290.0.0.0] should throw 
+PASS sendBeacon(): https://[0:1.290.0.0.0] should throw 
+FAIL Location's href: https://[0:1.290.0.0.0] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:1.290.0.0.0]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:1.290.0.0.0] should throw 
+FAIL URL's href: https://[0:1.23.23] should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: https://[0:1.23.23] should throw 
+PASS sendBeacon(): https://[0:1.23.23] should throw 
+FAIL Location's href: https://[0:1.23.23] should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'https://[0:1.23.23]' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): https://[0:1.23.23] should throw 
+FAIL URL's href: http://? should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://? should throw 
+PASS sendBeacon(): http://? should throw 
+FAIL Location's href: http://? should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://?' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://? should throw 
+FAIL URL's href: http://# should throw assert_throws: function "() => url.href = test.input" did not throw
+PASS XHR: http://# should throw 
+PASS sendBeacon(): http://# should throw 
+FAIL Location's href: http://# should throw assert_throws: function "() => self[0].location = test.input" threw object "SyntaxError: Failed to set the 'href' property on 'Location': 'http://#' is not a valid URL." ("SyntaxError") expected object "TypeError" ("TypeError")
+PASS window.open(): http://# should throw 
+FAIL URL's href: non-special://[:80/ should throw assert_throws: function "() => url.href = test.input" did not throw
+FAIL XHR: non-special://[:80/ should throw assert_throws: function "() => client.open("GET", test.input)" did not throw
+PASS sendBeacon(): non-special://[:80/ should throw 
+FAIL Location's href: non-special://[:80/ should throw assert_throws: function "() => self[0].location = test.input" did not throw
+FAIL window.open(): non-special://[:80/ should throw assert_throws: function "() => self.open(test.input).close()" did not throw
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/url-constructor-expected.txt b/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/url-constructor-expected.txt
new file mode 100644
index 0000000..c21a0c2b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/url-constructor-expected.txt
@@ -0,0 +1,532 @@
+This is a testharness.js-based test.
+Found 477 tests; 366 PASS, 111 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS URL.searchParams getter 
+PASS URL.searchParams updating, clearing 
+PASS URL.searchParams setter, invalid values 
+PASS URL.searchParams and URL.search setters, update propagation 
+PASS Loading data… 
+PASS Parsing: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Parsing: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Parsing: <https://test:@test> against <about:blank> 
+PASS Parsing: <https://:@test> against <about:blank> 
+FAIL Parsing: <non-special://test:@test/x> against <about:blank> assert_equals: href expected "non-special://test@test/x" but got "non-special://test:@test/x"
+FAIL Parsing: <non-special://:@test/x> against <about:blank> assert_equals: href expected "non-special://test/x" but got "non-special://:@test/x"
+PASS Parsing: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Parsing: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Parsing: < foo.com  > against <http://example.org/foo/bar> 
+FAIL Parsing: <a:	 foo.com> against <http://example.org/foo/bar> assert_equals: href expected "a: foo.com" but got "file:///A:/%20foo.com"
+PASS Parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing: <lolscheme:x x#x x> against <about:blank> 
+PASS Parsing: <http://f:/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:0/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:b/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f: /c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:fifty-two/c> against <http://example.org/foo/bar> 
+PASS Parsing: <http://f:999999/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <non-special://f:999999/c> against <http://example.org/foo/bar> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://f: 21 / b ? d # e > against <http://example.org/foo/bar> 
+PASS Parsing: <> against <http://example.org/foo/bar> 
+PASS Parsing: <  	> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <:> against <http://example.org/foo/bar> 
+PASS Parsing: <:a> against <http://example.org/foo/bar> 
+PASS Parsing: <:/> against <http://example.org/foo/bar> 
+PASS Parsing: <:\> against <http://example.org/foo/bar> 
+PASS Parsing: <:#> against <http://example.org/foo/bar> 
+PASS Parsing: <#> against <http://example.org/foo/bar> 
+PASS Parsing: <#/> against <http://example.org/foo/bar> 
+PASS Parsing: <#\> against <http://example.org/foo/bar> 
+PASS Parsing: <#;?> against <http://example.org/foo/bar> 
+PASS Parsing: <?> against <http://example.org/foo/bar> 
+PASS Parsing: </> against <http://example.org/foo/bar> 
+PASS Parsing: <:23> against <http://example.org/foo/bar> 
+PASS Parsing: </:23> against <http://example.org/foo/bar> 
+PASS Parsing: <::> against <http://example.org/foo/bar> 
+PASS Parsing: <::23> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://> against <http://example.org/foo/bar> assert_equals: pathname expected "" but got "//"
+PASS Parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Parsing: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/bar.com/> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: pathname expected "///////" but got "/////////"
+FAIL Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: pathname expected "///////bar.com/" but got "/////////bar.com/"
+FAIL Parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: pathname expected "//://///" but got "////://///"
+FAIL Parsing: <c:/foo> against <http://example.org/foo/bar> assert_equals: href expected "c:/foo" but got "file:///C:/foo"
+PASS Parsing: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Parsing: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Parsing: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Parsing: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[1::2]:3:4> against <http://example.org/foo/bar> 
+PASS Parsing: <http://2001::1> against <http://example.org/foo/bar> 
+PASS Parsing: <http://2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Parsing: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Parsing: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> 
+FAIL Parsing: <file:/example.com/> against <http://example.org/foo/bar> assert_equals: href expected "file:///example.com/" but got "file://example.com/"
+PASS Parsing: <file://example:1/> against <about:blank> 
+PASS Parsing: <file://example:test/> against <about:blank> 
+PASS Parsing: <file://example%/> against <about:blank> 
+PASS Parsing: <file://[example]/> against <about:blank> 
+PASS Parsing: <ftps:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:/example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <https:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftps:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <javascript:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <mailto:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: </a/b/c> against <http://example.org/foo/bar> 
+PASS Parsing: </a/ /c> against <http://example.org/foo/bar> 
+PASS Parsing: </a%2fc> against <http://example.org/foo/bar> 
+PASS Parsing: </a/%2f/c> against <http://example.org/foo/bar> 
+FAIL Parsing: <#β> against <http://example.org/foo/bar> assert_equals: href expected "http://example.org/foo/bar#%CE%B2" but got "http://example.org/foo/bar#β"
+PASS Parsing: <data:text/html,test#test> against <http://example.org/foo/bar> 
+PASS Parsing: <tel:1234567890> against <http://example.org/foo/bar> 
+FAIL Parsing: <file:c:\foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:/foo/bar.html" but got "file:///C:/foo/bar.html"
+FAIL Parsing: <  File:c|////foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:////foo/bar.html" but got "file:///C:////foo/bar.html"
+PASS Parsing: <C|/foo/bar> against <file:///tmp/mock/path> 
+PASS Parsing: </C|\foo\bar> against <file:///tmp/mock/path> 
+PASS Parsing: <//C|/foo/bar> against <file:///tmp/mock/path> 
+PASS Parsing: <//server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <\\server\file> against <file:///tmp/mock/path> 
+PASS Parsing: </\server/file> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///foo/bar.txt> against <file:///tmp/mock/path> 
+PASS Parsing: <file:///home/me> against <file:///tmp/mock/path> 
+PASS Parsing: <//> against <file:///tmp/mock/path> 
+PASS Parsing: <///> against <file:///tmp/mock/path> 
+PASS Parsing: <///test> against <file:///tmp/mock/path> 
+PASS Parsing: <file://test> against <file:///tmp/mock/path> 
+FAIL Parsing: <file://localhost> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/> against <file:///tmp/mock/path> assert_equals: href expected "file:///" but got "file://localhost/"
+FAIL Parsing: <file://localhost/test> against <file:///tmp/mock/path> assert_equals: href expected "file:///test" but got "file://localhost/test"
+PASS Parsing: <test> against <file:///tmp/mock/path> 
+PASS Parsing: <file:test> against <file:///tmp/mock/path> 
+PASS Parsing: <http://example.com/././foo> against <about:blank> 
+PASS Parsing: <http://example.com/./.foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo/.> against <about:blank> 
+PASS Parsing: <http://example.com/foo/./> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Parsing: <http://example.com/foo/..bar> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 
+FAIL Parsing: <http://example.com/foo/%2e%2> against <about:blank> assert_equals: href expected "http://example.com/foo/%2e%2" but got "http://example.com/foo/.%2"
+FAIL Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> assert_equals: href expected "http://example.com/%2e.bar" but got "http://example.com/..bar"
+PASS Parsing: <http://example.com////../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Parsing: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Parsing: <http://example.com/foo> against <about:blank> 
+PASS Parsing: <http://example.com/%20foo> against <about:blank> 
+PASS Parsing: <http://example.com/foo%> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Parsing: <http://example.com/foo%2©zbar> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%41%7a> against <about:blank> assert_equals: href expected "http://example.com/foo%41%7a" but got "http://example.com/fooAz"
+PASS Parsing: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Parsing: <http://example.com/foo%00%51> against <about:blank> Failed to construct 'URL': Invalid URL
+PASS Parsing: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Parsing: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Parsing: <http://example.com/foo	bar> against <about:blank> 
+PASS Parsing: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Parsing: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Parsing: <http://example.com/@asdf%40> against <about:blank> 
+PASS Parsing: <http://example.com/你好你好> against <about:blank> 
+PASS Parsing: <http://example.com/‥/foo> against <about:blank> 
+PASS Parsing: <http://example.com//foo> against <about:blank> 
+PASS Parsing: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Parsing: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+FAIL Parsing: <http://www.google.com/foo?bar=baz# »> against <about:blank> assert_equals: href expected "http://www.google.com/foo?bar=baz# %C2%BB" but got "http://www.google.com/foo?bar=baz# »"
+PASS Parsing: <data:test# »> against <about:blank> 
+PASS Parsing: <http://www.google.com> against <about:blank> 
+PASS Parsing: <http://192.0x00A80001> against <about:blank> 
+FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo%2Ehtml" but got "http://www/foo.html"
+PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 
+PASS Parsing: <http://user:pass@/> against <about:blank> 
+PASS Parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 
+PASS Parsing: <http://foo:80/> against <about:blank> 
+PASS Parsing: <http://foo:81/> against <about:blank> 
+FAIL Parsing: <httpa://foo:80/> against <about:blank> assert_equals: host expected "foo:80" but got ""
+PASS Parsing: <http://foo:-80/> against <about:blank> 
+PASS Parsing: <https://foo:443/> against <about:blank> 
+PASS Parsing: <https://foo:80/> against <about:blank> 
+PASS Parsing: <ftp://foo:21/> against <about:blank> 
+PASS Parsing: <ftp://foo:80/> against <about:blank> 
+PASS Parsing: <gopher://foo:70/> against <about:blank> 
+PASS Parsing: <gopher://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:80/> against <about:blank> 
+PASS Parsing: <ws://foo:81/> against <about:blank> 
+PASS Parsing: <ws://foo:443/> against <about:blank> 
+PASS Parsing: <ws://foo:815/> against <about:blank> 
+PASS Parsing: <wss://foo:80/> against <about:blank> 
+PASS Parsing: <wss://foo:81/> against <about:blank> 
+PASS Parsing: <wss://foo:443/> against <about:blank> 
+PASS Parsing: <wss://foo:815/> against <about:blank> 
+PASS Parsing: <http:/example.com/> against <about:blank> 
+PASS Parsing: <ftp:/example.com/> against <about:blank> 
+PASS Parsing: <https:/example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:/example.com/> against <about:blank> 
+FAIL Parsing: <file:/example.com/> against <about:blank> assert_equals: href expected "file:///example.com/" but got "file://example.com/"
+PASS Parsing: <ftps:/example.com/> against <about:blank> 
+PASS Parsing: <gopher:/example.com/> against <about:blank> 
+PASS Parsing: <ws:/example.com/> against <about:blank> 
+PASS Parsing: <wss:/example.com/> against <about:blank> 
+PASS Parsing: <data:/example.com/> against <about:blank> 
+PASS Parsing: <javascript:/example.com/> against <about:blank> 
+PASS Parsing: <mailto:/example.com/> against <about:blank> 
+PASS Parsing: <http:example.com/> against <about:blank> 
+PASS Parsing: <ftp:example.com/> against <about:blank> 
+PASS Parsing: <https:example.com/> against <about:blank> 
+PASS Parsing: <madeupscheme:example.com/> against <about:blank> 
+PASS Parsing: <ftps:example.com/> against <about:blank> 
+PASS Parsing: <gopher:example.com/> against <about:blank> 
+PASS Parsing: <ws:example.com/> against <about:blank> 
+PASS Parsing: <wss:example.com/> against <about:blank> 
+PASS Parsing: <data:example.com/> against <about:blank> 
+PASS Parsing: <javascript:example.com/> against <about:blank> 
+PASS Parsing: <mailto:example.com/> against <about:blank> 
+PASS Parsing: <http:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/@www.example.com> against <about:blank> 
+PASS Parsing: <http://@www.example.com> against <about:blank> 
+PASS Parsing: <http:a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://@pple.com> against <about:blank> 
+PASS Parsing: <http::b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/:b@www.example.com> against <about:blank> 
+PASS Parsing: <http://:b@www.example.com> against <about:blank> 
+PASS Parsing: <http:/:@/www.example.com> against <about:blank> 
+PASS Parsing: <http://user@/www.example.com> against <about:blank> 
+PASS Parsing: <http:@/www.example.com> against <about:blank> 
+PASS Parsing: <http:/@/www.example.com> against <about:blank> 
+PASS Parsing: <http://@/www.example.com> against <about:blank> 
+PASS Parsing: <https:@/www.example.com> against <about:blank> 
+PASS Parsing: <http:a:b@/www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:b@/www.example.com> against <about:blank> 
+PASS Parsing: <http://a:b@/www.example.com> against <about:blank> 
+PASS Parsing: <http::@/www.example.com> against <about:blank> 
+PASS Parsing: <http:a:@www.example.com> against <about:blank> 
+PASS Parsing: <http:/a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://a:@www.example.com> against <about:blank> 
+PASS Parsing: <http://www.@pple.com> against <about:blank> 
+PASS Parsing: <http:@:www.example.com> against <about:blank> 
+PASS Parsing: <http:/@:www.example.com> against <about:blank> 
+PASS Parsing: <http://@:www.example.com> against <about:blank> 
+PASS Parsing: <http://:@www.example.com> against <about:blank> 
+PASS Parsing: </> against <http://www.example.com/test> 
+PASS Parsing: </test.txt> against <http://www.example.com/test> 
+PASS Parsing: <.> against <http://www.example.com/test> 
+PASS Parsing: <..> against <http://www.example.com/test> 
+PASS Parsing: <test.txt> against <http://www.example.com/test> 
+PASS Parsing: <./test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <../../test.txt> against <http://www.example.com/test> 
+PASS Parsing: <中/test.txt> against <http://www.example.com/test> 
+PASS Parsing: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Parsing: <//www.example2.com> against <http://www.example.com/test> 
+FAIL Parsing: <file:...> against <http://www.example.com/test> assert_equals: href expected "file:///..." but got "file://.../"
+FAIL Parsing: <file:..> against <http://www.example.com/test> assert_equals: href expected "file:///" but got "file://../"
+FAIL Parsing: <file:a> against <http://www.example.com/test> assert_equals: href expected "file:///a" but got "file://a/"
+PASS Parsing: <http://ExAmPlE.CoM> against <http://other.com/> 
+FAIL Parsing: <http://example example.com> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <http://Goo%20 goo%7C|.com> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://[]> against <http://other.com/> 
+PASS Parsing: <http://[:]> against <http://other.com/> 
+FAIL Parsing: <http://GOO  goo.com> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Parsing: <http://www.foo。bar.com> against <http://other.com/> 
+PASS Parsing: <http://﷐zyx.com> against <http://other.com/> 
+PASS Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/> 
+PASS Parsing: <https://�> against <about:blank> 
+PASS Parsing: <https://%EF%BF%BD> against <about:blank> 
+FAIL Parsing: <https://x/�?�#�> against <about:blank> assert_equals: href expected "https://x/%EF%BF%BD?%EF%BF%BD#%EF%BF%BD" but got "https://x/%EF%BF%BD?%EF%BF%BD#\ufffd"
+PASS Parsing: <http://Go.com> against <http://other.com/> 
+FAIL Parsing: <http://%41.com> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://%00.com> against <http://other.com/> 
+PASS Parsing: <http://%ef%bc%85%ef%bc%90%ef%bc%90.com> against <http://other.com/> 
+PASS Parsing: <http://你好你好> against <http://other.com/> 
+FAIL Parsing: <https://faß.ExAmPlE/> against <about:blank> assert_equals: href expected "https://xn--fa-hia.example/" but got "https://fass.example/"
+FAIL Parsing: <sc://faß.ExAmPlE/> against <about:blank> assert_equals: host expected "fa%C3%9F.ExAmPlE" but got ""
+PASS Parsing: <http://%zz%66%a.com> against <http://other.com/> 
+PASS Parsing: <http://%25> against <http://other.com/> 
+PASS Parsing: <http://hello%00> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+PASS Parsing: <http://192.168.0.257> against <http://other.com/> 
+PASS Parsing: <http://%3g%78%63%30%2e%30%32%35%30%2E.01> against <http://other.com/> 
+FAIL Parsing: <http://192.168.0.1 hello> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <https://x x:12> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Parsing: <http://./> against <about:blank> 
+PASS Parsing: <http://../> against <about:blank> 
+PASS Parsing: <http://0..0x300/> against <about:blank> 
+PASS Parsing: <http://[www.google.com]/> against <about:blank> 
+PASS Parsing: <http://[google.com]> against <http://other.com/> 
+PASS Parsing: <http://[::1.2.3.4x]> against <http://other.com/> 
+FAIL Parsing: <http://[::1.2.3.]> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <http://[::1.2.]> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <http://[::1.]> against <http://other.com/> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <http://foo:💩@example.com/bar> against <http://other.com/> 
+PASS Parsing: <#> against <test:test> 
+PASS Parsing: <#x> against <mailto:x@x.com> 
+PASS Parsing: <#x> against <data:,> 
+PASS Parsing: <#x> against <about:blank> 
+PASS Parsing: <#> against <test:test?test> 
+PASS Parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Parsing: </some/path> against <http://user@example.org/smth> 
+PASS Parsing: <> against <http://user:pass@example.org:21/smth> 
+PASS Parsing: </some/path> against <http://user:pass@example.org:21/smth> 
+PASS Parsing: <i> against <sc:sd> 
+PASS Parsing: <i> against <sc:sd/sd> 
+PASS Parsing: <i> against <sc:/pa/pa> 
+FAIL Parsing: <i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/i" but got "///pa/i"
+PASS Parsing: <../i> against <sc:sd> 
+PASS Parsing: <../i> against <sc:sd/sd> 
+PASS Parsing: <../i> against <sc:/pa/pa> 
+FAIL Parsing: <../i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <../i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+PASS Parsing: </i> against <sc:sd> 
+PASS Parsing: </i> against <sc:sd/sd> 
+PASS Parsing: </i> against <sc:/pa/pa> 
+FAIL Parsing: </i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: </i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:///pa/i"
+PASS Parsing: <?i> against <sc:sd> 
+PASS Parsing: <?i> against <sc:sd/sd> 
+PASS Parsing: <?i> against <sc:/pa/pa> 
+FAIL Parsing: <?i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <?i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+PASS Parsing: <#i> against <sc:sd> 
+PASS Parsing: <#i> against <sc:sd/sd> 
+PASS Parsing: <#i> against <sc:/pa/pa> 
+FAIL Parsing: <#i> against <sc://ho/pa> assert_equals: host expected "ho" but got ""
+FAIL Parsing: <#i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+FAIL Parsing: <about:/../> against <about:blank> assert_equals: href expected "about:/" but got "about:/../"
+FAIL Parsing: <data:/../> against <about:blank> assert_equals: href expected "data:/" but got "data:/../"
+FAIL Parsing: <javascript:/../> against <about:blank> assert_equals: href expected "javascript:/" but got "javascript:/../"
+FAIL Parsing: <mailto:/../> against <about:blank> assert_equals: href expected "mailto:/" but got "mailto:/../"
+FAIL Parsing: <sc://ñ.test/> against <about:blank> assert_equals: host expected "%C3%B1.test" but got ""
+FAIL Parsing: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: host expected "%1F!\"$&'()*+,-.;<=>^_`{|}~" but got ""
+FAIL Parsing: <sc://\0/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc:// /> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://%/> against <about:blank> assert_equals: host expected "%" but got ""
+FAIL Parsing: <sc://@/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://te@s:t@/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://:/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://:12/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://[/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://\/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <sc://]/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+FAIL Parsing: <x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+PASS Parsing: <sc:\../> against <about:blank> 
+PASS Parsing: <sc::a@example.net> against <about:blank> 
+PASS Parsing: <wow:%NBD> against <about:blank> 
+PASS Parsing: <wow:%1G> against <about:blank> 
+PASS Parsing: <ftp://example.com%80/> against <about:blank> 
+PASS Parsing: <ftp://example.com%A0/> against <about:blank> 
+PASS Parsing: <https://example.com%80/> against <about:blank> 
+PASS Parsing: <https://example.com%A0/> against <about:blank> 
+PASS Parsing: <ftp://%e2%98%83> against <about:blank> 
+PASS Parsing: <https://%e2%98%83> against <about:blank> 
+PASS Parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Parsing: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Parsing: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <http://example.org/foo/bar> 
+PASS Parsing: <http:> against <https://example.org/foo/bar> 
+PASS Parsing: <sc:> against <https://example.org/foo/bar> 
+PASS Parsing: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Parsing: <http://192.168.257> against <http://other.com/> 
+PASS Parsing: <http://192.168.257.com> against <http://other.com/> 
+PASS Parsing: <http://256> against <http://other.com/> 
+PASS Parsing: <http://256.com> against <http://other.com/> 
+PASS Parsing: <http://999999999> against <http://other.com/> 
+PASS Parsing: <http://999999999.com> against <http://other.com/> 
+PASS Parsing: <http://10000000000> against <http://other.com/> 
+PASS Parsing: <http://10000000000.com> against <http://other.com/> 
+PASS Parsing: <http://4294967295> against <http://other.com/> 
+PASS Parsing: <http://4294967296> against <http://other.com/> 
+PASS Parsing: <http://0xffffffff> against <http://other.com/> 
+PASS Parsing: <http://0xffffffff1> against <http://other.com/> 
+PASS Parsing: <http://256.256.256.256> against <http://other.com/> 
+PASS Parsing: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Parsing: <https://0x.0x.0> against <about:blank> 
+PASS Parsing: <file:///C%3A/> against <about:blank> 
+PASS Parsing: <file:///C%7C/> against <about:blank> 
+PASS Parsing: <pix/submit.gif> against <file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html> 
+PASS Parsing: <..> against <file:///C:/> 
+PASS Parsing: <..> against <file:///> 
+PASS Parsing: </> against <file:///C:/a/b> 
+FAIL Parsing: <//d:> against <file:///C:/a/b> assert_equals: href expected "file:///d:" but got "file:///D:/"
+FAIL Parsing: <//d:/..> against <file:///C:/a/b> assert_equals: href expected "file:///d:/" but got "file:///D:/"
+PASS Parsing: <..> against <file:///ab:/> 
+PASS Parsing: <..> against <file:///1:/> 
+PASS Parsing: <> against <file:///test?test#test> 
+PASS Parsing: <file:> against <file:///test?test#test> 
+PASS Parsing: <?x> against <file:///test?test#test> 
+PASS Parsing: <file:?x> against <file:///test?test#test> 
+PASS Parsing: <#x> against <file:///test?test#test> 
+PASS Parsing: <file:#x> against <file:///test?test#test> 
+PASS Parsing: <file:\\//> against <about:blank> 
+PASS Parsing: <file:\\\\> against <about:blank> 
+FAIL Parsing: <file:\\\\?fox> against <about:blank> Failed to construct 'URL': Invalid URL
+FAIL Parsing: <file:\\\\#guppy> against <about:blank> assert_equals: href expected "file:///#guppy" but got "file://%23guppy/"
+FAIL Parsing: <file://spider///> against <about:blank> assert_equals: href expected "file://spider/" but got "file://spider///"
+FAIL Parsing: <file:\\localhost//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost//"
+PASS Parsing: <file:///localhost//cat> against <about:blank> 
+FAIL Parsing: <file://\/localhost//cat> against <about:blank> assert_equals: href expected "file:///localhost//cat" but got "file://localhost//cat"
+FAIL Parsing: <file://localhost//a//../..//> against <about:blank> assert_equals: href expected "file:///" but got "file://localhost///"
+FAIL Parsing: </////mouse> against <file:///elephant> assert_equals: href expected "file:///mouse" but got "file://mouse/"
+PASS Parsing: <\//pig> against <file://lion/> 
+FAIL Parsing: <\/localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: <//localhost//pig> against <file://lion/> assert_equals: href expected "file:///pig" but got "file://localhost//pig"
+FAIL Parsing: </..//localhost//pig> against <file://lion/> assert_equals: href expected "file://lion/localhost//pig" but got "file://lion//localhost//pig"
+PASS Parsing: <file://> against <file://ape/> 
+PASS Parsing: </rooibos> against <file://tea/> 
+PASS Parsing: </?chai> against <file://tea/> 
+FAIL Parsing: <C|> against <file://host/dir/file> assert_equals: href expected "file:///C:" but got "file:///C:/"
+FAIL Parsing: <C|#> against <file://host/dir/file> assert_equals: href expected "file:///C:#" but got "file:///C:/#"
+FAIL Parsing: <C|?> against <file://host/dir/file> assert_equals: href expected "file:///C:?" but got "file:///C:/?"
+PASS Parsing: <C|/> against <file://host/dir/file> 
+PASS Parsing: <C|\> against <file://host/dir/file> 
+PASS Parsing: <C> against <file://host/dir/file> 
+FAIL Parsing: <C|a> against <file://host/dir/file> assert_equals: href expected "file://host/dir/C|a" but got "file:///C:/a"
+PASS Parsing: <file://example.net/C:/> against <about:blank> 
+PASS Parsing: <file://1.2.3.4/C:/> against <about:blank> 
+PASS Parsing: <file://[1::8]/C:/> against <about:blank> 
+PASS Parsing: <file:/C|/> against <about:blank> 
+PASS Parsing: <file://C|/> against <about:blank> 
+PASS Parsing: <file:> against <about:blank> 
+FAIL Parsing: <file:?q=v> against <about:blank> Failed to construct 'URL': Invalid URL
+FAIL Parsing: <file:#frag> against <about:blank> assert_equals: href expected "file:///#frag" but got "file://%23frag/"
+PASS Parsing: <http://[1:0::]> against <http://example.net/> 
+PASS Parsing: <http://[0:1:2:3:4:5:6:7:8]> against <http://example.net/> 
+PASS Parsing: <https://[0::0::0]> against <about:blank> 
+PASS Parsing: <https://[0:.0]> against <about:blank> 
+PASS Parsing: <https://[0:0:]> against <about:blank> 
+PASS Parsing: <https://[0:1:2:3:4:5:6:7.0.0.0.1]> against <about:blank> 
+PASS Parsing: <https://[0:1.00.0.0.0]> against <about:blank> 
+PASS Parsing: <https://[0:1.290.0.0.0]> against <about:blank> 
+PASS Parsing: <https://[0:1.23.23]> against <about:blank> 
+PASS Parsing: <http://?> against <about:blank> 
+PASS Parsing: <http://#> against <about:blank> 
+FAIL Parsing: <sc://ñ> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ?x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <sc://ñ#x> against <about:blank> assert_equals: host expected "%C3%B1" but got ""
+FAIL Parsing: <#x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+FAIL Parsing: <?x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+FAIL Parsing: <sc://?> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <sc://#> against <about:blank> assert_equals: pathname expected "" but got "//"
+FAIL Parsing: <///> against <sc://x/> Failed to construct 'URL': Invalid URL
+FAIL Parsing: <////> against <sc://x/> Failed to construct 'URL': Invalid URL
+FAIL Parsing: <////x/> against <sc://x/> assert_equals: href expected "sc:////x/" but got "sc://x/"
+FAIL Parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: host expected "foobar.com" but got ""
+FAIL Parsing: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: username expected "user" but got ""
+FAIL Parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: host expected "10.10.10.10:7777" but got ""
+FAIL Parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <rsync://foo@host:911/sup> against <about:blank> assert_equals: username expected "foo" but got ""
+FAIL Parsing: <git://github.com/foo/bar.git> against <about:blank> assert_equals: host expected "github.com" but got ""
+FAIL Parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: host expected "myserver.com:6999" but got ""
+FAIL Parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: host expected "fw.example.org:9999" but got ""
+FAIL Parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: host expected "localhost:389" but got ""
+FAIL Parsing: <git+https://github.com/foo/bar> against <about:blank> assert_equals: host expected "github.com" but got ""
+PASS Parsing: <urn:ietf:rfc:2648> against <about:blank> 
+PASS Parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank> 
+FAIL Parsing: <non-special://%E2%80%A0/> against <about:blank> assert_equals: host expected "%E2%80%A0" but got ""
+FAIL Parsing: <non-special://H%4fSt/path> against <about:blank> assert_equals: host expected "H%4fSt" but got ""
+FAIL Parsing: <non-special://[1:2:0:0:5:0:0:0]/> against <about:blank> assert_equals: href expected "non-special://[1:2:0:0:5::]/" but got "non-special://[1:2:0:0:5:0:0:0]/"
+FAIL Parsing: <non-special://[1:2:0:0:0:0:0:3]/> against <about:blank> assert_equals: href expected "non-special://[1:2::3]/" but got "non-special://[1:2:0:0:0:0:0:3]/"
+FAIL Parsing: <non-special://[1:2::3]:80/> against <about:blank> assert_equals: host expected "[1:2::3]:80" but got ""
+FAIL Parsing: <non-special://[:80/> against <about:blank> assert_throws: function "function () {
+          bURL(expected.input, expected.base)
+        }" did not throw
+PASS Parsing: <blob:https://example.com:443/> against <about:blank> 
+PASS Parsing: <blob:d3958f5c-0777-0845-9dcf-2cb28783acaf> against <about:blank> 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/url-origin-expected.txt b/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/url-origin-expected.txt
new file mode 100644
index 0000000..af23b30
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/url-origin-expected.txt
@@ -0,0 +1,307 @@
+This is a testharness.js-based test.
+Found 294 tests; 217 PASS, 77 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+PASS Origin parsing: <http://example	.
+org> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> 
+PASS Origin parsing: <https://test:@test> against <about:blank> 
+PASS Origin parsing: <https://:@test> against <about:blank> 
+FAIL Origin parsing: <non-special://test:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+FAIL Origin parsing: <non-special://:@test/x> against <about:blank> assert_equals: origin expected "null" but got "non-special://"
+PASS Origin parsing: <http:foo.com> against <http://example.org/foo/bar> 
+PASS Origin parsing: <	   :foo.com   
+> against <http://example.org/foo/bar> 
+PASS Origin parsing: < foo.com  > against <http://example.org/foo/bar> 
+FAIL Origin parsing: <a:	 foo.com> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "file://"
+PASS Origin parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://f:/c> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <http://f:0/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+FAIL Origin parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+PASS Origin parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://f:
+/c> against <http://example.org/foo/bar> 
+PASS Origin parsing: <> against <http://example.org/foo/bar> 
+PASS Origin parsing: <  	> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:foo.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:foo.com\> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:a> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:\> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:#> against <http://example.org/foo/bar> 
+PASS Origin parsing: <#> against <http://example.org/foo/bar> 
+PASS Origin parsing: <#/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <#\> against <http://example.org/foo/bar> 
+PASS Origin parsing: <#;?> against <http://example.org/foo/bar> 
+PASS Origin parsing: <?> against <http://example.org/foo/bar> 
+PASS Origin parsing: </> against <http://example.org/foo/bar> 
+PASS Origin parsing: <:23> against <http://example.org/foo/bar> 
+PASS Origin parsing: </:23> against <http://example.org/foo/bar> 
+PASS Origin parsing: <::> against <http://example.org/foo/bar> 
+PASS Origin parsing: <::23> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <foo://> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+PASS Origin parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http::@c:29> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://::@c@d:2> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <foo:/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Origin parsing: <foo:/bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Origin parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Origin parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Origin parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
+FAIL Origin parsing: <c:/foo> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "file://"
+PASS Origin parsing: <//foo/bar> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> 
+PASS Origin parsing: <[61:24:74]:98> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http:[61:27]/:foo> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://[2001::1]> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://[::127.0.0.1]> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http://[2001::1]:80> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <ftp:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <https:/example.com/> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Origin parsing: <ftps:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Origin parsing: <gopher:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <ws:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <wss:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <data:/example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <javascript:/example.com/> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <mailto:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Origin parsing: <http:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <ftp:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <https:example.com/> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Origin parsing: <ftps:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Origin parsing: <gopher:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <ws:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <wss:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <data:example.com/> against <http://example.org/foo/bar> 
+PASS Origin parsing: <javascript:example.com/> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <mailto:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Origin parsing: </a/b/c> against <http://example.org/foo/bar> 
+PASS Origin parsing: </a/ /c> against <http://example.org/foo/bar> 
+PASS Origin parsing: </a%2fc> against <http://example.org/foo/bar> 
+PASS Origin parsing: </a/%2f/c> against <http://example.org/foo/bar> 
+PASS Origin parsing: <#β> against <http://example.org/foo/bar> 
+PASS Origin parsing: <data:text/html,test#test> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <tel:1234567890> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "tel://"
+PASS Origin parsing: <http://example.com/././foo> against <about:blank> 
+PASS Origin parsing: <http://example.com/./.foo> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/.> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/./> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar/..> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar/../> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/..bar> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar/../ton> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/../../..> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/../../../ton> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/%2e> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/%2e%2> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 
+PASS Origin parsing: <http://example.com////../..> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar//../..> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo/bar//..> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo> against <about:blank> 
+PASS Origin parsing: <http://example.com/%20foo> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo%> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo%2> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo%2zbar> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo%2©zbar> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo%41%7a> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo	‘%91> against <about:blank> 
+FAIL Origin parsing: <http://example.com/foo%00%51> against <about:blank> Failed to construct 'URL': Invalid URL
+PASS Origin parsing: <http://example.com/(%28:%3A%29)> against <about:blank> 
+PASS Origin parsing: <http://example.com/%3A%3a%3C%3c> against <about:blank> 
+PASS Origin parsing: <http://example.com/foo	bar> against <about:blank> 
+PASS Origin parsing: <http://example.com\\foo\\bar> against <about:blank> 
+PASS Origin parsing: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> 
+PASS Origin parsing: <http://example.com/@asdf%40> against <about:blank> 
+PASS Origin parsing: <http://example.com/你好你好> against <about:blank> 
+PASS Origin parsing: <http://example.com/‥/foo> against <about:blank> 
+PASS Origin parsing: <http://example.com//foo> against <about:blank> 
+PASS Origin parsing: <http://example.com/‮/foo/‭/bar> against <about:blank> 
+PASS Origin parsing: <http://www.google.com/foo?bar=baz#> against <about:blank> 
+PASS Origin parsing: <http://www.google.com/foo?bar=baz# »> against <about:blank> 
+PASS Origin parsing: <data:test# »> against <about:blank> 
+PASS Origin parsing: <http://www.google.com> against <about:blank> 
+PASS Origin parsing: <http://192.0x00A80001> against <about:blank> 
+PASS Origin parsing: <http://www/foo%2Ehtml> against <about:blank> 
+PASS Origin parsing: <http://www/foo/%2E/html> against <about:blank> 
+PASS Origin parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
+PASS Origin parsing: <http:\\www.google.com\foo> against <about:blank> 
+PASS Origin parsing: <http://foo:80/> against <about:blank> 
+PASS Origin parsing: <http://foo:81/> against <about:blank> 
+FAIL Origin parsing: <httpa://foo:80/> against <about:blank> assert_equals: origin expected "null" but got "httpa://"
+PASS Origin parsing: <https://foo:443/> against <about:blank> 
+PASS Origin parsing: <https://foo:80/> against <about:blank> 
+PASS Origin parsing: <ftp://foo:21/> against <about:blank> 
+PASS Origin parsing: <ftp://foo:80/> against <about:blank> 
+PASS Origin parsing: <gopher://foo:70/> against <about:blank> 
+PASS Origin parsing: <gopher://foo:443/> against <about:blank> 
+PASS Origin parsing: <ws://foo:80/> against <about:blank> 
+PASS Origin parsing: <ws://foo:81/> against <about:blank> 
+PASS Origin parsing: <ws://foo:443/> against <about:blank> 
+PASS Origin parsing: <ws://foo:815/> against <about:blank> 
+PASS Origin parsing: <wss://foo:80/> against <about:blank> 
+PASS Origin parsing: <wss://foo:81/> against <about:blank> 
+PASS Origin parsing: <wss://foo:443/> against <about:blank> 
+PASS Origin parsing: <wss://foo:815/> against <about:blank> 
+PASS Origin parsing: <http:/example.com/> against <about:blank> 
+PASS Origin parsing: <ftp:/example.com/> against <about:blank> 
+PASS Origin parsing: <https:/example.com/> against <about:blank> 
+FAIL Origin parsing: <madeupscheme:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Origin parsing: <ftps:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Origin parsing: <gopher:/example.com/> against <about:blank> 
+PASS Origin parsing: <ws:/example.com/> against <about:blank> 
+PASS Origin parsing: <wss:/example.com/> against <about:blank> 
+PASS Origin parsing: <data:/example.com/> against <about:blank> 
+PASS Origin parsing: <javascript:/example.com/> against <about:blank> 
+FAIL Origin parsing: <mailto:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Origin parsing: <http:example.com/> against <about:blank> 
+PASS Origin parsing: <ftp:example.com/> against <about:blank> 
+PASS Origin parsing: <https:example.com/> against <about:blank> 
+FAIL Origin parsing: <madeupscheme:example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+FAIL Origin parsing: <ftps:example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Origin parsing: <gopher:example.com/> against <about:blank> 
+PASS Origin parsing: <ws:example.com/> against <about:blank> 
+PASS Origin parsing: <wss:example.com/> against <about:blank> 
+PASS Origin parsing: <data:example.com/> against <about:blank> 
+PASS Origin parsing: <javascript:example.com/> against <about:blank> 
+FAIL Origin parsing: <mailto:example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Origin parsing: <http:@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:/@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:a:b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:/a:b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://a:b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://@pple.com> against <about:blank> 
+PASS Origin parsing: <http::b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:/:b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://:b@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:a:@www.example.com> against <about:blank> 
+PASS Origin parsing: <http:/a:@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://a:@www.example.com> against <about:blank> 
+PASS Origin parsing: <http://www.@pple.com> against <about:blank> 
+PASS Origin parsing: <http://:@www.example.com> against <about:blank> 
+PASS Origin parsing: </> against <http://www.example.com/test> 
+PASS Origin parsing: </test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <.> against <http://www.example.com/test> 
+PASS Origin parsing: <..> against <http://www.example.com/test> 
+PASS Origin parsing: <test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <./test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <../test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <../aaa/test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <../../test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <中/test.txt> against <http://www.example.com/test> 
+PASS Origin parsing: <http://www.example2.com> against <http://www.example.com/test> 
+PASS Origin parsing: <//www.example2.com> against <http://www.example.com/test> 
+PASS Origin parsing: <http://ExAmPlE.CoM> against <http://other.com/> 
+PASS Origin parsing: <http://GOO​⁠goo.com> against <http://other.com/> 
+PASS Origin parsing: <http://www.foo。bar.com> against <http://other.com/> 
+PASS Origin parsing: <https://x/�?�#�> against <about:blank> 
+PASS Origin parsing: <http://Go.com> against <http://other.com/> 
+FAIL Origin parsing: <http://你好你好> against <http://other.com/> assert_equals: origin expected "http://你好你好" but got "http://xn--6qqa088eba"
+FAIL Origin parsing: <https://faß.ExAmPlE/> against <about:blank> assert_equals: origin expected "https://faß.example" but got "https://fass.example"
+PASS Origin parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Origin parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
+PASS Origin parsing: <http://0Xc0.0250.01> against <http://other.com/> 
+PASS Origin parsing: <http://./> against <about:blank> 
+PASS Origin parsing: <http://../> against <about:blank> 
+PASS Origin parsing: <http://0..0x300/> against <about:blank> 
+PASS Origin parsing: <http://foo:💩@example.com/bar> against <http://other.com/> 
+FAIL Origin parsing: <#> against <test:test> assert_equals: origin expected "null" but got "test://"
+FAIL Origin parsing: <#x> against <mailto:x@x.com> assert_equals: origin expected "null" but got "mailto://"
+PASS Origin parsing: <#x> against <data:,> 
+PASS Origin parsing: <#x> against <about:blank> 
+FAIL Origin parsing: <#> against <test:test?test> assert_equals: origin expected "null" but got "test://"
+PASS Origin parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Origin parsing: <https://@@@example> against <http://doesnotmatter/> 
+PASS Origin parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
+PASS Origin parsing: </some/path> against <http://user@example.org/smth> 
+PASS Origin parsing: <> against <http://user:pass@example.org:21/smth> 
+PASS Origin parsing: </some/path> against <http://user:pass@example.org:21/smth> 
+FAIL Origin parsing: <i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <../i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <../i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <../i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: </i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: </i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: </i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <?i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <?i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <?i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#i> against <sc:sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#i> against <sc:sd/sd> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Origin parsing: <about:/../> against <about:blank> 
+PASS Origin parsing: <data:/../> against <about:blank> 
+PASS Origin parsing: <javascript:/../> against <about:blank> 
+FAIL Origin parsing: <mailto:/../> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+FAIL Origin parsing: <sc://ñ.test/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+FAIL Origin parsing: <sc:\../> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <sc::a@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <wow:%NBD> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Origin parsing: <wow:%1G> against <about:blank> assert_equals: origin expected "null" but got "wow://"
+FAIL Origin parsing: <ftp://%e2%98%83> against <about:blank> assert_equals: origin expected "ftp://☃" but got "ftp://xn--n3h"
+FAIL Origin parsing: <https://%e2%98%83> against <about:blank> assert_equals: origin expected "https://☃" but got "https://xn--n3h"
+PASS Origin parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
+PASS Origin parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
+PASS Origin parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
+PASS Origin parsing: <h	t
+t\rp://h	o
+s\rt:9	0
+0\r0/p	a
+t\rh?q	u
+e\rry#f	r
+a\rg> against <about:blank> 
+PASS Origin parsing: <?a=b&c=d> against <http://example.org/foo/bar> 
+PASS Origin parsing: <??a=b&c=d> against <http://example.org/foo/bar> 
+PASS Origin parsing: <http:> against <http://example.org/foo/bar> 
+FAIL Origin parsing: <sc:> against <https://example.org/foo/bar> assert_equals: origin expected "null" but got "sc://"
+PASS Origin parsing: <http://foo.bar/baz?qux#foobar> against <about:blank> 
+PASS Origin parsing: <http://192.168.257> against <http://other.com/> 
+PASS Origin parsing: <http://192.168.257.com> against <http://other.com/> 
+PASS Origin parsing: <http://256> against <http://other.com/> 
+PASS Origin parsing: <http://256.com> against <http://other.com/> 
+PASS Origin parsing: <http://999999999> against <http://other.com/> 
+PASS Origin parsing: <http://999999999.com> against <http://other.com/> 
+PASS Origin parsing: <http://10000000000.com> against <http://other.com/> 
+PASS Origin parsing: <http://4294967295> against <http://other.com/> 
+PASS Origin parsing: <http://0xffffffff> against <http://other.com/> 
+PASS Origin parsing: <http://256.256.256.256.256> against <http://other.com/> 
+PASS Origin parsing: <https://0x.0x.0> against <about:blank> 
+PASS Origin parsing: <http://[1:0::]> against <http://example.net/> 
+FAIL Origin parsing: <sc://ñ> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <sc://ñ?x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <sc://ñ#x> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+FAIL Origin parsing: <#x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+FAIL Origin parsing: <?x> against <sc://ñ> Failed to construct 'URL': Invalid URL
+FAIL Origin parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: origin expected "null" but got "tftp://"
+FAIL Origin parsing: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: origin expected "null" but got "telnet://"
+FAIL Origin parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: origin expected "null" but got "ut2004://"
+FAIL Origin parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: origin expected "null" but got "redis://"
+FAIL Origin parsing: <rsync://foo@host:911/sup> against <about:blank> assert_equals: origin expected "null" but got "rsync://"
+FAIL Origin parsing: <git://github.com/foo/bar.git> against <about:blank> assert_equals: origin expected "null" but got "git://"
+FAIL Origin parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: origin expected "null" but got "irc://"
+FAIL Origin parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: origin expected "null" but got "dns://"
+FAIL Origin parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: origin expected "null" but got "ldap://"
+FAIL Origin parsing: <git+https://github.com/foo/bar> against <about:blank> assert_equals: origin expected "null" but got "git+https://"
+FAIL Origin parsing: <urn:ietf:rfc:2648> against <about:blank> assert_equals: origin expected "null" but got "urn://"
+FAIL Origin parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank> assert_equals: origin expected "null" but got "tag://"
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/url-setters-expected.txt b/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/url-setters-expected.txt
new file mode 100644
index 0000000..721366e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win/external/wpt/url/url-setters-expected.txt
@@ -0,0 +1,596 @@
+This is a testharness.js-based test.
+Found 571 tests; 245 PASS, 326 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS Loading data… 
+FAIL URL: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged. assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL <a>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged. assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL <area>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged. assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL URL: Setting <a://example.net>.protocol = 'b' assert_equals: expected "b://example.net" but got "file:///B:///A://example.net"
+FAIL <a>: Setting <a://example.net>.protocol = 'b' assert_equals: expected "b://example.net" but got "file:///B:///A://example.net"
+FAIL <area>: Setting <a://example.net>.protocol = 'b' assert_equals: expected "b://example.net" but got "file:///B:///A://example.net"
+PASS URL: Setting <javascript:alert(1)>.protocol = 'defuse' 
+PASS <a>: Setting <javascript:alert(1)>.protocol = 'defuse' 
+PASS <area>: Setting <javascript:alert(1)>.protocol = 'defuse' 
+FAIL URL: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased assert_equals: expected "b://example.net" but got "file:///B:///A://example.net"
+FAIL <a>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased assert_equals: expected "b://example.net" but got "file:///B:///A://example.net"
+FAIL <area>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased assert_equals: expected "b://example.net" but got "file:///B:///A://example.net"
+FAIL URL: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL <a>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL <area>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL URL: Setting <a://example.net>.protocol = '0b' No leading digit assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL <a>: Setting <a://example.net>.protocol = '0b' No leading digit assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL <area>: Setting <a://example.net>.protocol = '0b' No leading digit assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL URL: Setting <a://example.net>.protocol = '+b' No leading punctuation assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL <a>: Setting <a://example.net>.protocol = '+b' No leading punctuation assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL <area>: Setting <a://example.net>.protocol = '+b' No leading punctuation assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL URL: Setting <a://example.net>.protocol = 'bC0+-.' assert_equals: expected "bc0+-.://example.net" but got "bc0+-.:///A://example.net"
+FAIL <a>: Setting <a://example.net>.protocol = 'bC0+-.' assert_equals: expected "bc0+-.://example.net" but got "bc0+-.:///A://example.net"
+FAIL <area>: Setting <a://example.net>.protocol = 'bC0+-.' assert_equals: expected "bc0+-.://example.net" but got "bc0+-.:///A://example.net"
+FAIL URL: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL <a>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL <area>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL URL: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL <a>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL <area>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected assert_equals: expected "a://example.net" but got "file:///A://example.net"
+FAIL URL: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to file assert_equals: expected "http://test@example.net/" but got "file://test%40example.net/"
+FAIL <a>: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to file assert_equals: expected "http://test@example.net/" but got "file://test%40example.net/"
+FAIL <area>: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to file assert_equals: expected "http://test@example.net/" but got "file://test%40example.net/"
+FAIL URL: Setting <gopher://example.net:1234>.protocol = 'file' assert_equals: expected "gopher://example.net:1234/" but got "file://example.net:1234/"
+FAIL <a>: Setting <gopher://example.net:1234>.protocol = 'file' assert_equals: expected "gopher://example.net:1234/" but got "file://example.net:1234/"
+FAIL <area>: Setting <gopher://example.net:1234>.protocol = 'file' assert_equals: expected "gopher://example.net:1234/" but got "file://example.net:1234/"
+FAIL URL: Setting <wss://x:x@example.net:1234>.protocol = 'file' assert_equals: expected "wss://x:x@example.net:1234/" but got "file:///X:/x@example.net:1234/"
+FAIL <a>: Setting <wss://x:x@example.net:1234>.protocol = 'file' assert_equals: expected "wss://x:x@example.net:1234/" but got "file:///X:/x@example.net:1234/"
+FAIL <area>: Setting <wss://x:x@example.net:1234>.protocol = 'file' assert_equals: expected "wss://x:x@example.net:1234/" but got "file:///X:/x@example.net:1234/"
+FAIL URL: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host assert_equals: expected "file:///" but got "http://localhost/"
+FAIL <a>: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host assert_equals: expected "file:///" but got "http://localhost/"
+FAIL <area>: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host assert_equals: expected "file:///" but got "http://localhost/"
+FAIL URL: Setting <file:///test>.protocol = 'gopher' assert_equals: expected "file:///test" but got "gopher://test/"
+FAIL <a>: Setting <file:///test>.protocol = 'gopher' assert_equals: expected "file:///test" but got "gopher://test/"
+FAIL <area>: Setting <file:///test>.protocol = 'gopher' assert_equals: expected "file:///test" but got "gopher://test/"
+FAIL URL: Setting <file:>.protocol = 'wss' assert_equals: expected "file:///" but got "wss:"
+FAIL <a>: Setting <file:>.protocol = 'wss' assert_equals: expected "file:///" but got "wss:"
+FAIL <area>: Setting <file:>.protocol = 'wss' assert_equals: expected "file:///" but got "wss:"
+FAIL URL: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special assert_equals: expected "http://example.net/" but got "file:///B://example.net/"
+FAIL <a>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special assert_equals: expected "http://example.net/" but got "file:///B://example.net/"
+FAIL <area>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special assert_equals: expected "http://example.net/" but got "file:///B://example.net/"
+FAIL URL: Setting <file://hi/path>.protocol = 's' assert_equals: expected "file://hi/path" but got "file:///S://hi/path"
+FAIL <a>: Setting <file://hi/path>.protocol = 's' assert_equals: expected "file://hi/path" but got "file:///S://hi/path"
+FAIL <area>: Setting <file://hi/path>.protocol = 's' assert_equals: expected "file://hi/path" but got "file:///S://hi/path"
+FAIL URL: Setting <https://example.net>.protocol = 's' assert_equals: expected "https://example.net/" but got "file:///S://example.net/"
+FAIL <a>: Setting <https://example.net>.protocol = 's' assert_equals: expected "https://example.net/" but got "file:///S://example.net/"
+FAIL <area>: Setting <https://example.net>.protocol = 's' assert_equals: expected "https://example.net/" but got "file:///S://example.net/"
+FAIL URL: Setting <ftp://example.net>.protocol = 'test' assert_equals: expected "ftp://example.net/" but got "test://example.net/"
+FAIL <a>: Setting <ftp://example.net>.protocol = 'test' assert_equals: expected "ftp://example.net/" but got "test://example.net/"
+FAIL <area>: Setting <ftp://example.net>.protocol = 'test' assert_equals: expected "ftp://example.net/" but got "test://example.net/"
+FAIL URL: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must. assert_equals: expected "mailto:me@example.net" but got "http://me@example.net/"
+FAIL <a>: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must. assert_equals: expected "mailto:me@example.net" but got "http://me@example.net/"
+FAIL <area>: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must. assert_equals: expected "mailto:me@example.net" but got "http://me@example.net/"
+FAIL URL: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special assert_equals: expected "ssh://me@example.net" but got "http://me@example.net/"
+FAIL <a>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special assert_equals: expected "ssh://me@example.net" but got "http://me@example.net/"
+FAIL <area>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special assert_equals: expected "ssh://me@example.net" but got "http://me@example.net/"
+FAIL URL: Setting <ssh://me@example.net>.protocol = 'gopher' assert_equals: expected "ssh://me@example.net" but got "gopher://me@example.net/"
+FAIL <a>: Setting <ssh://me@example.net>.protocol = 'gopher' assert_equals: expected "ssh://me@example.net" but got "gopher://me@example.net/"
+FAIL <area>: Setting <ssh://me@example.net>.protocol = 'gopher' assert_equals: expected "ssh://me@example.net" but got "gopher://me@example.net/"
+FAIL URL: Setting <ssh://me@example.net>.protocol = 'file' assert_equals: expected "ssh://me@example.net" but got "file://me%40example.net/"
+FAIL <a>: Setting <ssh://me@example.net>.protocol = 'file' assert_equals: expected "ssh://me@example.net" but got "file://me%40example.net/"
+FAIL <area>: Setting <ssh://me@example.net>.protocol = 'file' assert_equals: expected "ssh://me@example.net" but got "file://me%40example.net/"
+FAIL URL: Setting <ssh://example.net>.protocol = 'file' assert_equals: expected "ssh://example.net" but got "file://example.net/"
+FAIL <a>: Setting <ssh://example.net>.protocol = 'file' assert_equals: expected "ssh://example.net" but got "file://example.net/"
+FAIL <area>: Setting <ssh://example.net>.protocol = 'file' assert_equals: expected "ssh://example.net" but got "file://example.net/"
+FAIL URL: Setting <nonsense:///test>.protocol = 'https' assert_equals: expected "nonsense:///test" but got "https://test/"
+FAIL <a>: Setting <nonsense:///test>.protocol = 'https' assert_equals: expected "nonsense:///test" but got "https://test/"
+FAIL <area>: Setting <nonsense:///test>.protocol = 'https' assert_equals: expected "nonsense:///test" but got "https://test/"
+PASS URL: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored 
+PASS <a>: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored 
+PASS <area>: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored 
+PASS URL: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored 
+PASS <a>: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored 
+PASS <area>: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored 
+PASS URL: Setting <file:///home/you/index.html>.username = 'me' No host means no username 
+PASS <a>: Setting <file:///home/you/index.html>.username = 'me' No host means no username 
+PASS <area>: Setting <file:///home/you/index.html>.username = 'me' No host means no username 
+PASS URL: Setting <unix:/run/foo.socket>.username = 'me' No host means no username 
+PASS <a>: Setting <unix:/run/foo.socket>.username = 'me' No host means no username 
+PASS <area>: Setting <unix:/run/foo.socket>.username = 'me' No host means no username 
+PASS URL: Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username 
+PASS <a>: Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username 
+PASS <area>: Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username 
+PASS URL: Setting <javascript:alert(1)>.username = 'wario' 
+PASS <a>: Setting <javascript:alert(1)>.username = 'wario' 
+PASS <area>: Setting <javascript:alert(1)>.username = 'wario' 
+PASS URL: Setting <http://example.net>.username = 'me' 
+PASS <a>: Setting <http://example.net>.username = 'me' 
+PASS <area>: Setting <http://example.net>.username = 'me' 
+PASS URL: Setting <http://:secret@example.net>.username = 'me' 
+PASS <a>: Setting <http://:secret@example.net>.username = 'me' 
+PASS <area>: Setting <http://:secret@example.net>.username = 'me' 
+PASS URL: Setting <http://me@example.net>.username = '' 
+PASS <a>: Setting <http://me@example.net>.username = '' 
+PASS <area>: Setting <http://me@example.net>.username = '' 
+PASS URL: Setting <http://me:secret@example.net>.username = '' 
+PASS <a>: Setting <http://me:secret@example.net>.username = '' 
+PASS <area>: Setting <http://me:secret@example.net>.username = '' 
+FAIL URL: Setting <http://example.net>.username = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+FAIL <a>: Setting <http://example.net>.username = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+FAIL <area>: Setting <http://example.net>.username = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+PASS URL: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS <a>: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS <area>: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS URL: Setting <sc:///>.username = 'x' 
+PASS <a>: Setting <sc:///>.username = 'x' 
+PASS <area>: Setting <sc:///>.username = 'x' 
+FAIL URL: Setting <javascript://x/>.username = 'wario' assert_equals: expected "javascript://wario@x/" but got "javascript://x/"
+FAIL <a>: Setting <javascript://x/>.username = 'wario' assert_equals: expected "javascript://wario@x/" but got "javascript://x/"
+FAIL <area>: Setting <javascript://x/>.username = 'wario' assert_equals: expected "javascript://wario@x/" but got "javascript://x/"
+PASS URL: Setting <file://test/>.username = 'test' 
+PASS <a>: Setting <file://test/>.username = 'test' 
+PASS <area>: Setting <file://test/>.username = 'test' 
+PASS URL: Setting <file:///home/me/index.html>.password = 'secret' No host means no password 
+PASS <a>: Setting <file:///home/me/index.html>.password = 'secret' No host means no password 
+PASS <area>: Setting <file:///home/me/index.html>.password = 'secret' No host means no password 
+PASS URL: Setting <unix:/run/foo.socket>.password = 'secret' No host means no password 
+PASS <a>: Setting <unix:/run/foo.socket>.password = 'secret' No host means no password 
+PASS <area>: Setting <unix:/run/foo.socket>.password = 'secret' No host means no password 
+PASS URL: Setting <mailto:me@example.net>.password = 'secret' Cannot-be-a-base means no password 
+PASS <a>: Setting <mailto:me@example.net>.password = 'secret' Cannot-be-a-base means no password 
+PASS <area>: Setting <mailto:me@example.net>.password = 'secret' Cannot-be-a-base means no password 
+PASS URL: Setting <http://example.net>.password = 'secret' 
+PASS <a>: Setting <http://example.net>.password = 'secret' 
+PASS <area>: Setting <http://example.net>.password = 'secret' 
+PASS URL: Setting <http://me@example.net>.password = 'secret' 
+PASS <a>: Setting <http://me@example.net>.password = 'secret' 
+PASS <area>: Setting <http://me@example.net>.password = 'secret' 
+PASS URL: Setting <http://:secret@example.net>.password = '' 
+PASS <a>: Setting <http://:secret@example.net>.password = '' 
+PASS <area>: Setting <http://:secret@example.net>.password = '' 
+PASS URL: Setting <http://me:secret@example.net>.password = '' 
+PASS <a>: Setting <http://me:secret@example.net>.password = '' 
+PASS <area>: Setting <http://me:secret@example.net>.password = '' 
+FAIL URL: Setting <http://example.net>.password = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://:%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://:%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+FAIL <a>: Setting <http://example.net>.password = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://:%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://:%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+FAIL <area>: Setting <http://example.net>.password = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set. assert_equals: expected "http://:%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/" but got "http://:%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/"
+PASS URL: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS <a>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS <area>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is. 
+PASS URL: Setting <sc:///>.password = 'x' 
+PASS <a>: Setting <sc:///>.password = 'x' 
+PASS <area>: Setting <sc:///>.password = 'x' 
+FAIL URL: Setting <javascript://x/>.password = 'bowser' assert_equals: expected "javascript://:bowser@x/" but got "javascript://x/"
+FAIL <a>: Setting <javascript://x/>.password = 'bowser' assert_equals: expected "javascript://:bowser@x/" but got "javascript://x/"
+FAIL <area>: Setting <javascript://x/>.password = 'bowser' assert_equals: expected "javascript://:bowser@x/" but got "javascript://x/"
+PASS URL: Setting <file://test/>.password = 'test' 
+PASS <a>: Setting <file://test/>.password = 'test' 
+PASS <area>: Setting <file://test/>.password = 'test' 
+FAIL URL: Setting <sc://x/>.host = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.host = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.host = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL URL: Setting <sc://x/>.host = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = ' ' assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.host = ' ' assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.host = ' ' assert_equals: expected "x" but got ""
+FAIL URL: Setting <sc://x/>.host = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.host = '@' assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.host = '@' assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.host = '@' assert_equals: expected "x" but got ""
+FAIL URL: Setting <sc://x/>.host = 'ß' assert_equals: expected "sc://%C3%9F/" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.host = 'ß' assert_equals: expected "sc://%C3%9F/" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.host = 'ß' assert_equals: expected "sc://%C3%9F/" but got "sc://x/"
+FAIL URL: Setting <https://x/>.host = 'ß' IDNA Nontransitional_Processing assert_equals: expected "https://xn--zca/" but got "https://ss/"
+FAIL <a>: Setting <https://x/>.host = 'ß' IDNA Nontransitional_Processing assert_equals: expected "https://xn--zca/" but got "https://ss/"
+FAIL <area>: Setting <https://x/>.host = 'ß' IDNA Nontransitional_Processing assert_equals: expected "https://xn--zca/" but got "https://ss/"
+PASS URL: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host 
+PASS <a>: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host 
+PASS <area>: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host 
+PASS URL: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no password 
+PASS <a>: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no password 
+PASS <area>: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no password 
+PASS URL: Setting <http://example.net>.host = 'example.com:8080' 
+PASS <a>: Setting <http://example.net>.host = 'example.com:8080' 
+PASS <area>: Setting <http://example.net>.host = 'example.com:8080' 
+PASS URL: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new value 
+PASS <a>: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new value 
+PASS <area>: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new value 
+FAIL URL: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specified assert_equals: expected "http://example.com:8080/" but got "http://example.com:0/"
+FAIL <a>: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specified assert_equals: expected "http://example.com:8080/" but got "http://example.com:0/"
+FAIL <area>: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specified assert_equals: expected "http://example.com:8080/" but got "http://example.com:0/"
+PASS URL: Setting <http://example.net>.host = '' The empty host is not valid for special schemes 
+PASS <a>: Setting <http://example.net>.host = '' The empty host is not valid for special schemes 
+PASS <area>: Setting <http://example.net>.host = '' The empty host is not valid for special schemes 
+FAIL URL: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL <a>: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL <area>: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL URL: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "file://example.net/A:/foo"
+FAIL <a>: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "file:///A:/foo"
+FAIL <area>: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "file:///A:/foo"
+PASS URL: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized 
+PASS <a>: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized 
+PASS <area>: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized 
+FAIL URL: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalized assert_equals: expected "http://[::1]:2/" but got "http://[:0/"
+FAIL <a>: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalized assert_equals: expected "http://[::1]:2/" but got "http://[:0/"
+FAIL <area>: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalized assert_equals: expected "http://[::1]:2/" but got "http://[:0/"
+PASS URL: Setting <http://example.net>.host = 'example.com:80' Default port number is removed 
+PASS <a>: Setting <http://example.net>.host = 'example.com:80' Default port number is removed 
+PASS <area>: Setting <http://example.net>.host = 'example.com:80' Default port number is removed 
+PASS URL: Setting <https://example.net>.host = 'example.com:443' Default port number is removed 
+PASS <a>: Setting <https://example.net>.host = 'example.com:443' Default port number is removed 
+PASS <area>: Setting <https://example.net>.host = 'example.com:443' Default port number is removed 
+PASS URL: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant scheme 
+PASS <a>: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant scheme 
+PASS <area>: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant scheme 
+FAIL URL: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+FAIL <a>: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+FAIL <area>: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored 
+FAIL URL: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+FAIL <a>: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+FAIL <area>: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored 
+FAIL URL: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+FAIL <a>: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+FAIL <area>: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored 
+FAIL URL: Setting <http://example.net/path>.host = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+FAIL <a>: Setting <http://example.net/path>.host = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+FAIL <area>: Setting <http://example.net/path>.host = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+FAIL URL: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL <a>: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL <area>: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL URL: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.com:8080/path" but got "view-source+http://example.net/path"
+FAIL <a>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.com:8080/path" but got "view-source+http://example.net/path"
+FAIL <area>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.com:8080/path" but got "view-source+http://example.net/path"
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS URL: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS URL: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integers 
+PASS <a>: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integers 
+PASS <area>: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integers 
+FAIL URL: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though. assert_equals: expected "http://example.com/path" but got "http://example.com:65536/path"
+FAIL <a>: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though. assert_equals: expected "http://example.com/path" but got "http://example.com:65536/path"
+FAIL <area>: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though. assert_equals: expected "http://example.com/path" but got "http://example.com:65536/path"
+FAIL URL: Setting <http://example.net/>.host = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL <a>: Setting <http://example.net/>.host = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL <area>: Setting <http://example.net/>.host = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL URL: Setting <http://example.net/>.host = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <a>: Setting <http://example.net/>.host = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <area>: Setting <http://example.net/>.host = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL URL: Setting <http://example.net/>.host = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <a>: Setting <http://example.net/>.host = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <area>: Setting <http://example.net/>.host = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL URL: Setting <http://example.net/>.host = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <a>: Setting <http://example.net/>.host = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <area>: Setting <http://example.net/>.host = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL URL: Setting <http://example.net/>.host = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <a>: Setting <http://example.net/>.host = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL <area>: Setting <http://example.net/>.host = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
+FAIL URL: Setting <file://y/>.host = 'x:123' assert_equals: expected "file://y/" but got "file://x/"
+FAIL <a>: Setting <file://y/>.host = 'x:123' assert_equals: expected "file://y/" but got "file://x/"
+FAIL <area>: Setting <file://y/>.host = 'x:123' assert_equals: expected "file://y/" but got "file://x/"
+FAIL URL: Setting <file://y/>.host = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <a>: Setting <file://y/>.host = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <area>: Setting <file://y/>.host = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL URL: Setting <file://hi/x>.host = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL <a>: Setting <file://hi/x>.host = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL <area>: Setting <file://hi/x>.host = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL URL: Setting <sc://test@test/>.host = '' assert_equals: expected "test" but got ""
+FAIL <a>: Setting <sc://test@test/>.host = '' assert_equals: expected "test" but got ""
+FAIL <area>: Setting <sc://test@test/>.host = '' assert_equals: expected "test" but got ""
+FAIL URL: Setting <sc://test:12/>.host = '' assert_equals: expected "test:12" but got ""
+FAIL <a>: Setting <sc://test:12/>.host = '' assert_equals: expected "test:12" but got ""
+FAIL <area>: Setting <sc://test:12/>.host = '' assert_equals: expected "test:12" but got ""
+FAIL URL: Setting <sc://x/>.hostname = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.hostname = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.hostname = '\0' Non-special scheme assert_equals: expected "x" but got ""
+FAIL URL: Setting <sc://x/>.hostname = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '	' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '
+' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '\r' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = ' ' assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.hostname = ' ' assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.hostname = ' ' assert_equals: expected "x" but got ""
+FAIL URL: Setting <sc://x/>.hostname = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '#' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '?' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = '@' assert_equals: expected "x" but got ""
+FAIL <a>: Setting <sc://x/>.hostname = '@' assert_equals: expected "x" but got ""
+FAIL <area>: Setting <sc://x/>.hostname = '@' assert_equals: expected "x" but got ""
+PASS URL: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host 
+PASS <a>: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host 
+PASS <area>: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host 
+PASS URL: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no password 
+PASS <a>: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no password 
+PASS <area>: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no password 
+PASS URL: Setting <http://example.net:8080>.hostname = 'example.com' 
+PASS <a>: Setting <http://example.net:8080>.hostname = 'example.com' 
+PASS <area>: Setting <http://example.net:8080>.hostname = 'example.com' 
+PASS URL: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemes 
+PASS <a>: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemes 
+PASS <area>: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemes 
+FAIL URL: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL <a>: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL <area>: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes assert_equals: expected "view-source+http:///foo" but got "view-source+http://example.net/foo"
+FAIL URL: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "file://example.net/A:/foo"
+FAIL <a>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "file:///A:/foo"
+FAIL <area>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host assert_equals: expected "a://example.net/foo" but got "file:///A:/foo"
+PASS URL: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalized 
+PASS <a>: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalized 
+PASS <area>: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalized 
+PASS URL: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized 
+PASS <a>: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized 
+PASS <area>: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized 
+FAIL URL: Setting <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com:8080/path"
+FAIL <a>: Setting <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com:8080/path"
+FAIL <area>: Setting <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com:8080/path"
+FAIL URL: Setting <http://example.net:8080/path>.hostname = 'example.com:' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com:8080/path" but got "http://example.com::8080/path"
+FAIL <a>: Setting <http://example.net:8080/path>.hostname = 'example.com:' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com:8080/path" but got "http://example.com::8080/path"
+FAIL <area>: Setting <http://example.net:8080/path>.hostname = 'example.com:' Stuff after a : delimiter is ignored assert_equals: expected "http://example.com:8080/path" but got "http://example.com::8080/path"
+FAIL URL: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+FAIL <a>: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+FAIL <area>: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%2Fstuff/path"
+FAIL URL: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+FAIL <a>: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+FAIL <area>: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%3Fstuff/path"
+FAIL URL: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+FAIL <a>: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+FAIL <area>: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored assert_equals: expected "http://example.com/path" but got "http://example.com%23stuff/path"
+FAIL URL: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+FAIL <a>: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+FAIL <area>: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com%5Cstuff/path"
+FAIL URL: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL <a>: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL <area>: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "example.net" but got ""
+FAIL URL: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL <a>: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL <area>: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
+FAIL URL: Setting <http://example.net/>.hostname = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[::1.2.3.4x]/"
+FAIL <a>: Setting <http://example.net/>.hostname = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[::1.2.3.4x]/"
+FAIL <area>: Setting <http://example.net/>.hostname = '[::1.2.3.4x]' assert_equals: expected "http://example.net/" but got "http://[::1.2.3.4x]/"
+FAIL URL: Setting <http://example.net/>.hostname = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[::102:3]/"
+FAIL <a>: Setting <http://example.net/>.hostname = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[::102:3]/"
+FAIL <area>: Setting <http://example.net/>.hostname = '[::1.2.3.]' assert_equals: expected "http://example.net/" but got "http://[::102:3]/"
+FAIL URL: Setting <http://example.net/>.hostname = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[::100:2]/"
+FAIL <a>: Setting <http://example.net/>.hostname = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[::100:2]/"
+FAIL <area>: Setting <http://example.net/>.hostname = '[::1.2.]' assert_equals: expected "http://example.net/" but got "http://[::100:2]/"
+FAIL URL: Setting <http://example.net/>.hostname = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[::1]/"
+FAIL <a>: Setting <http://example.net/>.hostname = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[::1]/"
+FAIL <area>: Setting <http://example.net/>.hostname = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[::1]/"
+FAIL URL: Setting <file://y/>.hostname = 'x:123' assert_equals: expected "file://y/" but got "file://x:123/"
+FAIL <a>: Setting <file://y/>.hostname = 'x:123' assert_equals: expected "file://y/" but got "file:///X:/123/"
+FAIL <area>: Setting <file://y/>.hostname = 'x:123' assert_equals: expected "file://y/" but got "file:///X:/123/"
+FAIL URL: Setting <file://y/>.hostname = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <a>: Setting <file://y/>.hostname = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <area>: Setting <file://y/>.hostname = 'loc%41lhost' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL URL: Setting <file://hi/x>.hostname = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL <a>: Setting <file://hi/x>.hostname = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL <area>: Setting <file://hi/x>.hostname = '' assert_equals: expected "file:///x" but got "file://hi/x"
+FAIL URL: Setting <sc://test@test/>.hostname = '' assert_equals: expected "test" but got ""
+FAIL <a>: Setting <sc://test@test/>.hostname = '' assert_equals: expected "test" but got ""
+FAIL <area>: Setting <sc://test@test/>.hostname = '' assert_equals: expected "test" but got ""
+FAIL URL: Setting <sc://test:12/>.hostname = '' assert_equals: expected "test:12" but got ""
+FAIL <a>: Setting <sc://test:12/>.hostname = '' assert_equals: expected "test:12" but got ""
+FAIL <area>: Setting <sc://test:12/>.hostname = '' assert_equals: expected "test:12" but got ""
+PASS URL: Setting <http://example.net>.port = '8080' 
+PASS <a>: Setting <http://example.net>.port = '8080' 
+PASS <area>: Setting <http://example.net>.port = '8080' 
+FAIL URL: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value assert_equals: expected "http://example.net/" but got "http://example.net:0/"
+FAIL <a>: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value assert_equals: expected "http://example.net/" but got "http://example.net:0/"
+FAIL <area>: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value assert_equals: expected "http://example.net/" but got "http://example.net:0/"
+PASS URL: Setting <http://example.net:8080>.port = '80' Default port number is removed 
+PASS <a>: Setting <http://example.net:8080>.port = '80' Default port number is removed 
+PASS <area>: Setting <http://example.net:8080>.port = '80' Default port number is removed 
+PASS URL: Setting <https://example.net:4433>.port = '443' Default port number is removed 
+PASS <a>: Setting <https://example.net:4433>.port = '443' Default port number is removed 
+PASS <area>: Setting <https://example.net:4433>.port = '443' Default port number is removed 
+PASS URL: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant scheme 
+PASS <a>: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant scheme 
+PASS <area>: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant scheme 
+PASS URL: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignored 
+PASS URL: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignored 
+PASS URL: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignored 
+PASS <a>: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignored 
+PASS <area>: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignored 
+PASS URL: Setting <http://example.net/path>.port = '8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+PASS <a>: Setting <http://example.net/path>.port = '8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+PASS <area>: Setting <http://example.net/path>.port = '8080\stuff' Stuff after a \ delimiter is ignored for special schemes 
+FAIL URL: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.net:8080/path" but got "view-source+http://example.net/path"
+FAIL <a>: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.net:8080/path" but got "view-source+http://example.net/path"
+FAIL <area>: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error assert_equals: expected "view-source+http://example.net:8080/path" but got "view-source+http://example.net/path"
+PASS URL: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <a>: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <area>: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS URL: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <a>: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS <area>: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error 
+PASS URL: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers 
+PASS <a>: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers 
+PASS <area>: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers 
+FAIL URL: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "http://example.net:8080/path" but got "http://example.net:0/path"
+FAIL <a>: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "http://example.net:8080/path" but got "http://example.net:0/path"
+FAIL <area>: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "http://example.net:8080/path" but got "http://example.net:0/path"
+FAIL URL: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "example.net:8080" but got ""
+FAIL <a>: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "example.net:8080" but got ""
+FAIL <area>: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected "example.net:8080" but got ""
+PASS URL: Setting <file://test/>.port = '12' 
+PASS <a>: Setting <file://test/>.port = '12' 
+PASS <area>: Setting <file://test/>.port = '12' 
+FAIL URL: Setting <file://localhost/>.port = '12' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <a>: Setting <file://localhost/>.port = '12' assert_equals: expected "file:///" but got "file://localhost/"
+FAIL <area>: Setting <file://localhost/>.port = '12' assert_equals: expected "file:///" but got "file://localhost/"
+PASS URL: Setting <non-base:value>.port = '12' 
+PASS <a>: Setting <non-base:value>.port = '12' 
+PASS <area>: Setting <non-base:value>.port = '12' 
+PASS URL: Setting <sc:///>.port = '12' 
+PASS <a>: Setting <sc:///>.port = '12' 
+PASS <area>: Setting <sc:///>.port = '12' 
+FAIL URL: Setting <sc://x/>.port = '12' assert_equals: expected "sc://x:12/" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.port = '12' assert_equals: expected "sc://x:12/" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.port = '12' assert_equals: expected "sc://x:12/" but got "sc://x/"
+FAIL URL: Setting <javascript://x/>.port = '12' assert_equals: expected "javascript://x:12/" but got "javascript://x/"
+FAIL <a>: Setting <javascript://x/>.port = '12' assert_equals: expected "javascript://x:12/" but got "javascript://x/"
+FAIL <area>: Setting <javascript://x/>.port = '12' assert_equals: expected "javascript://x:12/" but got "javascript://x/"
+PASS URL: Setting <mailto:me@example.net>.pathname = '/foo' Cannot-be-a-base don’t have a path 
+PASS <a>: Setting <mailto:me@example.net>.pathname = '/foo' Cannot-be-a-base don’t have a path 
+PASS <area>: Setting <mailto:me@example.net>.pathname = '/foo' Cannot-be-a-base don’t have a path 
+FAIL URL: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket' assert_equals: expected "unix:/var/run/bar.socket?timeout=10" but got "unix:/run/foo.socket?timeout=10"
+FAIL <a>: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket' assert_equals: expected "unix:/var/run/bar.socket?timeout=10" but got "unix:/run/foo.socket?timeout=10"
+FAIL <area>: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket' assert_equals: expected "unix:/var/run/bar.socket?timeout=10" but got "unix:/run/foo.socket?timeout=10"
+PASS URL: Setting <https://example.net#nav>.pathname = 'home' 
+PASS <a>: Setting <https://example.net#nav>.pathname = 'home' 
+PASS <area>: Setting <https://example.net#nav>.pathname = 'home' 
+PASS URL: Setting <https://example.net#nav>.pathname = '../home' 
+PASS <a>: Setting <https://example.net#nav>.pathname = '../home' 
+PASS <area>: Setting <https://example.net#nav>.pathname = '../home' 
+PASS URL: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLs 
+PASS <a>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLs 
+PASS <area>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLs 
+FAIL URL: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is *not* a segment delimiter for non-'special' URLs assert_equals: expected "view-source+http://example.net/\\a\%2E\b\%2e.\c?lang=fr#nav" but got "view-source+http://example.net/home?lang=fr#nav"
+FAIL <a>: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is *not* a segment delimiter for non-'special' URLs assert_equals: expected "view-source+http://example.net/\\a\%2E\b\%2e.\c?lang=fr#nav" but got "view-source+http://example.net/home?lang=fr#nav"
+FAIL <area>: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is *not* a segment delimiter for non-'special' URLs assert_equals: expected "view-source+http://example.net/\\a\%2E\b\%2e.\c?lang=fr#nav" but got "view-source+http://example.net/home?lang=fr#nav"
+FAIL URL: Setting <a:/>.pathname = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed. assert_equals: expected "a:/%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E%3F@AZ[\\]^_%60az%7B|%7D~%7F%C2%80%C2%81%C3%89%C3%A9" but got "file:///%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E%3F@AZ[/]%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9"
+FAIL <a>: Setting <a:/>.pathname = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed. assert_equals: expected "a:/%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E%3F@AZ[\\]^_%60az%7B|%7D~%7F%C2%80%C2%81%C3%89%C3%A9" but got "file:///%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E%3F@AZ[/]%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9"
+FAIL <area>: Setting <a:/>.pathname = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed. assert_equals: expected "a:/%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E%3F@AZ[\\]^_%60az%7B|%7D~%7F%C2%80%C2%81%C3%89%C3%A9" but got "file:///%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E%3F@AZ[/]%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9"
+FAIL URL: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments. assert_equals: expected "http://example.net/%2e%2E%c3%89t%C3%A9" but got "http://example.net/..%c3%89t%C3%A9"
+FAIL <a>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments. assert_equals: expected "http://example.net/%2e%2E%c3%89t%C3%A9" but got "http://example.net/..%c3%89t%C3%A9"
+FAIL <area>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments. assert_equals: expected "http://example.net/%2e%2E%c3%89t%C3%A9" but got "http://example.net/..%c3%89t%C3%A9"
+PASS URL: Setting <http://example.net>.pathname = '?' ? needs to be encoded 
+PASS <a>: Setting <http://example.net>.pathname = '?' ? needs to be encoded 
+PASS <area>: Setting <http://example.net>.pathname = '?' ? needs to be encoded 
+PASS URL: Setting <http://example.net>.pathname = '#' # needs to be encoded 
+PASS <a>: Setting <http://example.net>.pathname = '#' # needs to be encoded 
+PASS <area>: Setting <http://example.net>.pathname = '#' # needs to be encoded 
+FAIL URL: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%3F" but got "sc://example.net"
+FAIL <a>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%3F" but got "sc://example.net"
+FAIL <area>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%3F" but got "sc://example.net"
+FAIL URL: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%23" but got "sc://example.net"
+FAIL <a>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%23" but got "sc://example.net"
+FAIL <area>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme assert_equals: expected "sc://example.net/%23" but got "sc://example.net"
+FAIL URL: Setting <file://monkey/>.pathname = '\\' File URLs and (back)slashes assert_equals: expected "file://monkey/" but got "file://monkey//"
+FAIL <a>: Setting <file://monkey/>.pathname = '\\' File URLs and (back)slashes assert_equals: expected "file://monkey/" but got "file://monkey//"
+FAIL <area>: Setting <file://monkey/>.pathname = '\\' File URLs and (back)slashes assert_equals: expected "file://monkey/" but got "file://monkey//"
+FAIL URL: Setting <file:///unicorn>.pathname = '//\/' File URLs and (back)slashes assert_equals: expected "file:///" but got "file://////"
+PASS <a>: Setting <file:///unicorn>.pathname = '//\/' File URLs and (back)slashes 
+PASS <area>: Setting <file:///unicorn>.pathname = '//\/' File URLs and (back)slashes 
+FAIL URL: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes assert_equals: expected "file:///" but got "file://///"
+PASS <a>: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes 
+PASS <area>: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes 
+PASS URL: Setting <https://example.net#nav>.search = 'lang=fr' 
+PASS <a>: Setting <https://example.net#nav>.search = 'lang=fr' 
+PASS <area>: Setting <https://example.net#nav>.search = 'lang=fr' 
+PASS URL: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr' 
+PASS URL: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr' 
+PASS URL: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr' 
+FAIL URL: Setting <https://example.net?lang=en-US#nav>.search = '?' assert_equals: expected "https://example.net/?#nav" but got "https://example.net/#nav"
+FAIL <a>: Setting <https://example.net?lang=en-US#nav>.search = '?' assert_equals: expected "https://example.net/?#nav" but got "https://example.net/#nav"
+FAIL <area>: Setting <https://example.net?lang=en-US#nav>.search = '?' assert_equals: expected "https://example.net/?#nav" but got "https://example.net/#nav"
+PASS URL: Setting <https://example.net?lang=en-US#nav>.search = '' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.search = '' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.search = '' 
+PASS URL: Setting <https://example.net?lang=en-US>.search = '' 
+PASS <a>: Setting <https://example.net?lang=en-US>.search = '' 
+PASS <area>: Setting <https://example.net?lang=en-US>.search = '' 
+PASS URL: Setting <https://example.net>.search = '' 
+PASS <a>: Setting <https://example.net>.search = '' 
+PASS <area>: Setting <https://example.net>.search = '' 
+FAIL URL: Setting <a:/>.search = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed. assert_equals: expected "a:/?%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "file:///A:/?%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-./09:;%3C=%3E?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9"
+FAIL <a>: Setting <a:/>.search = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed. assert_equals: expected "a:/?%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "file:///A:/?%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-./09:;%3C=%3E?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9"
+FAIL <area>: Setting <a:/>.search = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed. assert_equals: expected "a:/?%00%01%1F%20!%22%23$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "file:///A:/?%00%01%09%0A%0D%1F%20!%22%23$%&%27()*+,-./09:;%3C=%3E?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9"
+PASS URL: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-is 
+PASS <a>: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-is 
+PASS <area>: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-is 
+PASS URL: Setting <https://example.net>.hash = 'main' 
+PASS <a>: Setting <https://example.net>.hash = 'main' 
+PASS <area>: Setting <https://example.net>.hash = 'main' 
+PASS URL: Setting <https://example.net#nav>.hash = 'main' 
+PASS <a>: Setting <https://example.net#nav>.hash = 'main' 
+PASS <area>: Setting <https://example.net#nav>.hash = 'main' 
+PASS URL: Setting <https://example.net?lang=en-US>.hash = '##nav' 
+PASS <a>: Setting <https://example.net?lang=en-US>.hash = '##nav' 
+PASS <area>: Setting <https://example.net?lang=en-US>.hash = '##nav' 
+PASS URL: Setting <https://example.net?lang=en-US#nav>.hash = '#main' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.hash = '#main' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.hash = '#main' 
+FAIL URL: Setting <https://example.net?lang=en-US#nav>.hash = '#' assert_equals: expected "https://example.net/?lang=en-US#" but got "https://example.net/?lang=en-US"
+FAIL <a>: Setting <https://example.net?lang=en-US#nav>.hash = '#' assert_equals: expected "https://example.net/?lang=en-US#" but got "https://example.net/?lang=en-US"
+FAIL <area>: Setting <https://example.net?lang=en-US#nav>.hash = '#' assert_equals: expected "https://example.net/?lang=en-US#" but got "https://example.net/?lang=en-US"
+PASS URL: Setting <https://example.net?lang=en-US#nav>.hash = '' 
+PASS <a>: Setting <https://example.net?lang=en-US#nav>.hash = '' 
+PASS <area>: Setting <https://example.net?lang=en-US#nav>.hash = '' 
+FAIL URL: Setting <a:/>.hash = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Simple percent-encoding; nuls, tabs, and newlines are removed assert_equals: expected "a:/#%01%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "file:///A:/#%01%09%0A%0D%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé"
+FAIL <a>: Setting <a:/>.hash = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Simple percent-encoding; nuls, tabs, and newlines are removed assert_equals: expected "a:/#%01%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "file:///A:/#%01%09%0A%0D%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé"
+FAIL <area>: Setting <a:/>.hash = '\0	
+\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Simple percent-encoding; nuls, tabs, and newlines are removed assert_equals: expected "a:/#%01%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" but got "file:///A:/#%01%09%0A%0D%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé"
+FAIL URL: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is assert_equals: expected "http://example.net/#%c3%89t%C3%A9" but got "http://example.net/#%c3%89té"
+FAIL <a>: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is assert_equals: expected "http://example.net/#%c3%89t%C3%A9" but got "http://example.net/#%c3%89té"
+FAIL <area>: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is assert_equals: expected "http://example.net/#%c3%89t%C3%A9" but got "http://example.net/#%c3%89té"
+PASS URL: Setting <javascript:alert(1)>.hash = 'castle' 
+PASS <a>: Setting <javascript:alert(1)>.hash = 'castle' 
+PASS <area>: Setting <javascript:alert(1)>.hash = 'castle' 
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/gradients/crash-on-zero-radius-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/gradients/crash-on-zero-radius-expected.txt
index e4c41bf1..c7596ee 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/gradients/crash-on-zero-radius-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/gradients/crash-on-zero-radius-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
 layer at (0,0) size 800x600
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/gradients/generated-gradients-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/gradients/generated-gradients-expected.txt
index 1a559ff5..8b67268 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/gradients/generated-gradients-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/gradients/generated-gradients-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
 layer at (0,0) size 800x600
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/gradients/radial-centered-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/gradients/radial-centered-expected.txt
index 311c487..74121bc 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/gradients/radial-centered-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/gradients/radial-centered-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
 layer at (0,0) size 800x600
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/gradients/simple-gradients-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/gradients/simple-gradients-expected.txt
index 66b129d..36e93ec 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/gradients/simple-gradients-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/gradients/simple-gradients-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 layer at (0,0) size 800x600
   LayoutView at (0,0) size 800x600
 layer at (0,0) size 800x600
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/platform/win/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/platform/win/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/platform/win/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/platform/win/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt
new file mode 100644
index 0000000..97296481
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt
@@ -0,0 +1 @@
+This test passes if it does not CRASH.
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt
@@ -0,0 +1 @@
+
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt
new file mode 100644
index 0000000..75cf4f3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt
@@ -0,0 +1 @@
+This should not crash.  
diff --git a/third_party/WebKit/LayoutTests/platform/win7/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/platform/win7/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win7/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/platform/win7/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/platform/win7/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win7/virtual/prefer_compositing_to_lcd_text/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/platform/win7/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/platform/win7/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win7/virtual/rootlayerscrolls/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/platform/win7/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/platform/win7/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win7/virtual/rootlayerscrolls/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/platform/win7/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt
new file mode 100644
index 0000000..97296481
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win7/virtual/sharedarraybuffer/fast/css/crash-on-gradient-with-derived-color-expected.txt
@@ -0,0 +1 @@
+This test passes if it does not CRASH.
diff --git a/third_party/WebKit/LayoutTests/platform/win7/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win7/virtual/sharedarraybuffer/fast/css/linear-gradient-currentcolor-expected.txt
@@ -0,0 +1 @@
+
diff --git a/third_party/WebKit/LayoutTests/platform/win7/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt
new file mode 100644
index 0000000..75cf4f3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/win7/virtual/sharedarraybuffer/fast/css/number-parsing-crash-expected.txt
@@ -0,0 +1 @@
+This should not crash.  
diff --git a/third_party/WebKit/LayoutTests/scrollbars/scrollbar-gradient-crash-expected.txt b/third_party/WebKit/LayoutTests/scrollbars/scrollbar-gradient-crash-expected.txt
index f3f51ea..654ddf7f 100644
--- a/third_party/WebKit/LayoutTests/scrollbars/scrollbar-gradient-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/scrollbars/scrollbar-gradient-crash-expected.txt
@@ -1,2 +1 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 This test passes if it does not crash.
diff --git a/third_party/WebKit/LayoutTests/scrollbars/scrollbar-percent-padding-crash-expected.txt b/third_party/WebKit/LayoutTests/scrollbars/scrollbar-percent-padding-crash-expected.txt
index a2919ad6..f2acb99 100644
--- a/third_party/WebKit/LayoutTests/scrollbars/scrollbar-percent-padding-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/scrollbars/scrollbar-percent-padding-crash-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE WARNING: -webkit-gradient is deprecated. Please use linear-gradient or radial-gradient instead.
 Test for bug 86162: This tests that there is no crash when using percentage value for scrollbar's padding property. On success you should see a frame with scrollbars and one PASS message in it.
 
 
diff --git a/third_party/WebKit/LayoutTests/virtual/sharedarraybuffer/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-history-expected.txt b/third_party/WebKit/LayoutTests/virtual/sharedarraybuffer/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-history-expected.txt
index 7cf8834..4b9f777a 100644
--- a/third_party/WebKit/LayoutTests/virtual/sharedarraybuffer/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-history-expected.txt
+++ b/third_party/WebKit/LayoutTests/virtual/sharedarraybuffer/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-history-expected.txt
@@ -1,23 +1,7 @@
 This is a testharness.js-based test.
-FAIL history.pushState(): simple case assert_throws: function "() => {
-      history[method](new SharedArrayBuffer(), "dummy title");
-    }" did not throw
-FAIL history.pushState(): is interleaved correctly assert_throws: function "() => {
-      history[method]([
-        { get x() { getter1Called = true; return 5; } },
-        new SharedArrayBuffer(),
-        { get x() { getter2Called = true; return 5; } }
-      ], "dummy title");
-    }" did not throw
-FAIL history.replaceState(): simple case assert_throws: function "() => {
-      history[method](new SharedArrayBuffer(), "dummy title");
-    }" did not throw
-FAIL history.replaceState(): is interleaved correctly assert_throws: function "() => {
-      history[method]([
-        { get x() { getter1Called = true; return 5; } },
-        new SharedArrayBuffer(),
-        { get x() { getter2Called = true; return 5; } }
-      ], "dummy title");
-    }" did not throw
+PASS history.pushState(): simple case 
+PASS history.pushState(): is interleaved correctly 
+PASS history.replaceState(): simple case 
+PASS history.replaceState(): is interleaved correctly 
 Harness: the test ran to completion.
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/serialization/SerializedScriptValue.h b/third_party/WebKit/Source/bindings/core/v8/serialization/SerializedScriptValue.h
index 7da9c69..f4f5b3d 100644
--- a/third_party/WebKit/Source/bindings/core/v8/serialization/SerializedScriptValue.h
+++ b/third_party/WebKit/Source/bindings/core/v8/serialization/SerializedScriptValue.h
@@ -91,14 +91,29 @@
   // has been the cause of at least one bug in the past.
   static constexpr uint32_t kWireFormatVersion = 17;
 
+  // This enumeration specifies whether we're serializing a value for storage;
+  // e.g. when writing to IndexedDB. This corresponds to the forStorage flag of
+  // the HTML spec:
+  // https://html.spec.whatwg.org/multipage/infrastructure.html#safe-passing-of-structured-data
+  enum StoragePolicy {
+    // Not persisted; used only during the execution of the browser.
+    kNotForStorage,
+    // May be written to disk and read during a subsequent execution of the
+    // browser.
+    kForStorage,
+  };
+
   struct SerializeOptions {
     STACK_ALLOCATED();
+
+    SerializeOptions() {}
+    explicit SerializeOptions(StoragePolicy for_storage)
+        : for_storage(for_storage) {}
+
     Transferables* transferables = nullptr;
     WebBlobInfoArray* blob_info = nullptr;
     bool write_wasm_to_stream = false;
-    // Set when serializing a value for storage; e.g. when writing to
-    // IndexedDB.
-    bool for_storage = false;
+    StoragePolicy for_storage = kNotForStorage;
   };
   static PassRefPtr<SerializedScriptValue> Serialize(v8::Isolate*,
                                                      v8::Local<v8::Value>,
@@ -238,10 +253,10 @@
   CORE_EXPORT static inline PassRefPtr<SerializedScriptValue> NativeValue(
       v8::Isolate* isolate,
       v8::Local<v8::Value> value,
+      const SerializedScriptValue::SerializeOptions& options,
       ExceptionState& exception_state) {
-    return SerializedScriptValue::Serialize(
-        isolate, value, SerializedScriptValue::SerializeOptions(),
-        exception_state);
+    return SerializedScriptValue::Serialize(isolate, value, options,
+                                            exception_state);
   }
 };
 
diff --git a/third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueSerializer.cpp b/third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueSerializer.cpp
index dee9be5..18596854 100644
--- a/third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueSerializer.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueSerializer.cpp
@@ -52,7 +52,7 @@
       transferables_(options.transferables),
       blob_info_array_(options.blob_info),
       inline_wasm_(options.write_wasm_to_stream),
-      for_storage_(options.for_storage) {}
+      for_storage_(options.for_storage == SerializedScriptValue::kForStorage) {}
 
 RefPtr<SerializedScriptValue> V8ScriptValueSerializer::Serialize(
     v8::Local<v8::Value> value,
diff --git a/third_party/WebKit/Source/bindings/scripts/v8_methods.py b/third_party/WebKit/Source/bindings/scripts/v8_methods.py
index 623c9511..eec4c47 100644
--- a/third_party/WebKit/Source/bindings/scripts/v8_methods.py
+++ b/third_party/WebKit/Source/bindings/scripts/v8_methods.py
@@ -275,7 +275,7 @@
         'use_permissive_dictionary_conversion': 'PermissiveDictionaryConversion' in extended_attributes,
         'v8_set_return_value': v8_set_return_value(interface.name, method, this_cpp_value),
         'v8_set_return_value_for_main_world': v8_set_return_value(interface.name, method, this_cpp_value, for_main_world=True),
-        'v8_value_to_local_cpp_value': v8_value_to_local_cpp_value(method, argument, index),
+        'v8_value_to_local_cpp_value': v8_value_to_local_cpp_value(interface.name, method, argument, index),
     }
     context.update({
         'is_optional_without_default_value':
@@ -370,13 +370,50 @@
     }
 
 
-def v8_value_to_local_cpp_value(method, argument, index, return_promise=False):
+def v8_value_to_local_cpp_ssv_value(extended_attributes, idl_type, v8_value, variable_name, for_storage):
+    this_cpp_type = idl_type.cpp_type_args(extended_attributes=extended_attributes, raw_type=True)
+
+    storage_policy = 'kForStorage' if for_storage else 'kNotForStorage'
+    arguments = ', '.join([
+        'info.GetIsolate()',
+        v8_value,
+        '{ssv}::SerializeOptions({ssv}::{storage_policy})',
+        'exceptionState'
+    ])
+    cpp_expression_format = 'NativeValueTraits<{ssv}>::NativeValue(%s)' % arguments
+    this_cpp_value = cpp_expression_format.format(
+        ssv='SerializedScriptValue',
+        storage_policy=storage_policy
+    )
+
+    return {
+        'assign_expression': this_cpp_value,
+        'check_expression': 'exceptionState.HadException()',
+        'cpp_type': this_cpp_type,
+        'cpp_name': variable_name,
+        'declare_variable': False,
+    }
+
+
+def v8_value_to_local_cpp_value(interface_name, method, argument, index, return_promise=False):
     extended_attributes = argument.extended_attributes
     idl_type = argument.idl_type
     name = argument.name
+    v8_value = 'info[%s]' % index
+
+    # History.pushState and History.replaceState are explicitly specified as
+    # serializing the value for storage. The default is to not serialize for
+    # storage. See https://html.spec.whatwg.org/multipage/browsers.html#dom-history-pushstate
+    if idl_type.name == 'SerializedScriptValue':
+        for_storage = (interface_name == 'History' and
+                       method.name in ('pushState', 'replaceState'))
+        return v8_value_to_local_cpp_ssv_value(extended_attributes, idl_type,
+                                               v8_value, name,
+                                               for_storage=for_storage)
+
     if argument.is_variadic:
         return v8_value_to_local_cpp_variadic_value(method, argument, index, return_promise)
-    return idl_type.v8_value_to_local_cpp_value(extended_attributes, 'info[%s]' % index,
+    return idl_type.v8_value_to_local_cpp_value(extended_attributes, v8_value,
                                                 name, declare_variable=False,
                                                 use_exception_state=method.returns_promise)
 
diff --git a/third_party/WebKit/Source/bindings/scripts/v8_types.py b/third_party/WebKit/Source/bindings/scripts/v8_types.py
index 8e1b3e0..121779c 100644
--- a/third_party/WebKit/Source/bindings/scripts/v8_types.py
+++ b/third_party/WebKit/Source/bindings/scripts/v8_types.py
@@ -606,6 +606,11 @@
         elif 'Clamp' in extended_attributes:
             configuration = 'kClamp'
         arguments = ', '.join([v8_value, 'exceptionState', configuration])
+    elif base_idl_type == 'SerializedScriptValue':
+        arguments = ', '.join([
+            v8_value,
+            'SerializedScriptValue::SerializeOptions(SerializedScriptValue::kNotForStorage)',
+            'exceptionState'])
     elif idl_type.v8_conversion_needs_exception_state:
         arguments = ', '.join([v8_value, 'exceptionState'])
     else:
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp
index 4f2ffcf..5be5593 100644
--- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp
+++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp
@@ -868,7 +868,7 @@
   ExceptionState exceptionState(isolate, ExceptionState::kSetterContext, "TestObject", "serializedScriptValueAttribute");
 
   // Prepare the value to be set.
-  RefPtr<SerializedScriptValue> cppValue = NativeValueTraits<SerializedScriptValue>::NativeValue(info.GetIsolate(), v8Value, exceptionState);
+  RefPtr<SerializedScriptValue> cppValue = NativeValueTraits<SerializedScriptValue>::NativeValue(info.GetIsolate(), v8Value, SerializedScriptValue::SerializeOptions(SerializedScriptValue::kNotForStorage), exceptionState);
   if (exceptionState.HadException())
     return;
 
@@ -6037,7 +6037,7 @@
   }
 
   RefPtr<SerializedScriptValue> serializedScriptValueArg;
-  serializedScriptValueArg = NativeValueTraits<SerializedScriptValue>::NativeValue(info.GetIsolate(), info[0], exceptionState);
+  serializedScriptValueArg = NativeValueTraits<SerializedScriptValue>::NativeValue(info.GetIsolate(), info[0], SerializedScriptValue::SerializeOptions(SerializedScriptValue::kNotForStorage), exceptionState);
   if (exceptionState.HadException())
     return;
 
diff --git a/third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp b/third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp
index 203b4dc6..47144acf 100644
--- a/third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp
+++ b/third_party/WebKit/Source/core/css/parser/CSSPropertyParserHelpers.cpp
@@ -1295,12 +1295,11 @@
   } else if (id == CSSValueRepeatingRadialGradient) {
     result = ConsumeRadialGradient(args, context->Mode(), kRepeating);
   } else if (id == CSSValueWebkitLinearGradient) {
-    context->CountDeprecation(UseCounter::kDeprecatedWebKitLinearGradient);
+    context->Count(UseCounter::kDeprecatedWebKitLinearGradient);
     result = ConsumeLinearGradient(args, context->Mode(), kNonRepeating,
                                    kCSSPrefixedLinearGradient);
   } else if (id == CSSValueWebkitRepeatingLinearGradient) {
-    context->CountDeprecation(
-        UseCounter::kDeprecatedWebKitRepeatingLinearGradient);
+    context->Count(UseCounter::kDeprecatedWebKitRepeatingLinearGradient);
     result = ConsumeLinearGradient(args, context->Mode(), kRepeating,
                                    kCSSPrefixedLinearGradient);
   } else if (id == CSSValueRepeatingLinearGradient) {
@@ -1310,15 +1309,14 @@
     result = ConsumeLinearGradient(args, context->Mode(), kNonRepeating,
                                    kCSSLinearGradient);
   } else if (id == CSSValueWebkitGradient) {
-    context->CountDeprecation(UseCounter::kDeprecatedWebKitGradient);
+    context->Count(UseCounter::kDeprecatedWebKitGradient);
     result = ConsumeDeprecatedGradient(args, context->Mode());
   } else if (id == CSSValueWebkitRadialGradient) {
-    context->CountDeprecation(UseCounter::kDeprecatedWebKitRadialGradient);
+    context->Count(UseCounter::kDeprecatedWebKitRadialGradient);
     result =
         ConsumeDeprecatedRadialGradient(args, context->Mode(), kNonRepeating);
   } else if (id == CSSValueWebkitRepeatingRadialGradient) {
-    context->CountDeprecation(
-        UseCounter::kDeprecatedWebKitRepeatingRadialGradient);
+    context->Count(UseCounter::kDeprecatedWebKitRepeatingRadialGradient);
     result = ConsumeDeprecatedRadialGradient(args, context->Mode(), kRepeating);
   } else if (id == CSSValueConicGradient) {
     result = ConsumeConicGradient(args, context->Mode(), kNonRepeating);
diff --git a/third_party/WebKit/Source/core/css/resolver/FilterOperationResolver.cpp b/third_party/WebKit/Source/core/css/resolver/FilterOperationResolver.cpp
index 67abf4c8..08b4653 100644
--- a/third_party/WebKit/Source/core/css/resolver/FilterOperationResolver.cpp
+++ b/third_party/WebKit/Source/core/css/resolver/FilterOperationResolver.cpp
@@ -39,7 +39,7 @@
 
 namespace blink {
 
-static const float kOffScreenCanvasEmFontSize = 10.0;
+static const float kOffScreenCanvasEmFontSize = 16.0;
 static const float kOffScreenCanvasRemFontSize = 16.0;
 
 FilterOperation::OperationType FilterOperationResolver::FilterOperationForType(
@@ -218,7 +218,7 @@
   Font font(font_description);
   CSSToLengthConversionData::FontSizes font_sizes(
       kOffScreenCanvasEmFontSize, kOffScreenCanvasRemFontSize, &font);
-  CSSToLengthConversionData::ViewportSize viewport_size(1024, 768);
+  CSSToLengthConversionData::ViewportSize viewport_size(0, 0);
   CSSToLengthConversionData conversion_data(&ComputedStyle::InitialStyle(),
                                             font_sizes, viewport_size, 1);
 
diff --git a/third_party/WebKit/Source/core/frame/Deprecation.cpp b/third_party/WebKit/Source/core/frame/Deprecation.cpp
index eceee5ec..6ad05bf 100644
--- a/third_party/WebKit/Source/core/frame/Deprecation.cpp
+++ b/third_party/WebKit/Source/core/frame/Deprecation.cpp
@@ -414,24 +414,6 @@
       return willBeRemoved("SVGPathElement.getPathSegAtLength", M62,
                            "5638783282184192");
 
-    case UseCounter::kDeprecatedWebKitLinearGradient:
-      return replacedBy("-webkit-linear-gradient", "linear-gradient");
-
-    case UseCounter::kDeprecatedWebKitRepeatingLinearGradient:
-      return replacedBy("-webkit-repeating-linear-gradient",
-                        "repeating-linear-gradient");
-
-    case UseCounter::kDeprecatedWebKitGradient:
-      return replacedBy("-webkit-gradient",
-                        "linear-gradient or radial-gradient");
-
-    case UseCounter::kDeprecatedWebKitRadialGradient:
-      return replacedBy("-webkit-radial-gradient", "radial-gradient");
-
-    case UseCounter::kDeprecatedWebKitRepeatingRadialGradient:
-      return replacedBy("-webkit-repeating-radial-gradient",
-                        "repeating-radial-gradient");
-
     // Features that aren't deprecated don't have a deprecation message.
     default:
       return String();
diff --git a/third_party/WebKit/Source/core/frame/ImageBitmapTest.cpp b/third_party/WebKit/Source/core/frame/ImageBitmapTest.cpp
index aa1a9c6b..977ae00 100644
--- a/third_party/WebKit/Source/core/frame/ImageBitmapTest.cpp
+++ b/third_party/WebKit/Source/core/frame/ImageBitmapTest.cpp
@@ -106,8 +106,8 @@
   const ImageBitmapOptions default_options;
   HTMLImageElement* image_element =
       HTMLImageElement::Create(*Document::Create());
-  ImageResourceContent* image =
-      ImageResourceContent::Create(StaticBitmapImage::Create(image_).Get());
+  ImageResourceContent* image = ImageResourceContent::CreateLoaded(
+      StaticBitmapImage::Create(image_).Get());
   image_element->SetImageResource(image);
 
   Optional<IntRect> crop_rect =
@@ -149,7 +149,8 @@
 TEST_F(ImageBitmapTest, ImageBitmapSourceChanged) {
   HTMLImageElement* image = HTMLImageElement::Create(*Document::Create());
   ImageResourceContent* original_image_resource =
-      ImageResourceContent::Create(StaticBitmapImage::Create(image_).Get());
+      ImageResourceContent::CreateLoaded(
+          StaticBitmapImage::Create(image_).Get());
   image->SetImageResource(original_image_resource);
 
   const ImageBitmapOptions default_options;
@@ -163,8 +164,8 @@
   ASSERT_NE(image_bitmap->BitmapImage()->ImageForCurrentFrame(),
             original_image_resource->GetImage()->ImageForCurrentFrame());
 
-  ImageResourceContent* new_image_resource =
-      ImageResourceContent::Create(StaticBitmapImage::Create(image2_).Get());
+  ImageResourceContent* new_image_resource = ImageResourceContent::CreateLoaded(
+      StaticBitmapImage::Create(image2_).Get());
   image->SetImageResource(new_image_resource);
 
   {
@@ -241,7 +242,8 @@
                     image->width() * raster_image_info.bytesPerPixel(), 5, 5);
 
   ImageResourceContent* original_image_resource =
-      ImageResourceContent::Create(StaticBitmapImage::Create(image).Get());
+      ImageResourceContent::CreateLoaded(
+          StaticBitmapImage::Create(image).Get());
   image_element->SetImageResource(original_image_resource);
 
   Optional<IntRect> crop_rect = IntRect(0, 0, image->width(), image->height());
@@ -352,7 +354,8 @@
                     image->width() * raster_image_info.bytesPerPixel(), 5, 5);
 
   ImageResourceContent* source_image_resource =
-      ImageResourceContent::Create(StaticBitmapImage::Create(image).Get());
+      ImageResourceContent::CreateLoaded(
+          StaticBitmapImage::Create(image).Get());
   image_element->SetImageResource(source_image_resource);
 
   Optional<IntRect> crop_rect = IntRect(0, 0, image->width(), image->height());
diff --git a/third_party/WebKit/Source/core/frame/Settings.cpp b/third_party/WebKit/Source/core/frame/Settings.cpp
index afb571b..17debdf 100644
--- a/third_party/WebKit/Source/core/frame/Settings.cpp
+++ b/third_party/WebKit/Source/core/frame/Settings.cpp
@@ -61,14 +61,7 @@
 #endif
 
 Settings::Settings()
-#if DEBUG_TEXT_AUTOSIZING_ON_DESKTOP
-    : text_autosizing_window_size_override_(320, 480),
-      text_autosizing_enabled_(true)
-#else
-    : text_autosizing_enabled_(false)
-#endif
-          SETTINGS_INITIALIZER_LIST {
-}
+    : text_autosizing_enabled_(false) SETTINGS_INITIALIZER_LIST {}
 
 std::unique_ptr<Settings> Settings::Create() {
   return WTF::WrapUnique(new Settings);
diff --git a/third_party/WebKit/Source/core/html/HTMLImageElement.cpp b/third_party/WebKit/Source/core/html/HTMLImageElement.cpp
index 6046a9a..6ad4929 100644
--- a/third_party/WebKit/Source/core/html/HTMLImageElement.cpp
+++ b/third_party/WebKit/Source/core/html/HTMLImageElement.cpp
@@ -372,8 +372,9 @@
           blink::DeviceScaleFactorDeprecated(layout_image->GetFrame());
       std::pair<Image*, float> broken_image_and_image_scale_factor =
           ImageResourceContent::BrokenImage(device_scale_factor);
-      ImageResourceContent* new_image_resource = ImageResourceContent::Create(
-          broken_image_and_image_scale_factor.first);
+      ImageResourceContent* new_image_resource =
+          ImageResourceContent::CreateLoaded(
+              broken_image_and_image_scale_factor.first);
       layout_image->ImageResource()->SetImageResource(new_image_resource);
     }
     if (layout_image_resource->HasImage())
diff --git a/third_party/WebKit/Source/core/inspector/DOMPatchSupport.cpp b/third_party/WebKit/Source/core/inspector/DOMPatchSupport.cpp
index 2a4f851..afb5e8c6 100644
--- a/third_party/WebKit/Source/core/inspector/DOMPatchSupport.cpp
+++ b/third_party/WebKit/Source/core/inspector/DOMPatchSupport.cpp
@@ -309,11 +309,6 @@
     }
   }
 
-#ifdef DEBUG_DOM_PATCH_SUPPORT
-  dumpMap(oldMap, "OLD");
-  dumpMap(newMap, "NEW");
-#endif
-
   return std::make_pair(old_map, new_map);
 }
 
@@ -552,22 +547,6 @@
   }
 }
 
-#ifdef DEBUG_DOM_PATCH_SUPPORT
-static String nodeName(Node* node) {
-  if (node->document().isXHTMLDocument())
-    return node->nodeName();
-  return node->nodeName().lower();
-}
-
-void DOMPatchSupport::dumpMap(const ResultMap& map, const String& name) {
-  fprintf(stderr, "\n\n");
-  for (size_t i = 0; i < map.size(); ++i)
-    fprintf(stderr, "%s[%lu]: %s (%p) - [%lu]\n", name.utf8().data(), i,
-            map[i].first ? nodeName(map[i].first->m_node).utf8().data() : "",
-            map[i].first, map[i].second);
-}
-#endif
-
 DEFINE_TRACE(DOMPatchSupport::Digest) {
   visitor->Trace(node_);
   visitor->Trace(children_);
diff --git a/third_party/WebKit/Source/core/inspector/DOMPatchSupport.h b/third_party/WebKit/Source/core/inspector/DOMPatchSupport.h
index 2d8ffe84..26fd66e 100644
--- a/third_party/WebKit/Source/core/inspector/DOMPatchSupport.h
+++ b/third_party/WebKit/Source/core/inspector/DOMPatchSupport.h
@@ -86,9 +86,6 @@
                                  ExceptionState&);
   bool RemoveChildAndMoveToNew(Digest*, ExceptionState&);
   void MarkNodeAsUsed(Digest*);
-#ifdef DEBUG_DOM_PATCH_SUPPORT
-  void dumpMap(const ResultMap&, const String& name);
-#endif
   Document& GetDocument() const { return *document_; }
 
   Member<DOMEditor> dom_editor_;
diff --git a/third_party/WebKit/Source/core/layout/LayoutText.cpp b/third_party/WebKit/Source/core/layout/LayoutText.cpp
index bedd7fc..6d0f1d2 100644
--- a/third_party/WebKit/Source/core/layout/LayoutText.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutText.cpp
@@ -249,8 +249,6 @@
 }
 
 void LayoutText::ExtractTextBox(InlineTextBox* box) {
-  CheckConsistency();
-
   last_text_box_ = box->PrevTextBox();
   if (box == first_text_box_)
     first_text_box_ = nullptr;
@@ -259,13 +257,9 @@
   box->SetPreviousTextBox(nullptr);
   for (InlineTextBox* curr = box; curr; curr = curr->NextTextBox())
     curr->SetExtracted();
-
-  CheckConsistency();
 }
 
 void LayoutText::AttachTextBox(InlineTextBox* box) {
-  CheckConsistency();
-
   if (last_text_box_) {
     last_text_box_->SetNextTextBox(box);
     box->SetPreviousTextBox(last_text_box_);
@@ -278,13 +272,9 @@
     last = curr;
   }
   last_text_box_ = last;
-
-  CheckConsistency();
 }
 
 void LayoutText::RemoveTextBox(InlineTextBox* box) {
-  CheckConsistency();
-
   if (box == first_text_box_)
     first_text_box_ = box->NextTextBox();
   if (box == last_text_box_)
@@ -293,8 +283,6 @@
     box->NextTextBox()->SetPreviousTextBox(box->PrevTextBox());
   if (box->PrevTextBox())
     box->PrevTextBox()->SetNextTextBox(box->NextTextBox());
-
-  CheckConsistency();
 }
 
 void LayoutText::DeleteTextBoxes() {
@@ -2027,23 +2015,6 @@
   return len;
 }
 
-#if DCHECK_IS_ON()
-
-void LayoutText::CheckConsistency() const {
-#ifdef CHECK_CONSISTENCY
-  const InlineTextBox* prev = nullptr;
-  for (const InlineTextBox* child = m_firstTextBox; child;
-       child = child->nextTextBox()) {
-    DCHECK(child->getLineLayoutItem().isEqual(this));
-    DCHECK_EQ(child->prevTextBox(), prev);
-    prev = child;
-  }
-  DCHECK_EQ(prev, m_lastTextBox);
-#endif
-}
-
-#endif
-
 void LayoutText::MomentarilyRevealLastTypedCharacter(
     unsigned last_typed_character_offset) {
   if (!g_secure_text_timers)
diff --git a/third_party/WebKit/Source/core/layout/LayoutText.h b/third_party/WebKit/Source/core/layout/LayoutText.h
index 22c4160f..218b1cb4 100644
--- a/third_party/WebKit/Source/core/layout/LayoutText.h
+++ b/third_party/WebKit/Source/core/layout/LayoutText.h
@@ -285,8 +285,6 @@
 
   LayoutRect LocalVisualRect() const override;
 
-  void CheckConsistency() const;
-
   // We put the bitfield first to minimize padding on 64-bit.
 
   // Whether or not we can be broken into multiple lines.
@@ -351,10 +349,6 @@
 
 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutText, IsText());
 
-#if !DCHECK_IS_ON()
-inline void LayoutText::CheckConsistency() const {}
-#endif
-
 inline LayoutText* Text::GetLayoutObject() const {
   return ToLayoutText(CharacterData::GetLayoutObject());
 }
diff --git a/third_party/WebKit/Source/core/layout/line/AbstractInlineTextBox.cpp b/third_party/WebKit/Source/core/layout/line/AbstractInlineTextBox.cpp
index 25cfd8a..bba8fdc 100644
--- a/third_party/WebKit/Source/core/layout/line/AbstractInlineTextBox.cpp
+++ b/third_party/WebKit/Source/core/layout/line/AbstractInlineTextBox.cpp
@@ -78,7 +78,7 @@
 }
 
 void AbstractInlineTextBox::Detach() {
-  if (Node* node = line_layout_item_.GetNode()) {
+  if (Node* node = GetNode()) {
     if (AXObjectCache* cache = node->GetDocument().ExistingAXObjectCache())
       cache->Remove(this);
   }
diff --git a/third_party/WebKit/Source/core/layout/line/AbstractInlineTextBox.h b/third_party/WebKit/Source/core/layout/line/AbstractInlineTextBox.h
index 2d58a27..d168516 100644
--- a/third_party/WebKit/Source/core/layout/line/AbstractInlineTextBox.h
+++ b/third_party/WebKit/Source/core/layout/line/AbstractInlineTextBox.h
@@ -79,6 +79,7 @@
   LayoutRect LocalBounds() const;
   unsigned Len() const;
   Direction GetDirection() const;
+  Node* GetNode() const { return line_layout_item_.GetNode(); }
   void CharacterWidths(Vector<float>&) const;
   void GetWordBoundaries(Vector<WordBoundaries>&) const;
   String GetText() const;
diff --git a/third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp b/third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp
index b296976..fb1fa86 100644
--- a/third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp
+++ b/third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp
@@ -95,7 +95,6 @@
   DCHECK(!child->Parent());
   DCHECK(!child->NextOnLine());
   DCHECK(!child->PrevOnLine());
-  CheckConsistency();
 
   child->SetParent(this);
   if (!first_child_) {
@@ -195,13 +194,9 @@
         !ToInlineFlowBox(child)->KnownToHaveNoOverflow())
       ClearKnownToHaveNoOverflow();
   }
-
-  CheckConsistency();
 }
 
 void InlineFlowBox::RemoveChild(InlineBox* child, MarkLineBoxes mark_dirty) {
-  CheckConsistency();
-
   if (mark_dirty == kMarkLineBoxesDirty && !IsDirty())
     DirtyLineBoxes();
 
@@ -217,8 +212,6 @@
     child->PrevOnLine()->SetNextOnLine(child->NextOnLine());
 
   child->SetParent(nullptr);
-
-  CheckConsistency();
 }
 
 void InlineFlowBox::DeleteLine() {
@@ -1720,21 +1713,4 @@
 
 #endif
 
-#if DCHECK_IS_ON()
-void InlineFlowBox::CheckConsistency() const {
-#ifdef CHECK_CONSISTENCY
-  DCHECK(!m_hasBadChildList);
-  const InlineBox* prev = nullptr;
-  for (const InlineBox* child = m_firstChild; child;
-       child = child->nextOnLine()) {
-    DCHECK_EQ(child->parent(), this);
-    DCHECK_EQ(child->prevOnLine(), prev);
-    prev = child;
-  }
-  DCHECK_EQ(prev, m_lastChild);
-#endif
-}
-
-#endif
-
 }  // namespace blink
diff --git a/third_party/WebKit/Source/core/layout/line/InlineFlowBox.h b/third_party/WebKit/Source/core/layout/line/InlineFlowBox.h
index 1c1a3a4..ab20f32 100644
--- a/third_party/WebKit/Source/core/layout/line/InlineFlowBox.h
+++ b/third_party/WebKit/Source/core/layout/line/InlineFlowBox.h
@@ -97,14 +97,8 @@
   void SetNextLineBox(InlineFlowBox* n) { next_line_box_ = n; }
   void SetPreviousLineBox(InlineFlowBox* p) { prev_line_box_ = p; }
 
-  InlineBox* FirstChild() const {
-    CheckConsistency();
-    return first_child_;
-  }
-  InlineBox* LastChild() const {
-    CheckConsistency();
-    return last_child_;
-  }
+  InlineBox* FirstChild() const { return first_child_; }
+  InlineBox* LastChild() const { return last_child_; }
 
   bool IsLeaf() const final { return false; }
 
@@ -282,7 +276,6 @@
   bool HasTextDescendants() const { return has_text_descendants_; }
   void SetHasTextDescendants() { has_text_descendants_ = true; }
 
-  void CheckConsistency() const;
   void SetHasBadChildList();
 
   // Line visual and layout overflow are in the coordinate space of the block.
@@ -483,10 +476,6 @@
 
 DEFINE_INLINE_BOX_TYPE_CASTS(InlineFlowBox);
 
-#if !DCHECK_IS_ON()
-inline void InlineFlowBox::CheckConsistency() const {}
-#endif
-
 inline void InlineFlowBox::SetHasBadChildList() {
 #if DCHECK_IS_ON()
   has_bad_child_list_ = true;
diff --git a/third_party/WebKit/Source/core/layout/line/LineBoxList.cpp b/third_party/WebKit/Source/core/layout/line/LineBoxList.cpp
index fedc8b7b..de5ef615 100644
--- a/third_party/WebKit/Source/core/layout/line/LineBoxList.cpp
+++ b/third_party/WebKit/Source/core/layout/line/LineBoxList.cpp
@@ -48,8 +48,6 @@
 #endif
 
 void LineBoxList::AppendLineBox(InlineFlowBox* box) {
-  CheckConsistency();
-
   if (!first_line_box_) {
     first_line_box_ = last_line_box_ = box;
   } else {
@@ -57,8 +55,6 @@
     box->SetPreviousLineBox(last_line_box_);
     last_line_box_ = box;
   }
-
-  CheckConsistency();
 }
 
 void LineBoxList::DeleteLineBoxTree() {
@@ -73,8 +69,6 @@
 }
 
 void LineBoxList::ExtractLineBox(InlineFlowBox* box) {
-  CheckConsistency();
-
   last_line_box_ = box->PrevLineBox();
   if (box == first_line_box_)
     first_line_box_ = nullptr;
@@ -83,13 +77,9 @@
   box->SetPreviousLineBox(nullptr);
   for (InlineFlowBox* curr = box; curr; curr = curr->NextLineBox())
     curr->SetExtracted();
-
-  CheckConsistency();
 }
 
 void LineBoxList::AttachLineBox(InlineFlowBox* box) {
-  CheckConsistency();
-
   if (last_line_box_) {
     last_line_box_->SetNextLineBox(box);
     box->SetPreviousLineBox(last_line_box_);
@@ -102,13 +92,9 @@
     last = curr;
   }
   last_line_box_ = last;
-
-  CheckConsistency();
 }
 
 void LineBoxList::RemoveLineBox(InlineFlowBox* box) {
-  CheckConsistency();
-
   if (box == first_line_box_)
     first_line_box_ = box->NextLineBox();
   if (box == last_line_box_)
@@ -117,8 +103,6 @@
     box->NextLineBox()->SetPreviousLineBox(box->PrevLineBox());
   if (box->PrevLineBox())
     box->PrevLineBox()->SetNextLineBox(box->NextLineBox());
-
-  CheckConsistency();
 }
 
 void LineBoxList::DeleteLineBoxes() {
@@ -369,19 +353,4 @@
   }
 }
 
-#if DCHECK_IS_ON()
-void LineBoxList::CheckConsistency() const {
-#ifdef CHECK_CONSISTENCY
-  const InlineFlowBox* prev = nullptr;
-  for (const InlineFlowBox* child = m_firstLineBox; child;
-       child = child->nextLineBox()) {
-    DCHECK_EQ(child->prevLineBox(), prev);
-    prev = child;
-  }
-  DCHECK_EQ(prev, m_lastLineBox);
-#endif
-}
-
-#endif
-
 }  // namespace blink
diff --git a/third_party/WebKit/Source/core/layout/line/LineBoxList.h b/third_party/WebKit/Source/core/layout/line/LineBoxList.h
index ac7a4c8..d639d1f 100644
--- a/third_party/WebKit/Source/core/layout/line/LineBoxList.h
+++ b/third_party/WebKit/Source/core/layout/line/LineBoxList.h
@@ -57,8 +57,6 @@
   InlineFlowBox* FirstLineBox() const { return first_line_box_; }
   InlineFlowBox* LastLineBox() const { return last_line_box_; }
 
-  void CheckConsistency() const;
-
   void AppendLineBox(InlineFlowBox*);
 
   void DeleteLineBoxTree();
@@ -100,10 +98,6 @@
   InlineFlowBox* last_line_box_;
 };
 
-#if !DCHECK_IS_ON()
-inline void LineBoxList::CheckConsistency() const {}
-#endif
-
 }  // namespace blink
 
 #endif  // LineBoxList_h
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm.cc
index 581bd98..fd84b63 100644
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm.cc
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm.cc
@@ -43,9 +43,10 @@
       .ToConstraintSpace(FromPlatformWritingMode(style.GetWritingMode()));
 }
 
-NGLogicalOffset GetOriginPointForFloats(const NGConstraintSpace& space,
-                                        LayoutUnit content_size) {
-  NGLogicalOffset origin_point = space.BfcOffset();
+NGLogicalOffset GetOriginPointForFloats(
+    const NGLogicalOffset& container_bfc_offset,
+    LayoutUnit content_size) {
+  NGLogicalOffset origin_point = container_bfc_offset;
   origin_point.block_offset += content_size;
   return origin_point;
 }
@@ -295,7 +296,7 @@
 #endif
 
   NGLogicalOffset origin_point =
-      GetOriginPointForFloats(ConstraintSpace(), content_size_);
+      GetOriginPointForFloats(ContainerBfcOffset(), content_size_);
   PositionPendingFloats(origin_point.block_offset, &container_builder_,
                         MutableConstraintSpace());
   FindNextLayoutOpportunity();
@@ -375,16 +376,16 @@
       ToNGPhysicalBoxFragment(layout_result->PhysicalFragment().Get()));
 
   NGLogicalOffset origin_offset =
-      GetOriginPointForFloats(ConstraintSpace(), content_size_);
-  NGLogicalOffset from_offset = ConstraintSpace().BfcOffset();
+      GetOriginPointForFloats(ContainerBfcOffset(), content_size_);
   const ComputedStyle& float_style = node->Style();
   NGBoxStrut margins = ComputeMargins(ConstraintSpace(), float_style,
                                       ConstraintSpace().WritingMode(),
                                       ConstraintSpace().Direction());
   RefPtr<NGFloatingObject> floating_object = NGFloatingObject::Create(
       float_style, float_space->WritingMode(), current_opportunity_.size,
-      origin_offset, from_offset, margins,
+      origin_offset, ContainerBfcOffset(), margins,
       layout_result->PhysicalFragment().Get());
+  floating_object->parent_bfc_block_offset = ContainerBfcOffset().block_offset;
 
   bool float_does_not_fit = end_position + float_fragment.InlineSize() >
                             current_opportunity_.InlineSize();
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
index f9d504e..274df6b 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
@@ -87,23 +87,35 @@
   }
 }
 
+void PositionPendingFloatsFromOffset(LayoutUnit origin_block_offset,
+                                     LayoutUnit from_block_offset,
+                                     NGFragmentBuilder* container_builder,
+                                     NGConstraintSpace* space) {
+  DCHECK(container_builder->BfcOffset())
+      << "Parent BFC offset should be known here";
+  const auto& floating_objects = container_builder->UnpositionedFloats();
+  container_builder->MutablePositionedFloats().AppendVector(
+      PositionFloats(origin_block_offset, from_block_offset,
+                     container_builder->BfcOffset().value().block_offset,
+                     floating_objects, space));
+  container_builder->MutableUnpositionedFloats().clear();
+}
+
 void PositionPendingFloats(LayoutUnit origin_block_offset,
                            NGFragmentBuilder* container_builder,
                            NGConstraintSpace* space) {
   DCHECK(container_builder->BfcOffset())
       << "Parent BFC offset should be known here";
-  const auto& floating_objects = container_builder->UnpositionedFloats();
-  container_builder->MutablePositionedFloats().AppendVector(PositionFloats(
-      origin_block_offset, container_builder->BfcOffset().value().block_offset,
-      floating_objects, space));
-  container_builder->MutableUnpositionedFloats().clear();
+  LayoutUnit from_block_offset =
+      container_builder->BfcOffset().value().block_offset;
+  PositionPendingFloatsFromOffset(origin_block_offset, from_block_offset,
+                                  container_builder, space);
 }
 
 NGBlockLayoutAlgorithm::NGBlockLayoutAlgorithm(NGBlockNode* node,
                                                NGConstraintSpace* space,
                                                NGBlockBreakToken* break_token)
-    : NGLayoutAlgorithm(node, space, break_token),
-      space_builder_(constraint_space_) {}
+    : NGLayoutAlgorithm(node, space, break_token) {}
 
 Optional<MinMaxContentSize> NGBlockLayoutAlgorithm::ComputeMinMaxContentSize()
     const {
@@ -175,8 +187,8 @@
   else
     adjusted_size -= border_and_padding_;
 
-  space_builder_.SetAvailableSize(adjusted_size)
-      .SetPercentageResolutionSize(adjusted_size);
+  child_available_size_ = adjusted_size;
+  child_percentage_size_ = adjusted_size;
 
   container_builder_.SetDirection(constraint_space_->Direction());
   container_builder_.SetWritingMode(constraint_space_->WritingMode());
@@ -241,7 +253,7 @@
 
     NGLogicalOffset child_bfc_offset = PrepareChildLayout(child);
     RefPtr<NGConstraintSpace> child_space =
-        CreateConstraintSpaceForChild(child_bfc_offset, child);
+        CreateConstraintSpaceForChild(child_bfc_offset, *child);
     RefPtr<NGLayoutResult> layout_result =
         child->Layout(child_space.Get(), child_break_token);
 
@@ -314,9 +326,7 @@
   curr_bfc_offset_.block_offset += content_size_;
 
   // Calculate margins in parent's writing mode.
-  curr_child_margins_ = CalculateMargins(
-      child, *space_builder_.ToConstraintSpace(
-                 FromPlatformWritingMode(Style().GetWritingMode())));
+  curr_child_margins_ = CalculateMargins(child);
 
   bool should_position_pending_floats =
       !child->IsFloating() &&
@@ -394,7 +404,7 @@
   else if (IsLegacyBlock(*child))
     child_bfc_offset = PositionLegacy(child_space);
   else if (container_builder_.BfcOffset())
-    child_bfc_offset = PositionWithParentBfc(fragment);
+    child_bfc_offset = PositionWithParentBfc(child_space, fragment);
 
   NGLogicalOffset logical_offset = CalculateLogicalOffset(child_bfc_offset);
 
@@ -428,6 +438,7 @@
           .SetIsNewFormattingContext(false)
           .ToConstraintSpace(child_space.WritingMode());
   PositionFloats(curr_bfc_offset_.block_offset, curr_bfc_offset_.block_offset,
+                 curr_bfc_offset_.block_offset,
                  container_builder_.UnpositionedFloats(), tmp_space.Get());
 
   NGLogicalOffset origin_offset = curr_bfc_offset_;
@@ -477,6 +488,7 @@
 }
 
 NGLogicalOffset NGBlockLayoutAlgorithm::PositionWithParentBfc(
+    const NGConstraintSpace& space,
     const NGBoxFragment& fragment) {
   // The child must be an in-flow zero-block-size fragment, use its end margin
   // strut for positioning.
@@ -489,6 +501,10 @@
   curr_bfc_offset_ +=
       {border_and_padding_.inline_start + curr_child_margins_.inline_start,
        margin_strut.Sum()};
+  AdjustToClearance(space.ClearanceOffset(), &curr_bfc_offset_);
+  PositionPendingFloatsFromOffset(
+      curr_bfc_offset_.block_offset, curr_bfc_offset_.block_offset,
+      &container_builder_, MutableConstraintSpace());
   return curr_bfc_offset_;
 }
 
@@ -560,57 +576,66 @@
   container_builder_.SetBlockOverflow(content_size_);
 }
 
-NGBoxStrut NGBlockLayoutAlgorithm::CalculateMargins(
-    NGLayoutInputNode* child,
-    const NGConstraintSpace& space) {
+NGBoxStrut NGBlockLayoutAlgorithm::CalculateMargins(NGLayoutInputNode* child) {
   DCHECK(child);
   if (child->IsInline())
     return {};
   const ComputedStyle& child_style = child->Style();
 
-  WTF::Optional<MinMaxContentSize> sizes;
-  if (NeedMinMaxContentSize(space, child_style))
-    sizes = child->ComputeMinMaxContentSize();
+  RefPtr<NGConstraintSpace> space =
+      NGConstraintSpaceBuilder(MutableConstraintSpace())
+          .SetAvailableSize(child_available_size_)
+          .SetPercentageResolutionSize(child_percentage_size_)
+          .ToConstraintSpace(ConstraintSpace().WritingMode());
 
-  LayoutUnit child_inline_size =
-      ComputeInlineSizeForFragment(space, child_style, sizes);
-  NGBoxStrut margins = ComputeMargins(space, child_style, space.WritingMode(),
-                                      space.Direction());
+  NGBoxStrut margins = ComputeMargins(*space, child_style, space->WritingMode(),
+                                      space->Direction());
+
+  // TODO(ikilpatrick): Move the auto margins calculation for different writing
+  // modes to post-layout.
   if (!child->IsFloating()) {
-    ApplyAutoMargins(space, child_style, child_inline_size, &margins);
+    WTF::Optional<MinMaxContentSize> sizes;
+    if (NeedMinMaxContentSize(*space, child_style))
+      sizes = child->ComputeMinMaxContentSize();
+
+    LayoutUnit child_inline_size =
+        ComputeInlineSizeForFragment(*space, child_style, sizes);
+    ApplyAutoMargins(*space, child_style, child_inline_size, &margins);
   }
   return margins;
 }
 
 RefPtr<NGConstraintSpace> NGBlockLayoutAlgorithm::CreateConstraintSpaceForChild(
     const NGLogicalOffset& child_bfc_offset,
-    NGLayoutInputNode* child) {
-  DCHECK(child);
+    const NGLayoutInputNode& child) {
+  NGConstraintSpaceBuilder space_builder(MutableConstraintSpace());
+  space_builder.SetAvailableSize(child_available_size_)
+      .SetPercentageResolutionSize(child_percentage_size_);
 
-  const ComputedStyle& child_style = child->Style();
-  bool is_new_bfc = IsNewFormattingContextForBlockLevelChild(Style(), *child);
-  space_builder_.SetIsNewFormattingContext(is_new_bfc)
+  const ComputedStyle& child_style = child.Style();
+  bool is_new_bfc = IsNewFormattingContextForBlockLevelChild(Style(), child);
+  space_builder.SetIsNewFormattingContext(is_new_bfc)
       .SetBfcOffset(child_bfc_offset);
 
   // Float's margins are not included in child's space because:
   // 1) Floats do not participate in margins collapsing.
   // 2) Floats margins are used separately to calculate floating exclusions.
-  space_builder_.SetMarginStrut(child->IsFloating() ? NGMarginStrut()
-                                                    : curr_margin_strut_);
+  space_builder.SetMarginStrut(child.IsFloating() ? NGMarginStrut()
+                                                  : curr_margin_strut_);
 
   if (!is_new_bfc) {
-    space_builder_.SetUnpositionedFloats(
+    space_builder.SetUnpositionedFloats(
         container_builder_.MutableUnpositionedFloats());
   }
 
-  if (child->IsInline()) {
-    // TODO(kojii): Setup space_builder_ appropriately for inline child.
-    space_builder_.SetClearanceOffset(ConstraintSpace().ClearanceOffset());
-    return space_builder_.ToConstraintSpace(
+  if (child.IsInline()) {
+    // TODO(kojii): Setup space_builder appropriately for inline child.
+    space_builder.SetClearanceOffset(ConstraintSpace().ClearanceOffset());
+    return space_builder.ToConstraintSpace(
         FromPlatformWritingMode(Style().GetWritingMode()));
   }
 
-  space_builder_
+  space_builder
       .SetClearanceOffset(
           GetClearanceOffset(constraint_space_->Exclusions(), child_style))
       .SetIsShrinkToFit(ShouldShrinkToFit(Style(), child_style))
@@ -626,9 +651,9 @@
       space_available -= child_bfc_offset.block_offset;
     }
   }
-  space_builder_.SetFragmentainerSpaceAvailable(space_available);
+  space_builder.SetFragmentainerSpaceAvailable(space_available);
 
-  return space_builder_.ToConstraintSpace(
+  return space_builder.ToConstraintSpace(
       FromPlatformWritingMode(child_style.GetWritingMode()));
 }
 }  // namespace blink
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
index d1bf12a1..fc0461b 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
+++ b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
@@ -48,13 +48,12 @@
   virtual RefPtr<NGLayoutResult> Layout() override;
 
  private:
-  NGBoxStrut CalculateMargins(NGLayoutInputNode* child,
-                              const NGConstraintSpace& space);
+  NGBoxStrut CalculateMargins(NGLayoutInputNode* child);
 
   // Creates a new constraint space for the current child.
   RefPtr<NGConstraintSpace> CreateConstraintSpaceForChild(
       const NGLogicalOffset& child_bfc_offset,
-      NGLayoutInputNode*);
+      const NGLayoutInputNode&);
 
   // @return Estimated BFC offset for the "to be layout" child.
   NGLogicalOffset PrepareChildLayout(NGLayoutInputNode*);
@@ -95,7 +94,8 @@
   //   BFC Offset is known here because of the padding.
   //   <div style="padding: 1px">
   //     <div id="empty-div" style="margins: 1px"></div>
-  NGLogicalOffset PositionWithParentBfc(const NGBoxFragment&);
+  NGLogicalOffset PositionWithParentBfc(const NGConstraintSpace&,
+                                        const NGBoxFragment&);
 
   NGLogicalOffset PositionLegacy(const NGConstraintSpace& child_space);
 
@@ -115,7 +115,8 @@
   NGLogicalOffset CalculateLogicalOffset(
       const WTF::Optional<NGLogicalOffset>& known_fragment_offset);
 
-  NGConstraintSpaceBuilder space_builder_;
+  NGLogicalSize child_available_size_;
+  NGLogicalSize child_percentage_size_;
 
   NGBoxStrut border_and_padding_;
   LayoutUnit content_size_;
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc b/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
index 0dc927d..c8328c9 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
@@ -78,8 +78,8 @@
     FloatingObject* floating_object =
         ToLayoutBlockFlow(parent)->InsertFloatingObject(*layout_box);
     floating_object->SetIsInPlacedTree(false);
-    floating_object->SetX(positioned_float.left_offset);
-    floating_object->SetY(box_fragment->TopOffset());
+    floating_object->SetX(positioned_float.paint_offset.left);
+    floating_object->SetY(positioned_float.paint_offset.top);
     floating_object->SetIsPlaced(true);
     floating_object->SetIsInPlacedTree(true);
   }
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_floating_object.h b/third_party/WebKit/Source/core/layout/ng/ng_floating_object.h
index c7b5a503..df00cbf 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_floating_object.h
+++ b/third_party/WebKit/Source/core/layout/ng/ng_floating_object.h
@@ -39,7 +39,7 @@
   // NGLayoutOpportunityIterator to position this floating object.
   NGLogicalSize available_size;
 
-  // To correctly position a float we need 2 offsets:
+  // To correctly **position** a float we need 2 offsets:
   // - origin_offset which represents the layout point for this float.
   // - from_offset which represents the point from where we need to calculate
   //   the relative logical offset for this float.
@@ -50,6 +50,32 @@
   NGLogicalOffset origin_offset;
   NGLogicalOffset from_offset;
 
+  // To correctly **paint** a float we need to know the BFC offset of the
+  // container to which we are attaching this float. It's used to calculate
+  // {@code paint_offset}.
+  // In most situations {@code paint_offset} equals to float's logical
+  // offset except the cases where a float needs to be re-attached to a non-zero
+  // height parent.
+  //
+  // Example:
+  //   <body>
+  //     <p style="height: 60px">Example</p>
+  //     <div id="zero-height-div"><float></div>
+  //
+  // Here the float's logical offset is 0 relative to its #zero-height-div
+  // parent. Because of the "zero height" div this float is re-attached to the
+  // 1st non-empty parent => body. To paint this float correctly we provide the
+  // modified {@code paint_offset} which is relative to the float's new
+  // parent.
+  // I.e. for our example {@code paint_offset.top} ==
+  //                      #zero-height-div's BFC offset
+  //                      - body's BFC offset + float's logical offset
+  //
+  // For code safety reasons {@code parent_bfc_block_offset} is Optional here
+  // because the block's offset can be only determined before the actual float's
+  // placement event.
+  WTF::Optional<LayoutUnit> parent_bfc_block_offset;
+
   // Writing mode of the float's constraint space.
   NGWritingMode writing_mode;
 
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_floats_utils.cc b/third_party/WebKit/Source/core/layout/ng/ng_floats_utils.cc
index 47ab32ec..bdacbf0 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_floats_utils.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_floats_utils.cc
@@ -78,15 +78,20 @@
   return exclusion;
 }
 
-// Calculates the Floating Object's left offset from the provided parent_space
-// and {@code floating_object}'s space and margins.
-LayoutUnit CalculateLeftOffset(const NGConstraintSpace& new_parent_space,
-                               const NGLogicalOffset& float_logical_offset,
-                               const NGFloatingObject& floating_object) {
+// Updates the Floating Object's left and top offsets.
+NGPhysicalOffset CalculateFloatingObjectPaintOffset(
+    const NGConstraintSpace& new_parent_space,
+    const NGLogicalOffset& float_logical_offset,
+    const NGFloatingObject& floating_object) {
   // TODO(glebl): We should use physical offset here.
-  return floating_object.from_offset.inline_offset -
-         new_parent_space.BfcOffset().inline_offset +
-         float_logical_offset.inline_offset;
+  LayoutUnit left_offset = floating_object.from_offset.inline_offset -
+                           new_parent_space.BfcOffset().inline_offset +
+                           float_logical_offset.inline_offset;
+  DCHECK(floating_object.parent_bfc_block_offset);
+  LayoutUnit top_offset = floating_object.from_offset.block_offset -
+                          floating_object.parent_bfc_block_offset.value() +
+                          float_logical_offset.block_offset;
+  return {left_offset, top_offset};
 }
 }  // namespace
 
@@ -131,17 +136,17 @@
 
   NGLogicalOffset logical_offset = CalculateLogicalOffsetForOpportunity(
       opportunity, float_offset, floating_object);
-
-  LayoutUnit left_offset =
-      CalculateLeftOffset(*new_parent_space, logical_offset, *floating_object);
+  NGPhysicalOffset paint_offset = CalculateFloatingObjectPaintOffset(
+      *new_parent_space, logical_offset, *floating_object);
 
   return NGPositionedFloat(floating_object->fragment, logical_offset,
-                           left_offset);
+                           paint_offset);
 }
 
 const Vector<NGPositionedFloat> PositionFloats(
     LayoutUnit origin_block_offset,
     LayoutUnit from_block_offset,
+    LayoutUnit parent_bfc_offset,
     const Vector<RefPtr<NGFloatingObject>>& floating_objects,
     NGConstraintSpace* space) {
   Vector<NGPositionedFloat> positioned_floats;
@@ -150,6 +155,7 @@
   for (auto& floating_object : floating_objects) {
     floating_object->origin_offset.block_offset = origin_block_offset;
     floating_object->from_offset.block_offset = from_block_offset;
+    floating_object->parent_bfc_block_offset = parent_bfc_offset;
     positioned_floats.push_back(PositionFloat(floating_object.Get(), space));
   }
 
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_floats_utils.h b/third_party/WebKit/Source/core/layout/ng/ng_floats_utils.h
index 81a2e3bf..4df43a3 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_floats_utils.h
+++ b/third_party/WebKit/Source/core/layout/ng/ng_floats_utils.h
@@ -23,6 +23,7 @@
 CORE_EXPORT const Vector<NGPositionedFloat> PositionFloats(
     LayoutUnit origin_block_offset,
     LayoutUnit from_block_offset,
+    LayoutUnit container_block_offset,
     const Vector<RefPtr<NGFloatingObject>>& floating_objects,
     NGConstraintSpace* space);
 
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc b/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
index e75e3ca1..2e7ead08 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
@@ -198,8 +198,10 @@
 
   for (auto& positioned_float : positioned_floats_) {
     NGPhysicalFragment* floating_fragment = positioned_float.fragment.Get();
-    floating_fragment->SetOffset(positioned_float.offset.ConvertToPhysical(
-        writing_mode_, direction_, physical_size, floating_fragment->Size()));
+    floating_fragment->SetOffset(
+        positioned_float.logical_offset.ConvertToPhysical(
+            writing_mode_, direction_, physical_size,
+            floating_fragment->Size()));
   }
 
   RefPtr<NGPhysicalBoxFragment> fragment = AdoptRef(new NGPhysicalBoxFragment(
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_positioned_float.h b/third_party/WebKit/Source/core/layout/ng/ng_positioned_float.h
index 8443fa0..affb803 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_positioned_float.h
+++ b/third_party/WebKit/Source/core/layout/ng/ng_positioned_float.h
@@ -13,21 +13,23 @@
 // Contains the information necessary for copying back data to a FloatingObject.
 struct CORE_EXPORT NGPositionedFloat {
   NGPositionedFloat(RefPtr<NGPhysicalFragment> fragment,
-                    NGLogicalOffset offset,
-                    LayoutUnit left_offset)
-      : fragment(fragment), offset(offset), left_offset(left_offset) {}
+                    const NGLogicalOffset& logical_offset,
+                    const NGPhysicalOffset& paint_offset)
+      : fragment(fragment),
+        logical_offset(logical_offset),
+        paint_offset(paint_offset) {}
 
   RefPtr<NGPhysicalFragment> fragment;
-  NGLogicalOffset offset;
+  NGLogicalOffset logical_offset;
 
   // In the case where a legacy FloatingObject is attached to not its own
   // parent, e.g. a float surrounded by a bunch of nested empty divs,
   // NG float fragment's LeftOffset() cannot be used as legacy FloatingObject's
   // left offset because that offset should be relative to the original float
   // parent.
-  // {@code left_offset} is calculated when we know to which parent this float
+  // {@code paint_offset} is calculated when we know to which parent this float
   // would be attached.
-  LayoutUnit left_offset;
+  NGPhysicalOffset paint_offset;
 };
 
 }  // namespace blink
diff --git a/third_party/WebKit/Source/core/loader/resource/ImageResource.cpp b/third_party/WebKit/Source/core/loader/resource/ImageResource.cpp
index c5c664d4..2aeeae5 100644
--- a/third_party/WebKit/Source/core/loader/resource/ImageResource.cpp
+++ b/third_party/WebKit/Source/core/loader/resource/ImageResource.cpp
@@ -134,7 +134,8 @@
   Resource* Create(const ResourceRequest& request,
                    const ResourceLoaderOptions& options,
                    const String&) const override {
-    return new ImageResource(request, options, ImageResourceContent::Create(),
+    return new ImageResource(request, options,
+                             ImageResourceContent::CreateNotStarted(),
                              fetch_params_->GetPlaceholderImageRequestType() ==
                                  FetchParameters::kAllowPlaceholder);
   }
@@ -183,7 +184,7 @@
 
 ImageResource* ImageResource::Create(const ResourceRequest& request) {
   return new ImageResource(request, ResourceLoaderOptions(),
-                           ImageResourceContent::Create(), false);
+                           ImageResourceContent::CreateNotStarted(), false);
 }
 
 ImageResource::ImageResource(const ResourceRequest& resource_request,
diff --git a/third_party/WebKit/Source/core/loader/resource/ImageResourceContent.cpp b/third_party/WebKit/Source/core/loader/resource/ImageResourceContent.cpp
index 221aca3..a476478 100644
--- a/third_party/WebKit/Source/core/loader/resource/ImageResourceContent.cpp
+++ b/third_party/WebKit/Source/core/loader/resource/ImageResourceContent.cpp
@@ -74,6 +74,14 @@
   info_ = &null_info;
 }
 
+ImageResourceContent* ImageResourceContent::CreateLoaded(
+    PassRefPtr<blink::Image> image) {
+  DCHECK(image);
+  ImageResourceContent* content = new ImageResourceContent(std::move(image));
+  content->content_status_ = ResourceStatus::kCached;
+  return content;
+}
+
 ImageResourceContent* ImageResourceContent::Fetch(FetchParameters& params,
                                                   ResourceFetcher* fetcher) {
   // TODO(hiroshige): Remove direct references to ImageResource by making
diff --git a/third_party/WebKit/Source/core/loader/resource/ImageResourceContent.h b/third_party/WebKit/Source/core/loader/resource/ImageResourceContent.h
index cd70475..f105fb80 100644
--- a/third_party/WebKit/Source/core/loader/resource/ImageResourceContent.h
+++ b/third_party/WebKit/Source/core/loader/resource/ImageResourceContent.h
@@ -46,10 +46,15 @@
   USING_GARBAGE_COLLECTED_MIXIN(ImageResourceContent);
 
  public:
-  static ImageResourceContent* Create(
-      PassRefPtr<blink::Image> image = nullptr) {
-    return new ImageResourceContent(std::move(image));
+  // Used for loading.
+  // Returned content will be associated immediately later with ImageResource.
+  static ImageResourceContent* CreateNotStarted() {
+    return new ImageResourceContent(nullptr);
   }
+
+  // Creates ImageResourceContent from an already loaded image.
+  static ImageResourceContent* CreateLoaded(PassRefPtr<blink::Image>);
+
   static ImageResourceContent* Fetch(FetchParameters&, ResourceFetcher*);
 
   // Returns the nullImage() if the image is not available yet.
diff --git a/third_party/WebKit/Source/core/paint/PaintLayer.cpp b/third_party/WebKit/Source/core/paint/PaintLayer.cpp
index ee53d12b8..fd7f93f 100644
--- a/third_party/WebKit/Source/core/paint/PaintLayer.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintLayer.cpp
@@ -2769,6 +2769,9 @@
 }
 
 bool PaintLayer::SupportsSubsequenceCaching() const {
+  if (EnclosingPaginationLayer())
+    return false;
+
   // SVG paints atomically.
   if (GetLayoutObject().IsSVGRoot())
     return true;
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp b/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp
index 0a48768..83105a9 100644
--- a/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp
@@ -329,6 +329,16 @@
   EXPECT_TRUE(svgroot->SupportsSubsequenceCaching());
 }
 
+TEST_P(PaintLayerTest, SubsequenceCachingMuticol) {
+  SetBodyInnerHTML(
+      "<div style='columns: 2'>"
+      "  <svg id='svgroot' style='position: relative'></svg>"
+      "</div>");
+
+  PaintLayer* svgroot = GetPaintLayerByElementId("svgroot");
+  EXPECT_FALSE(svgroot->SupportsSubsequenceCaching());
+}
+
 TEST_P(PaintLayerTest, HasDescendantWithClipPath) {
   SetBodyInnerHTML(
       "<div id='parent' style='position:relative'>"
diff --git a/third_party/WebKit/Source/core/style/ComputedStyle.cpp b/third_party/WebKit/Source/core/style/ComputedStyle.cpp
index 6990044f..fe7f67576 100644
--- a/third_party/WebKit/Source/core/style/ComputedStyle.cpp
+++ b/third_party/WebKit/Source/core/style/ComputedStyle.cpp
@@ -72,10 +72,11 @@
 // re-create the same structure for an accurate size comparison.
 struct SameSizeAsComputedStyle : public RefCounted<SameSizeAsComputedStyle> {
   struct ComputedStyleBase {
+    void* data_refs[3];
     unsigned bitfields_[4];
   } base_;
 
-  void* data_refs[7];
+  void* data_refs[4];
   void* own_ptrs[1];
   void* data_ref_svg_style;
 };
@@ -310,19 +311,19 @@
 
 void ComputedStyle::InheritFrom(const ComputedStyle& inherit_parent,
                                 IsAtShadowBoundary is_at_shadow_boundary) {
+  EUserModify current_user_modify = UserModify();
+
   ComputedStyleBase::InheritFrom(inherit_parent, is_at_shadow_boundary);
-  if (is_at_shadow_boundary == kAtShadowBoundary) {
-    // Even if surrounding content is user-editable, shadow DOM should act as a
-    // single unit, and not necessarily be editable
-    EUserModify current_user_modify = UserModify();
-    rare_inherited_data_ = inherit_parent.rare_inherited_data_;
-    SetUserModify(current_user_modify);
-  } else {
-    rare_inherited_data_ = inherit_parent.rare_inherited_data_;
-  }
+  rare_inherited_data_ = inherit_parent.rare_inherited_data_;
   inherited_data_ = inherit_parent.inherited_data_;
   if (svg_style_ != inherit_parent.svg_style_)
     svg_style_.Access()->InheritFrom(inherit_parent.svg_style_.Get());
+
+  if (is_at_shadow_boundary == kAtShadowBoundary) {
+    // Even if surrounding content is user-editable, shadow DOM should act as a
+    // single unit, and not necessarily be editable
+    SetUserModify(current_user_modify);
+  }
 }
 
 void ComputedStyle::CopyNonInheritedFromCached(const ComputedStyle& other) {
diff --git a/third_party/WebKit/Source/core/style/StyleFetchedImage.cpp b/third_party/WebKit/Source/core/style/StyleFetchedImage.cpp
index 166a856..cd91a07 100644
--- a/third_party/WebKit/Source/core/style/StyleFetchedImage.cpp
+++ b/third_party/WebKit/Source/core/style/StyleFetchedImage.cpp
@@ -130,9 +130,6 @@
 
 bool StyleFetchedImage::KnownToBeOpaque(
     const LayoutObject& layout_object) const {
-  TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "PaintImage",
-               "data",
-               InspectorPaintImageEvent::Data(&layout_object, *image_.Get()));
   return image_->GetImage()->CurrentFrameKnownToBeOpaque(
       Image::kPreCacheMetadata);
 }
diff --git a/third_party/WebKit/Source/core/style/StyleFetchedImageSet.cpp b/third_party/WebKit/Source/core/style/StyleFetchedImageSet.cpp
index 420aae1..d5866e7 100644
--- a/third_party/WebKit/Source/core/style/StyleFetchedImageSet.cpp
+++ b/third_party/WebKit/Source/core/style/StyleFetchedImageSet.cpp
@@ -128,9 +128,6 @@
 
 bool StyleFetchedImageSet::KnownToBeOpaque(
     const LayoutObject& layout_object) const {
-  TRACE_EVENT1(
-      TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "PaintImage", "data",
-      InspectorPaintImageEvent::Data(&layout_object, *best_fit_image_.Get()));
   return best_fit_image_->GetImage()->CurrentFrameKnownToBeOpaque(
       Image::kPreCacheMetadata);
 }
diff --git a/third_party/WebKit/Source/devtools/front_end/coverage/CoverageDecorationManager.js b/third_party/WebKit/Source/devtools/front_end/coverage/CoverageDecorationManager.js
index 351cfa1..4727ff6 100644
--- a/third_party/WebKit/Source/devtools/front_end/coverage/CoverageDecorationManager.js
+++ b/third_party/WebKit/Source/devtools/front_end/coverage/CoverageDecorationManager.js
@@ -22,6 +22,9 @@
     this._textByProvider = new Map();
     /** @type {!Multimap<!Common.ContentProvider, !Workspace.UISourceCode>} */
     this._uiSourceCodeByContentProvider = new Multimap();
+    // TODO(crbug.com/720162): get rid of this, use bindings.
+    /** @type {!WeakMap<!Workspace.UISourceCode, !Array<!SDK.CSSStyleSheetHeader>>} */
+    this._documentUISouceCodeToStylesheets = new WeakMap();
 
     for (var uiSourceCode of Workspace.workspace.uiSourceCodes())
       uiSourceCode.addLineDecoration(0, Coverage.CoverageDecorationManager._decoratorType, this);
@@ -59,12 +62,12 @@
     for (var line = 0; line < sourceText.lineCount(); ++line) {
       var lineLength = lineEndings[line] - (line ? lineEndings[line - 1] : 0) - 1;
       if (!lineLength) {
-        result.push(false);
+        result.push(undefined);
         continue;
       }
       var startLocations = this._rawLocationsForSourceLocation(uiSourceCode, line, 0);
       var endLocations = this._rawLocationsForSourceLocation(uiSourceCode, line, lineLength);
-      var used = false;
+      var used = undefined;
       for (var startIndex = 0, endIndex = 0; startIndex < startLocations.length; ++startIndex) {
         var start = startLocations[startIndex];
         while (endIndex < endLocations.length &&
@@ -77,14 +80,14 @@
         if (!text)
           continue;
         var textValue = text.value();
-        var startOffset = text.offsetFromPosition(start.line, start.column);
-        var endOffset = text.offsetFromPosition(end.line, end.column);
+        var startOffset = Math.min(text.offsetFromPosition(start.line, start.column), textValue.length - 1);
+        var endOffset = Math.min(text.offsetFromPosition(end.line, end.column), textValue.length - 1);
         while (startOffset <= endOffset && /\s/.test(textValue[startOffset]))
           ++startOffset;
         while (startOffset <= endOffset && /\s/.test(textValue[endOffset]))
           --endOffset;
-        used =
-            startOffset <= endOffset && this._coverageModel.usageForRange(end.contentProvider, startOffset, endOffset);
+        if (startOffset <= endOffset)
+          used = this._coverageModel.usageForRange(end.contentProvider, startOffset, endOffset);
         if (used)
           break;
       }
@@ -133,20 +136,41 @@
     if (contentType.hasScripts()) {
       var location = Bindings.debuggerWorkspaceBinding.uiLocationToRawLocation(uiSourceCode, line, column);
       if (location && location.script()) {
-        result.push({
-          id: `js:${location.scriptId}`,
-          contentProvider: location.script(),
-          line: location.lineNumber,
-          column: location.columnNumber
-        });
+        var script = location.script();
+        if (script.isInlineScript() && contentType.isDocument()) {
+          if (comparePositions(script.lineOffset, script.columnOffset, location.lineNumber, location.columnNumber) >
+                  0 ||
+              comparePositions(script.endLine, script.endColumn, location.lineNumber, location.columnNumber) <= 0) {
+            location = null;
+          } else {
+            location.lineNumber -= script.lineOffset;
+            if (!location.lineNumber)
+              location.columnNumber -= script.columnOffset;
+          }
+        }
+        if (location) {
+          result.push({
+            id: `js:${location.scriptId}`,
+            contentProvider: location.script(),
+            line: location.lineNumber,
+            column: location.columnNumber
+          });
+        }
       }
     }
     if (contentType.isStyleSheet() || contentType.isDocument()) {
-      var rawStyleLocations =
+      var rawStyleLocations = contentType.isDocument() ?
+          this._documentUILocationToCSSRawLocations(uiSourceCode, line, column) :
           Bindings.cssWorkspaceBinding.uiLocationToRawLocations(new Workspace.UILocation(uiSourceCode, line, column));
       for (var location of rawStyleLocations) {
-        if (!location.header())
+        var header = location.header();
+        if (!header)
           continue;
+        if (header.isInline && contentType.isDocument()) {
+          location.lineNumber -= header.startLine;
+          if (!location.lineNumber)
+            location.columnNumber -= header.startColumn;
+        }
         result.push({
           id: `css:${location.styleSheetId}`,
           contentProvider: location.header(),
@@ -156,10 +180,66 @@
       }
     }
     result.sort(Coverage.CoverageDecorationManager._compareLocations);
+
+    /**
+     * @param {number} aLine
+     * @param {number} aColumn
+     * @param {number} bLine
+     * @param {number} bColumn
+     * @return {number}
+     */
+    function comparePositions(aLine, aColumn, bLine, bColumn) {
+      return aLine - bLine || aColumn - bColumn;
+    }
     return result;
   }
 
   /**
+   * TODO(crbug.com/720162): get rid of this, use bindings.
+   *
+   * @param {!Workspace.UISourceCode} uiSourceCode
+   * @param {number} line
+   * @param {number} column
+   * @return {!Array<!SDK.CSSLocation>}
+   */
+  _documentUILocationToCSSRawLocations(uiSourceCode, line, column) {
+    var stylesheets = this._documentUISouceCodeToStylesheets.get(uiSourceCode);
+    if (!stylesheets) {
+      stylesheets = [];
+      var cssModel = this._coverageModel.target().model(SDK.CSSModel);
+      if (!cssModel)
+        return [];
+      for (var headerId of cssModel.styleSheetIdsForURL(uiSourceCode.url())) {
+        var header = cssModel.styleSheetHeaderForId(headerId);
+        if (header)
+          stylesheets.push(header);
+      }
+      stylesheets.sort(stylesheetComparator);
+      this._documentUISouceCodeToStylesheets.set(uiSourceCode, stylesheets);
+    }
+    var endIndex =
+        stylesheets.upperBound(undefined, (unused, header) => line - header.startLine || column - header.startColumn);
+    if (!endIndex)
+      return [];
+    var locations = [];
+    var last = stylesheets[endIndex - 1];
+    for (var index = endIndex - 1; index >= 0 && stylesheets[index].startLine === last.startLine &&
+         stylesheets[index].startColumn === last.startColumn;
+         --index)
+      locations.push(new SDK.CSSLocation(stylesheets[index], line, column));
+
+    return locations;
+    /**
+     * @param {!SDK.CSSStyleSheetHeader} a
+     * @param {!SDK.CSSStyleSheetHeader} b
+     * @return {number}
+     */
+    function stylesheetComparator(a, b) {
+      return a.startLine - b.startLine || a.startColumn - b.startColumn || a.id.localeCompare(b.id);
+    }
+  }
+
+  /**
    * @param {!Coverage.RawLocation} a
    * @param {!Coverage.RawLocation} b
    */
@@ -189,7 +269,7 @@
    */
   decorate(uiSourceCode, textEditor) {
     var decorations = uiSourceCode.decorationsForType(Coverage.CoverageDecorationManager._decoratorType);
-    if (!decorations.size) {
+    if (!decorations || !decorations.size) {
       textEditor.uninstallGutter(Coverage.CoverageView.LineDecorator._gutterType);
       return;
     }
@@ -209,6 +289,9 @@
     textEditor.uninstallGutter(gutterType);
     textEditor.installGutter(gutterType, false);
     for (var line = 0; line < lineUsage.length; ++line) {
+      // Do not decorate the line if we don't have data.
+      if (typeof lineUsage[line] !== 'boolean')
+        continue;
       var className = lineUsage[line] ? 'text-editor-coverage-used-marker' : 'text-editor-coverage-unused-marker';
       textEditor.setGutterDecoration(line, gutterType, createElementWithClass('div', className));
     }
diff --git a/third_party/WebKit/Source/devtools/front_end/coverage/CoverageListView.js b/third_party/WebKit/Source/devtools/front_end/coverage/CoverageListView.js
index 654120e1..48d48725 100644
--- a/third_party/WebKit/Source/devtools/front_end/coverage/CoverageListView.js
+++ b/third_party/WebKit/Source/devtools/front_end/coverage/CoverageListView.js
@@ -243,9 +243,9 @@
       case 'bars':
         var barContainer = cell.createChild('div', 'bar-container');
         var unusedSizeBar = barContainer.createChild('div', 'bar bar-unused-size');
-        unusedSizeBar.style.width = Math.ceil(100 * this._coverageInfo.unusedSize() / this._maxSize) + '%';
+        unusedSizeBar.style.width = (100 * this._coverageInfo.unusedSize() / this._maxSize).toFixed(4) + '%';
         var usedSizeBar = barContainer.createChild('div', 'bar bar-used-size');
-        usedSizeBar.style.width = Math.floor(100 * this._coverageInfo.usedSize() / this._maxSize) + '%';
+        usedSizeBar.style.width = (100 * this._coverageInfo.usedSize() / this._maxSize).toFixed(4) + '%';
     }
     return cell;
   }
diff --git a/third_party/WebKit/Source/devtools/front_end/coverage/CoverageModel.js b/third_party/WebKit/Source/devtools/front_end/coverage/CoverageModel.js
index c322243..29917e34 100644
--- a/third_party/WebKit/Source/devtools/front_end/coverage/CoverageModel.js
+++ b/third_party/WebKit/Source/devtools/front_end/coverage/CoverageModel.js
@@ -365,7 +365,7 @@
       if (this._segments[index].count)
         return true;
     }
-    return index < this._segments.length && this._segments[index].count;
+    return index < this._segments.length && !!this._segments[index].count;
   }
 
   /**
diff --git a/third_party/WebKit/Source/modules/accessibility/AXInlineTextBox.h b/third_party/WebKit/Source/modules/accessibility/AXInlineTextBox.h
index bc2cb00..923cbcf 100644
--- a/third_party/WebKit/Source/modules/accessibility/AXInlineTextBox.h
+++ b/third_party/WebKit/Source/modules/accessibility/AXInlineTextBox.h
@@ -34,6 +34,7 @@
 
 namespace blink {
 
+class Node;
 class AXObjectCacheImpl;
 
 class AXInlineTextBox final : public AXObject {
@@ -46,9 +47,13 @@
   static AXInlineTextBox* Create(PassRefPtr<AbstractInlineTextBox>,
                                  AXObjectCacheImpl&);
 
+ protected:
   void Init() override;
   void Detach() override;
+  bool IsDetached() const override { return !inline_text_box_; }
+  bool IsAXInlineTextBox() const override { return true; }
 
+ public:
   AccessibilityRole RoleValue() const override { return kInlineTextBoxRole; }
   String GetName(AXNameFrom&,
                  AXObject::AXObjectVector* name_objects) const override;
@@ -59,6 +64,7 @@
                          SkMatrix44& out_container_transform) const override;
   AXObject* ComputeParent() const override;
   AccessibilityTextDirection GetTextDirection() const override;
+  Node* GetNode() const override { return inline_text_box_->GetNode(); }
   AXObject* NextOnLine() const override;
   AXObject* PreviousOnLine() const override;
 
diff --git a/third_party/WebKit/Source/modules/accessibility/AXObject.h b/third_party/WebKit/Source/modules/accessibility/AXObject.h
index a7c59cb..aa8754a 100644
--- a/third_party/WebKit/Source/modules/accessibility/AXObject.h
+++ b/third_party/WebKit/Source/modules/accessibility/AXObject.h
@@ -614,6 +614,7 @@
   // Determine subclass type.
   virtual bool IsAXNodeObject() const { return false; }
   virtual bool IsAXLayoutObject() const { return false; }
+  virtual bool IsAXInlineTextBox() const { return false; }
   virtual bool IsAXListBox() const { return false; }
   virtual bool IsAXListBoxOption() const { return false; }
   virtual bool IsAXRadioInput() const { return false; }
diff --git a/third_party/WebKit/Source/modules/imagecapture/README.md b/third_party/WebKit/Source/modules/imagecapture/README.md
new file mode 100644
index 0000000..f07b9f6
--- /dev/null
+++ b/third_party/WebKit/Source/modules/imagecapture/README.md
@@ -0,0 +1,91 @@
+# Image Capture API
+
+This folder contains the implementation of the [W3C Image Capture API](https://w3c.github.io/mediacapture-image/).  Image Capture was shipped in Chrome M59; please consult the [Implementation Status](https://github.com/w3c/mediacapture-image/blob/master/implementation-status.md) if you think a feature should be available and isn't.
+
+This API is structured around the [ImageCapture class](https://w3c.github.io/mediacapture-image/#imagecaptureapi) _and_ a number of [extensions](https://w3c.github.io/mediacapture-image/#extensions) to the `MediaStreamTrack` feeding it (let's call them `theImageCapturer` and `theTrack`, respectively).
+
+## API Mechanics
+
+### `takePhoto()` and `grabFrame()`
+
+- `takePhoto()` returns the result of a single photographic exposure as a `Blob` which can be downloaded, stored by the browser or displayed in an `img` element. This method uses the highest available photographic camera resolution.
+
+- `grabFrame()` returns a snapshot of the live video in `theTrack` as an `ImageBitmap` object  which could (for example) be drawn on a `canvas` and then post-processed to selectively change color values. Note that the `ImageBitmap` will only have the resolution of the video track — which will generally be lower than the camera's still-image resolution.
+
+(_Adapted from the [Origin Trials Web Update post](https://developers.google.com/web/updates/2016/12/imagecapture)_)
+
+### Photo settings and capabilities
+
+The photo-specific options and settings are associated to `theImageCapturer` or `theTrack` depending on whether a given capability/setting has an immediately recognisable effect on `theTrack`, in other words if it's "live" or not. For example, changing the zoom level is instantly reflected on the `theTrack`, while connecting the Red Eye Reduction, if available, is not.
+
+ Object | type | retrieved by... |
+ :--| :-- | --: |
+[`PhotoCapabilities`](https://w3c.github.io/mediacapture-image/##photocapabilities-section) | non-live capabilities | `theImageCapturer.getPhotoCapabilities()` |
+[`MediaTrackCapabilities`](https://w3c.github.io/mediacapture-image/#mediatrackcapabilities-section) | live capabilities | `theTrack.getCapabilities()` |
+|  |  |
+[`PhotoSettings`](https://w3c.github.io/mediacapture-image/##photocapabilities-section) | non-live settings |  |
+[`MediaTrackSettings`](https://w3c.github.io/mediacapture-image/#mediatracksettings-section) | live settings | `theTrack.getSettings()` |
+
+## Other topics
+
+### Are `takePhoto()` and `grabFrame()` the same?
+
+These methods would not produce the same results as explained in [this issue comment](https://bugs.chromium.org/p/chromium/issues/detail?id=655107#c8):
+
+
+>  Let me reconstruct the conversion steps each image goes through in CrOs/Linux;
+>  [...]
+>
+>  a) Live video capture produces frames via `V4L2CaptureDelegate::DoCapture()` [1].
+>  The original data (from the WebCam) comes in either YUY2 (a 4:2:2 format) or
+>  MJPEG, depending if the capture is smaller than 1280x720p or not, respectively.
+
+>  b) This `V4L2CaptureDelegate` sends the capture frame to a conversion stage to
+>  I420 [2].  I420 is a 4:2:0 format, so it has lost some information
+>  irretrievably.  This I420 format is the one used for transporting video frames
+>  to the rendered.
+
+>  c) This I420 is the input to `grabFrame()`, which produces a JS ImageBitmap,
+>  unencoded, after converting the I420 into RGBA [3] of the appropriate endian-ness.
+
+> What happens to `takePhoto()`? It takes the data from the Webcam in a) and
+> either returns a JPEG Blob [4] or converts the YUY2 [5] and encodes it to PNG
+>  using the default compression value (6 in a 0-10 scale IIRC) [6].
+
+>  IOW:
+
+```
+  - for smaller video resolutions:
+
+  OS -> YUY2 ---> I420 --> RGBA --> ImageBitmap     grabFrame()
+             |
+             +--> RGBA --> PNG ---> Blob            takePhoto()
+
+  - and for larger video resolutions:
+
+  OS -> MJPEG ---> I420 --> RGBA --> ImageBitmap    grabFrame()
+              |
+              +--> JPG ------------> Blob           takePhoto()
+```
+
+
+> Where every conversion to-I420 loses information and so does the encoding to
+> PNG.  Even a conversion `RGBA --> I420 --> RGBA` would not produce the original
+> image.  (Plus, when you show `ImageBitmap` and/or Blob on an `<img>` or `<canvas>`
+> there are more stages of decoding and even colour correction involved!)
+
+> With all that, I'm not surprised at all that the images are not pixel
+> accurate!  :-)
+
+
+### Why are `PhotoCapabilities.fillLightMode` and `MediaTrackCapabilities.torch` separated?
+
+Because they are different things: `torch` means flash constantly on/off whereas `fillLightMode` means flash always-on/always-off/auto _when taking a photographic exposure_.
+
+`torch` lives in `theTrack` because the effect can be seen "live" on it, whereas `fillLightMode` lives in `theImageCapture` object because the effect of modifying it can only be seen after taking a picture.
+
+
+
+## Testing
+
+Sensors layout tests are located in [`LayoutTests/imagecapture`](https://chromium.googlesource.com/chromium/src/+/master/third_party/WebKit/LayoutTests/imagecapture/), [`LayoutTests/fast/imagecapture`](https://chromium.googlesource.com/chromium/src/+/master/third_party/WebKit/LayoutTests/fast/imagecapture/) and [`LayoutTests/external/mediacapture-image`](https://chromium.googlesource.com/chromium/src/+/master/third_party/WebKit/LayoutTests/external/wpt/mediacapture-image/).
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBObjectStore.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBObjectStore.cpp
index 1c67e1e5..c248588 100644
--- a/third_party/WebKit/Source/modules/indexeddb/IDBObjectStore.cpp
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBObjectStore.cpp
@@ -383,7 +383,7 @@
   // TODO(crbug.com/719053): This wasm behavior differs from other browsers.
   options.write_wasm_to_stream =
       ExecutionContext::From(script_state)->IsSecureContext();
-  options.for_storage = true;
+  options.for_storage = SerializedScriptValue::kForStorage;
   RefPtr<SerializedScriptValue> serialized_value =
       SerializedScriptValue::Serialize(isolate, value.V8Value(), options,
                                        exception_state);
diff --git a/third_party/WebKit/Source/modules/notifications/NotificationData.cpp b/third_party/WebKit/Source/modules/notifications/NotificationData.cpp
index 6d07382..d1ebe35a 100644
--- a/third_party/WebKit/Source/modules/notifications/NotificationData.cpp
+++ b/third_party/WebKit/Source/modules/notifications/NotificationData.cpp
@@ -87,7 +87,7 @@
     v8::Isolate* isolate = data.GetIsolate();
     DCHECK(isolate->InContext());
     SerializedScriptValue::SerializeOptions options;
-    options.for_storage = true;
+    options.for_storage = SerializedScriptValue::kForStorage;
     RefPtr<SerializedScriptValue> serialized_script_value =
         SerializedScriptValue::Serialize(isolate, data.V8Value(), options,
                                          exception_state);
diff --git a/third_party/WebKit/Source/platform/heap/WrapperVisitor.h b/third_party/WebKit/Source/platform/heap/WrapperVisitor.h
index a554b2b..af2c6c9 100644
--- a/third_party/WebKit/Source/platform/heap/WrapperVisitor.h
+++ b/third_party/WebKit/Source/platform/heap/WrapperVisitor.h
@@ -27,37 +27,33 @@
 template <typename T>
 class TraceWrapperMember;
 
-/**
- * Declares non-virtual traceWrappers method. Should be used on
- * non-ScriptWrappable classes which should participate in wrapper tracing (e.g.
- * StyleEngine):
- *
- *     class StyleEngine: public TraceWrapperBase {
- *      public:
- *       DECLARE_TRACE_WRAPPERS();
- *     };
- */
+// Declares non-virtual TraceWrappers method. Should be used on
+// non-ScriptWrappable classes which should participate in wrapper tracing (e.g.
+// StyleEngine):
+//
+//     class StyleEngine: public TraceWrapperBase {
+//      public:
+//       DECLARE_TRACE_WRAPPERS();
+//     };
+//
 #define DECLARE_TRACE_WRAPPERS() \
   void TraceWrappers(const WrapperVisitor* visitor) const
 
-/**
- * Declares virtual traceWrappers method. It is used in ScriptWrappable, can be
- * used to override the method in the subclasses, and can be used by
- * non-ScriptWrappable classes which expect to be inherited.
- */
+// Declares virtual TraceWrappers method. It is used in ScriptWrappable, can be
+// used to override the method in the subclasses, and can be used by
+// non-ScriptWrappable classes which expect to be inherited.
 #define DECLARE_VIRTUAL_TRACE_WRAPPERS() virtual DECLARE_TRACE_WRAPPERS()
 
-/**
- * Provides definition of traceWrappers method. Custom code will usually call
- * visitor->traceWrappers with all objects which could contribute to the set of
- * reachable wrappers:
- *
- *     DEFINE_TRACE_WRAPPERS(NodeRareData)
- *     {
- *         visitor->traceWrappers(m_nodeLists);
- *         visitor->traceWrappers(m_mutationObserverData);
- *     }
- */
+// Provides definition of TraceWrappers method. Custom code will usually call
+// visitor->TraceWrappers with all objects which could contribute to the set of
+// reachable wrappers:
+//
+//     DEFINE_TRACE_WRAPPERS(NodeRareData)
+//     {
+//         visitor->TraceWrappers(node_lists_);
+//         visitor->TraceWrappers(mutation_observer_data_);
+//     }
+//
 #define DEFINE_TRACE_WRAPPERS(T) \
   void T::TraceWrappers(const WrapperVisitor* visitor) const
 
@@ -106,25 +102,21 @@
     MarkAndPushToMarkingDeque(traceable);
   }
 
-  /**
-   * Trace all wrappers of |t|.
-   *
-   * If you cannot use TraceWrapperMember & the corresponding traceWrappers()
-   * for some reason (e.g., due to sizeof(TraceWrapperMember)), you can use
-   * Member and |traceWrappersWithManualWriteBarrier()|. See below.
-   */
+  // Trace all wrappers of |t|.
+  //
+  // If you cannot use TraceWrapperMember & the corresponding TraceWrappers()
+  // for some reason (e.g., due to sizeof(TraceWrapperMember)), you can use
+  // Member and |TraceWrappersWithManualWriteBarrier()|. See below.
   template <typename T>
   void TraceWrappers(const TraceWrapperMember<T>& t) const {
     TraceWrappers(t.Get());
   }
 
-  /**
-   * Require all users of manual write barriers to make this explicit in their
-   * |traceWrappers| definition. Be sure to add
-   * |ScriptWrappableVisitor::writeBarrier(this, new_value)| after all
-   * assignments to the field. Otherwise, the objects may be collected
-   * prematurely.
-   */
+  // Require all users of manual write barriers to make this explicit in their
+  // |TraceWrappers| definition. Be sure to add
+  // |ScriptWrappableVisitor::writeBarrier(this, new_value)| after all
+  // assignments to the field. Otherwise, the objects may be collected
+  // prematurely.
   template <typename T>
   void TraceWrappersWithManualWriteBarrier(const Member<T>& t) const {
     TraceWrappers(t.Get());
diff --git a/third_party/WebKit/Source/platform/testing/PaintPrinters.cpp b/third_party/WebKit/Source/platform/testing/PaintPrinters.cpp
index 4b1d740..047f2db4 100644
--- a/third_party/WebKit/Source/platform/testing/PaintPrinters.cpp
+++ b/third_party/WebKit/Source/platform/testing/PaintPrinters.cpp
@@ -9,21 +9,6 @@
 #include <iomanip>  // NOLINT
 #include <ostream>  // NOLINT
 
-namespace {
-class StreamStateSaver : private std::ios {
-  WTF_MAKE_NONCOPYABLE(StreamStateSaver);
-
- public:
-  StreamStateSaver(std::ios& other) : std::ios(nullptr), m_other(other) {
-    copyfmt(other);
-  }
-  ~StreamStateSaver() { m_other.copyfmt(*this); }
-
- private:
-  std::ios& m_other;
-};
-}  // unnamed namespace
-
 namespace blink {
 
 void PrintTo(const PaintChunk& chunk, std::ostream* os) {
diff --git a/third_party/WebKit/Source/platform/text/LineEnding.cpp b/third_party/WebKit/Source/platform/text/LineEnding.cpp
index b59713fa..766b2f2 100644
--- a/third_party/WebKit/Source/platform/text/LineEnding.cpp
+++ b/third_party/WebKit/Source/platform/text/LineEnding.cpp
@@ -36,6 +36,7 @@
 #include "platform/wtf/text/CString.h"
 #include "platform/wtf/text/WTFString.h"
 
+namespace blink {
 namespace {
 
 class OutputBuffer {
@@ -44,53 +45,53 @@
 
  public:
   OutputBuffer() {}
-  virtual char* allocate(size_t) = 0;
-  virtual void copy(const CString&) = 0;
+  virtual char* Allocate(size_t) = 0;
+  virtual void Copy(const CString&) = 0;
   virtual ~OutputBuffer() {}
 };
 
 class CStringBuffer final : public OutputBuffer {
  public:
-  CStringBuffer(CString& buffer) : m_buffer(buffer) {}
+  CStringBuffer(CString& buffer) : buffer_(buffer) {}
   ~CStringBuffer() override {}
 
-  char* allocate(size_t size) override {
+  char* Allocate(size_t size) override {
     char* ptr;
-    m_buffer = CString::CreateUninitialized(size, ptr);
+    buffer_ = CString::CreateUninitialized(size, ptr);
     return ptr;
   }
 
-  void copy(const CString& source) override { m_buffer = source; }
+  void Copy(const CString& source) override { buffer_ = source; }
 
-  const CString& buffer() const { return m_buffer; }
+  const CString& Buffer() const { return buffer_; }
 
  private:
-  CString m_buffer;
+  CString buffer_;
 };
 
 class VectorCharAppendBuffer final : public OutputBuffer {
  public:
-  VectorCharAppendBuffer(Vector<char>& buffer) : m_buffer(buffer) {}
+  VectorCharAppendBuffer(Vector<char>& buffer) : buffer_(buffer) {}
   ~VectorCharAppendBuffer() override {}
 
-  char* allocate(size_t size) override {
-    size_t oldSize = m_buffer.size();
-    m_buffer.Grow(oldSize + size);
-    return m_buffer.data() + oldSize;
+  char* Allocate(size_t size) override {
+    size_t old_size = buffer_.size();
+    buffer_.Grow(old_size + size);
+    return buffer_.data() + old_size;
   }
 
-  void copy(const CString& source) override {
-    m_buffer.Append(source.data(), source.length());
+  void Copy(const CString& source) override {
+    buffer_.Append(source.data(), source.length());
   }
 
  private:
-  Vector<char>& m_buffer;
+  Vector<char>& buffer_;
 };
 
-void internalNormalizeLineEndingsToCRLF(const CString& from,
+void InternalNormalizeLineEndingsToCRLF(const CString& from,
                                         OutputBuffer& buffer) {
   // Compute the new length.
-  size_t newLen = 0;
+  size_t new_len = 0;
   const char* p = from.data();
   while (p < from.data() + from.length()) {
     char c = *p++;
@@ -98,26 +99,26 @@
       // Safe to look ahead because of trailing '\0'.
       if (*p != '\n') {
         // Turn CR into CRLF.
-        newLen += 2;
+        new_len += 2;
       }
     } else if (c == '\n') {
       // Turn LF into CRLF.
-      newLen += 2;
+      new_len += 2;
     } else {
       // Leave other characters alone.
-      newLen += 1;
+      new_len += 1;
     }
   }
-  if (newLen < from.length())
+  if (new_len < from.length())
     return;
 
-  if (newLen == from.length()) {
-    buffer.copy(from);
+  if (new_len == from.length()) {
+    buffer.Copy(from);
     return;
   }
 
   p = from.data();
-  char* q = buffer.allocate(newLen);
+  char* q = buffer.Allocate(new_len);
 
   // Make a copy of the string.
   while (p < from.data() + from.length()) {
@@ -140,9 +141,7 @@
   }
 }
 
-}  // namespace;
-
-namespace blink {
+}  // namespace
 
 void NormalizeLineEndingsToLF(const CString& from, Vector<char>& result) {
   // Compute the new length.
@@ -198,14 +197,14 @@
     return from;
   CString result;
   CStringBuffer buffer(result);
-  internalNormalizeLineEndingsToCRLF(from, buffer);
-  return buffer.buffer();
+  InternalNormalizeLineEndingsToCRLF(from, buffer);
+  return buffer.Buffer();
 }
 
 void NormalizeLineEndingsToNative(const CString& from, Vector<char>& result) {
 #if OS(WIN)
   VectorCharAppendBuffer buffer(result);
-  internalNormalizeLineEndingsToCRLF(from, buffer);
+  InternalNormalizeLineEndingsToCRLF(from, buffer);
 #else
   NormalizeLineEndingsToLF(from, result);
 #endif
diff --git a/third_party/WebKit/Source/platform/wtf/PrintStream.h b/third_party/WebKit/Source/platform/wtf/PrintStream.h
index 2c459b9..2e782eb 100644
--- a/third_party/WebKit/Source/platform/wtf/PrintStream.h
+++ b/third_party/WebKit/Source/platform/wtf/PrintStream.h
@@ -92,43 +92,8 @@
   value.Dump(out);
 }
 
-#define MAKE_PRINT_ADAPTOR(Name, Type, function)                 \
-  class Name final {                                             \
-    STACK_ALLOCATED();                                           \
-                                                                 \
-   public:                                                       \
-    Name(const Type& value) : value_(value) {}                   \
-    void Dump(PrintStream& out) const { function(out, value_); } \
-                                                                 \
-   private:                                                      \
-    Type value_;                                                 \
-  }
-
-#define MAKE_PRINT_METHOD_ADAPTOR(Name, Type, method)          \
-  class Name final {                                           \
-    STACK_ALLOCATED();                                         \
-                                                               \
-   public:                                                     \
-    Name(const Type& value) : m_value(value) {}                \
-    void dump(PrintStream& out) const { m_value.method(out); } \
-                                                               \
-   private:                                                    \
-    const Type& m_value;                                       \
-  }
-
-#define MAKE_PRINT_METHOD(Type, dumpMethod, method)                \
-  MAKE_PRINT_METHOD_ADAPTOR(DumperFor_##method, Type, dumpMethod); \
-  DumperFor_##method method() const { return DumperFor_##method(*this); }
-
-// Use an adaptor-based dumper for characters to avoid situations where
-// you've "compressed" an integer to a character and it ends up printing
-// as ASCII when you wanted it to print as a number.
-void DumpCharacter(PrintStream&, char);
-MAKE_PRINT_ADAPTOR(CharacterDump, char, DumpCharacter);
-
 }  // namespace WTF
 
-using WTF::CharacterDump;
 using WTF::PrintStream;
 
 #endif  // PrintStream_h
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/common/webkit_finder.py b/third_party/WebKit/Tools/Scripts/webkitpy/common/webkit_finder.py
index d0b2242..aedec30 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/common/webkit_finder.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/common/webkit_finder.py
@@ -80,8 +80,6 @@
         self._dirsep = filesystem.sep
         self._sys_path = sys.path
         self._env_path = os.environ['PATH'].split(os.pathsep)
-        self._chromium_base = None
-        self._depot_tools = None
 
     @memoized
     def _webkit_base(self):
@@ -96,10 +94,9 @@
         assert tools_index != -1, 'could not find location of this checkout from %s' % module_path
         return self._filesystem.normpath(module_path[0:tools_index - 1])
 
+    @memoized
     def chromium_base(self):
-        if not self._chromium_base:
-            self._chromium_base = self._filesystem.dirname(self._filesystem.dirname(self._webkit_base()))
-        return self._chromium_base
+        return self._filesystem.dirname(self._filesystem.dirname(self._webkit_base()))
 
     # Do not expose this function in order to make the code robust against
     # directory structure changes.
@@ -146,14 +143,13 @@
             return None
         return file_path[len(layout_tests_rel_path) + 1:]
 
+    @memoized
     def depot_tools_base(self):
-        if not self._depot_tools:
-            # This basically duplicates src/build/find_depot_tools.py without the side effects
-            # (adding the directory to sys.path and importing breakpad).
-            self._depot_tools = (self._check_paths_for_depot_tools(self._sys_path) or
-                                 self._check_paths_for_depot_tools(self._env_path) or
-                                 self._check_upward_for_depot_tools())
-        return self._depot_tools
+        # This basically duplicates src/build/find_depot_tools.py without the side effects
+        # (adding the directory to sys.path and importing breakpad).
+        return (self._check_paths_for_depot_tools(self._sys_path) or
+                self._check_paths_for_depot_tools(self._env_path) or
+                self._check_upward_for_depot_tools())
 
     def _check_paths_for_depot_tools(self, paths):
         for path in paths:
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/common.py b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/common.py
index 17751ff..d9a641d 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/common.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/common.py
@@ -11,11 +11,7 @@
 
 
 WPT_DEST_NAME = 'wpt'
-WPT_GH_ORG = 'w3c'
-WPT_GH_REPO_NAME = 'web-platform-tests'
-WPT_GH_URL = 'https://github.com/%s/%s/' % (WPT_GH_ORG, WPT_GH_REPO_NAME)
-WPT_GH_SSH_URL_TEMPLATE = 'https://{}@github.com/%s/%s.git' % (WPT_GH_ORG, WPT_GH_REPO_NAME)
-WPT_REVISION_FOOTER = 'WPT-Export-Revision:'
+WPT_GH_REPO_URL_TEMPLATE = 'https://{}@github.com/w3c/web-platform-tests.git'
 
 # TODO(qyearsley): This directory should be able to be constructed with
 # WebKitFinder and WPT_DEST_NAME, plus the string "external".
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/gerrit.py b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/gerrit.py
index 037b9e63..a9007997a 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/gerrit.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/gerrit.py
@@ -12,7 +12,7 @@
 URL_BASE = 'https://chromium-review.googlesource.com'
 
 
-class GerritAPI(object):
+class Gerrit(object):
     """A utility class for the Chromium code review API.
 
     Wraps the API for Chromium's Gerrit instance at chromium-review.googlesource.com.
@@ -23,18 +23,13 @@
         self.user = user
         self.token = token
 
-    def get(self, path, raw=False):
-        url = URL_BASE + path
+    def api_get(self, url):
         raw_data = self.host.web.get_binary(url)
-        if raw:
-            return raw_data
+        return json.loads(raw_data[5:])  # strip JSONP preamble
 
-        # Gerrit API responses are prefixed by a 5-character JSONP preamble
-        return json.loads(raw_data[5:])
-
-    def post(self, path, data):
-        url = URL_BASE + path
-        assert self.user and self.token, 'Gerrit user and token required for authenticated routes.'
+    def api_post(self, url, data):
+        if not (self.user and self.token):
+            raise 'Gerrit user and token requried for authenticated routes.'
 
         b64auth = base64.b64encode('{}:{}'.format(self.user, self.token))
         headers = {
@@ -43,72 +38,54 @@
         }
         return self.host.web.request('POST', url, data=json.dumps(data), headers=headers)
 
-    def query_exportable_open_cls(self, limit=200):
-        path = ('/changes/?q=project:\"chromium/src\"+status:open'
-                '&o=CURRENT_FILES&o=CURRENT_REVISION&o=COMMIT_FOOTERS'
-                '&o=DETAILED_ACCOUNTS&n={}').format(limit)
-        open_cls_data = self.get(path)
-        open_cls = [GerritCL(data, self) for data in open_cls_data]
+    def cl_url(self, number):
+        return 'https://chromium-review.googlesource.com/c/{}/'.format(number)
 
-        return [cl for cl in open_cls if cl.is_exportable()]
+    def get_diff(self, cl):
+        """Get full diff for latest revision of CL."""
+        revision = cl['revisions'].items()[0][1]
+        revision_id = cl['revisions'].items()[0][0]
+        files = revision['files'].keys()
+        diff = ''
 
+        for filename in files:
+            url = '{url_base}/changes/{change_id}/revisions/{revision_id}/files/{file_id}/diff'.format(
+                url_base=URL_BASE,
+                change_id=cl['id'],
+                revision_id=revision_id,
+                file_id=urllib.quote_plus(filename),
+            )
+            data = self.api_get(url)
+            diff += data
 
-class GerritCL(object):
-    """A data wrapper for a Chromium Gerrit CL."""
+        return diff
 
-    def __init__(self, data, api):
-        assert data['change_id']
-        self._data = data
-        self.api = api
-
-    @property
-    def url(self):
-        return 'https://chromium-review.googlesource.com/c/%s' % self._data['_number']
-
-    @property
-    def subject(self):
-        return self._data['subject']
-
-    @property
-    def change_id(self):
-        return self._data['change_id']
-
-    @property
-    def owner_email(self):
-        return self._data['owner']['email']
-
-    @property
-    def current_revision(self):
-        return self._data['current_revision']
-
-    def latest_commit_message_with_footers(self):
-        return self._data['revisions'][self.current_revision]['commit_with_footers']
-
-    @property
-    def current_revision_description(self):
-        return self._data['revisions'][self.current_revision]['description']
-
-    def post_comment(self, message):
-        path = '/a/changes/{change_id}/revisions/current/review'.format(
-            change_id=self.change_id,
+    def post_comment(self, cl_id, revision_id, message):
+        url = '{url_base}/a/changes/{change_id}/revisions/{revision_id}/review'.format(
+            url_base=URL_BASE,
+            change_id=cl_id,
+            revision_id=revision_id,
         )
-        return self.api.post(path, {'message': message})
+        return self.api_post(url, {'message': message})
 
-    def is_exportable(self):
-        files = self.current_revision['files'].keys()
+    def query_open_cls(self, limit=200):
+        url = ('{}/changes/?q=project:\"chromium/src\"+status:open'
+               '&o=CURRENT_FILES&o=CURRENT_REVISION&o=COMMIT_FOOTERS&n={}').format(URL_BASE, limit)
+        open_cls = self.api_get(url)
 
-        # Guard against accidental CLs that touch thousands of files.
-        if len(files) > 1000:
-            _log.info('Rejecting CL with over 1000 files: %s (ID: %s) ', self.subject, self.change_id)
+        return [cl for cl in open_cls if self.is_exportable(cl)]
+
+    def is_exportable(self, cl):
+        revision = cl['revisions'].items()[0][1]
+        files = revision['files'].keys()
+
+        if cl['subject'].startswith('Import wpt@'):
             return False
 
-        if self.subject.startswith('Import wpt@'):
+        if 'Import' in cl['subject']:
             return False
 
-        if 'Import' in self.subject:
-            return False
-
-        if 'NOEXPORT=true' in self.current_revision['commit_with_footers']:
+        if 'NOEXPORT=true' in revision['commit_with_footers']:
             return False
 
         files_in_wpt = [f for f in files if f.startswith('third_party/WebKit/LayoutTests/external/wpt')]
@@ -129,8 +106,3 @@
             and not filename.startswith('.')
             and not filename.endswith('.json')
         )
-
-    def get_patch(self):
-        """Gets patch for latest revision of CL."""
-        path = '/changes/{change_id}/revisions/current/patch'.format(change_id=self.change_id)
-        return base64.b64decode(self.api.get(path, raw=True))
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/gerrit_mock.py b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/gerrit_mock.py
index 65978b7..72e523b 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/gerrit_mock.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/gerrit_mock.py
@@ -3,18 +3,12 @@
 # found in the LICENSE file.
 
 
-class MockGerritAPI(object):
+class MockGerrit(object):
 
     def __init__(self, host, user, token):
         self.host = host
         self.user = user
         self.token = token
 
-    def query_exportable_open_cls(self):
+    def query_open_cls(self):
         return []
-
-    def get(self, path, raw=False):  # pylint: disable=unused-argument
-        return '' if raw else {}
-
-    def post(self, path, data):  # pylint: disable=unused-argument
-        return {}
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/local_wpt.py b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/local_wpt.py
index 20e4844..cfdc3e42 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/local_wpt.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/local_wpt.py
@@ -8,7 +8,7 @@
 
 from webkitpy.common.system.executive import ScriptError
 from webkitpy.w3c.chromium_commit import ChromiumCommit
-from webkitpy.w3c.common import WPT_GH_SSH_URL_TEMPLATE, CHROMIUM_WPT_DIR
+from webkitpy.w3c.common import WPT_GH_REPO_URL_TEMPLATE, CHROMIUM_WPT_DIR
 
 
 _log = logging.getLogger(__name__)
@@ -36,7 +36,7 @@
             self.run(['git', 'checkout', 'origin/master'])
         else:
             _log.info('Cloning GitHub w3c/web-platform-tests into %s', self.path)
-            remote_url = WPT_GH_SSH_URL_TEMPLATE.format(self.gh_token)
+            remote_url = WPT_GH_REPO_URL_TEMPLATE.format(self.gh_token)
             self.host.executive.run_command(['git', 'clone', remote_url, self.path])
 
     def run(self, command, **kwargs):
@@ -62,7 +62,7 @@
         self.run(['git', 'clean', '-fdx'])
         self.run(['git', 'checkout', 'origin/master'])
 
-    def create_branch_with_patch(self, branch_name, message, patch, author, force_push=False):
+    def create_branch_with_patch(self, branch_name, message, patch, author):
         """Commits the given patch and pushes to the upstream repo.
 
         Args:
@@ -70,20 +70,9 @@
             message: Commit message string.
             patch: A patch that can be applied by git apply.
             author: The git commit author.
-            force_push: Applies the -f flag in `git push`.
         """
         self.clean()
 
-        try:
-            # This won't be exercised in production because wpt-exporter
-            # always runs on a clean machine. But it's useful when running
-            # locally since branches stick around.
-            _log.info('Deleting old branch %s', branch_name)
-            self.run(['git', 'branch', '-D', branch_name])
-        except ScriptError:
-            # Ignore errors if branch not found.
-            pass
-
         _log.info('Creating local branch %s', branch_name)
         self.run(['git', 'checkout', '-b', branch_name])
 
@@ -95,13 +84,7 @@
         self.run(['git', 'apply', '-'], input=patch)
         self.run(['git', 'add', '.'])
         self.run(['git', 'commit', '--author', author, '-am', message])
-
-        # Force push is necessary when updating a PR with a new patch
-        # from Gerrit.
-        if force_push:
-            self.run(['git', 'push', '-f', 'origin', branch_name])
-        else:
-            self.run(['git', 'push', 'origin', branch_name])
+        self.run(['git', 'push', 'origin', branch_name])
 
     def test_patch(self, patch, chromium_commit=None):
         """Returns the expected output of a patch against origin/master.
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/local_wpt_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/local_wpt_unittest.py
index cf623b9..c5ebd58 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/local_wpt_unittest.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/local_wpt_unittest.py
@@ -93,7 +93,6 @@
             ['git', 'reset', '--hard', 'HEAD'],
             ['git', 'clean', '-fdx'],
             ['git', 'checkout', 'origin/master'],
-            ['git', 'branch', '-D', 'chromium-export-decafbad'],
             ['git', 'checkout', '-b', 'chromium-export-decafbad'],
             ['git', 'apply', '-'],
             ['git', 'add', '.'],
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter.py b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter.py
index 9b384df..4760610 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter.py
@@ -5,18 +5,15 @@
 import logging
 
 from webkitpy.w3c.local_wpt import LocalWPT
-from webkitpy.w3c.common import (
-    exportable_commits_over_last_n_commits,
-    WPT_GH_URL,
-    WPT_REVISION_FOOTER
-)
-from webkitpy.w3c.gerrit import GerritAPI, GerritCL
+from webkitpy.w3c.common import exportable_commits_over_last_n_commits
+from webkitpy.w3c.gerrit import Gerrit
 from webkitpy.w3c.wpt_github import WPTGitHub, MergeError
 
 _log = logging.getLogger(__name__)
 
 PR_HISTORY_WINDOW = 100
 COMMIT_HISTORY_WINDOW = 5000
+WPT_URL = 'https://github.com/w3c/web-platform-tests/'
 
 
 class TestExporter(object):
@@ -25,7 +22,7 @@
         self.host = host
         self.wpt_github = WPTGitHub(host, gh_user, gh_token, pr_history_window=PR_HISTORY_WINDOW)
 
-        self.gerrit = GerritAPI(self.host, gerrit_user, gerrit_token)
+        self.gerrit = Gerrit(self.host, gerrit_user, gerrit_token)
 
         self.dry_run = dry_run
         self.local_wpt = LocalWPT(self.host, gh_token)
@@ -36,43 +33,39 @@
 
         The exporter will look in chronological order at every commit in Chromium.
         """
-        open_gerrit_cls = self.gerrit.query_exportable_open_cls()
+        open_gerrit_cls = self.gerrit.query_open_cls()
         self.process_gerrit_cls(open_gerrit_cls)
 
         exportable_commits = self.get_exportable_commits(limit=COMMIT_HISTORY_WINDOW)
         for exportable_commit in exportable_commits:
             pull_request = self.wpt_github.pr_with_position(exportable_commit.position)
-
             if pull_request:
                 if pull_request.state == 'open':
                     self.merge_pull_request(pull_request)
+                    # TODO(jeffcarp): if this was from Gerrit, comment back on the Gerrit CL that the PR was merged
                 else:
                     _log.info('Pull request is not open: #%d %s', pull_request.number, pull_request.title)
             else:
                 self.create_pull_request(exportable_commit)
 
     def process_gerrit_cls(self, gerrit_cls):
-        """Creates or updates PRs for Gerrit CLs."""
+        """Iterates through Gerrit CLs and prints their statuses.
+
+        Right now this method does nothing. In the future it will create PRs for CLs and help
+        transition them when they're landed.
+        """
         for cl in gerrit_cls:
-            _log.info('Found Gerrit in-flight CL: "%s" %s', cl.subject, cl.url)
+            cl_url = 'https://chromium-review.googlesource.com/c/%s' % cl['_number']
+            _log.info('Found Gerrit in-flight CL: "%s" %s', cl['subject'], cl_url)
 
             # Check if CL already has a corresponding PR
-            pull_request = self.wpt_github.pr_with_change_id(cl.change_id)
+            pull_request = self.wpt_github.pr_with_change_id(cl['change_id'])
 
             if pull_request:
-                pr_url = '{}pull/{}'.format(WPT_GH_URL, pull_request.number)
+                pr_url = '{}pull/{}'.format(WPT_URL, pull_request.number)
                 _log.info('In-flight PR found: %s', pr_url)
-
-                pr_cl_revision = self.wpt_github.extract_metadata(WPT_REVISION_FOOTER + ' ', pull_request.body)
-                if cl.current_revision == pr_cl_revision:
-                    _log.info('PR revision matches CL revision. Nothing to do here.')
-                    continue
-
-                _log.info('New revision found, updating PR...')
-                self.create_or_update_pull_request_from_cl(cl, pull_request)
             else:
-                _log.info('No in-flight PR found for CL. Creating...')
-                self.create_or_update_pull_request_from_cl(cl)
+                _log.info('No in-flight PR found for CL.')
 
 
     def get_exportable_commits(self, limit):
@@ -80,7 +73,7 @@
 
     def merge_pull_request(self, pull_request):
         _log.info('In-flight PR found: %s', pull_request.title)
-        _log.info('%spull/%d', WPT_GH_URL, pull_request.number)
+        _log.info('https://github.com/w3c/web-platform-tests/pull/%d', pull_request.number)
 
         if self.dry_run:
             _log.info('[dry_run] Would have attempted to merge PR')
@@ -98,17 +91,6 @@
             # This is in the try block because if a PR can't be merged, we shouldn't
             # delete its branch.
             self.wpt_github.delete_remote_branch(branch)
-
-            change_id = self.wpt_github.extract_metadata('Change-Id: ', pull_request.body)
-            if change_id:
-                cl = GerritCL(data={'change_id': change_id}, api=self.gerrit)
-                pr_url = '{}pull/{}'.format(WPT_GH_URL, pull_request.number)
-                cl.post_comment((
-                    'The WPT PR for this CL has been merged upstream! {pr_url}'
-                ).format(
-                    pr_url=pr_url
-                ))
-
         except MergeError:
             _log.info('Could not merge PR.')
 
@@ -172,57 +154,3 @@
             _log.info('Add label response (status %s): %s', status_code, data)
 
         return response_data
-
-    def create_or_update_pull_request_from_cl(self, cl, pull_request=None):
-        patch = cl.get_patch()
-        updating = bool(pull_request)
-
-        if self.dry_run:
-            if updating:
-                _log.info('[dry_run] Stopping before updating PR from CL')
-            else:
-                _log.info('[dry_run] Stopping before creating PR from CL')
-            _log.info('\n\n[dry_run] subject:')
-            _log.info(cl.subject)
-            _log.debug('\n\n[dry_run] patch:')
-            _log.debug(patch)
-            return
-
-        message = cl.latest_commit_message_with_footers()
-        if not updating:
-            # Annotate revision footer for Exporter's later use.
-            message += '\n{} {}'.format(WPT_REVISION_FOOTER, cl.current_revision)
-
-        branch_name = 'chromium-export-cl-{id}'.format(id=cl.change_id)
-        self.local_wpt.create_branch_with_patch(branch_name, message, patch, cl.owner_email, force_push=True)
-
-        if updating:
-            response_data = self.wpt_github.update_pr(pull_request.number, cl.subject, message)
-            _log.debug('Update PR response: %s', response_data)
-
-            # TODO(jeffcarp): Turn PullRequest into a class with a .url method
-
-            cl.post_comment((
-                'Successfully updated WPT GitHub pull request with '
-                'new revision "{subject}": {pr_url}'
-            ).format(
-                subject=cl.current_revision_description,
-                pr_url='%spull/%d' % (WPT_GH_URL, pull_request.number),
-            ))
-        else:
-            response_data = self.wpt_github.create_pr(branch_name, cl.subject, message)
-            _log.debug('Create PR response: %s', response_data)
-
-            data, status_code = self.wpt_github.add_label(response_data['number'])
-            _log.info('Add label response (status %s): %s', status_code, data)
-
-            cl.post_comment((
-                'Exportable changes to web-platform-tests were detected in this CL '
-                'and a pull request in the upstream repo has been made: {pr_url}.\n\n'
-                'Travis CI has been kicked off and if it fails, we will let you know here. '
-                'If this CL lands and Travis CI is green, we will auto-merge the PR.'
-            ).format(
-                pr_url='%spull/%d' % (WPT_GH_URL, response_data['number'])
-            ))
-
-        return response_data
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter_unittest.py
index b4e07fdb..73b01179 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter_unittest.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter_unittest.py
@@ -10,8 +10,7 @@
 from webkitpy.w3c.test_exporter import TestExporter
 from webkitpy.w3c.wpt_github import PullRequest
 from webkitpy.w3c.wpt_github_mock import MockWPTGitHub
-from webkitpy.w3c.gerrit import GerritCL
-from webkitpy.w3c.gerrit_mock import MockGerritAPI
+from webkitpy.w3c.gerrit_mock import MockGerrit
 
 
 class TestExporterTest(unittest.TestCase):
@@ -29,7 +28,7 @@
         test_exporter.wpt_github = MockWPTGitHub(pull_requests=[
             PullRequest(title='title1', number=1234, body='', state='open'),
         ])
-        test_exporter.gerrit = MockGerritAPI(host, 'gerrit-username', 'gerrit-token')
+        test_exporter.gerrit = MockGerrit(host, 'gerrit-username', 'gerrit-token')
         test_exporter.get_exportable_commits = lambda limit: [
             ChromiumCommit(host, position='refs/heads/master@{#458475}'),
             ChromiumCommit(host, position='refs/heads/master@{#458476}'),
@@ -72,19 +71,16 @@
         host.executive = MockExecutive(run_command_fn=mock_command)
         test_exporter = TestExporter(host, 'gh-username', 'gh-token', gerrit_user=None, gerrit_token=None)
         test_exporter.wpt_github = MockWPTGitHub(pull_requests=[], create_pr_fail_index=1)
-        test_exporter.gerrit = MockGerritAPI(host, 'gerrit-username', 'gerrit-token')
+        test_exporter.gerrit = MockGerrit(host, 'gerrit-username', 'gerrit-token')
         test_exporter.run()
 
         self.assertEqual(test_exporter.wpt_github.calls, [
             'pr_with_position',
             'create_pr',
-            'add_label',
             'pr_with_position',
             'create_pr',
-            'add_label',
             'pr_with_position',
             'create_pr',
-            'add_label',
         ])
         self.assertEqual(test_exporter.wpt_github.pull_requests_created, [
             ('chromium-export-c881563d73', 'older fake text', 'older fake text'),
@@ -123,7 +119,7 @@
                 state='open'
             ),
         ], unsuccessful_merge_index=0)
-        test_exporter.gerrit = MockGerritAPI(host, 'gerrit-username', 'gerrit-token')
+        test_exporter.gerrit = MockGerrit(host, 'gerrit-username', 'gerrit-token')
         test_exporter.get_exportable_commits = lambda limit: [
             ChromiumCommit(host, position='refs/heads/master@{#458475}'),
             ChromiumCommit(host, position='refs/heads/master@{#458476}'),
@@ -137,7 +133,6 @@
             'merge_pull_request',
             'pr_with_position',
             'create_pr',
-            'add_label',
             'pr_with_position',
             'pr_with_position',
             'get_pr_branch',
@@ -149,98 +144,3 @@
              'git show text\nCr-Commit-Position: refs/heads/master@{#458476}',
              'git show text\nCr-Commit-Position: refs/heads/master@{#458476}'),
         ])
-
-    def test_new_gerrit_cl(self):
-        host = MockHost()
-        test_exporter = TestExporter(host, 'gh-username', 'gh-token', gerrit_user=None,
-                                     gerrit_token=None, dry_run=False)
-        test_exporter.wpt_github = MockWPTGitHub(pull_requests=[])
-        test_exporter.get_exportable_commits = lambda limit: []
-        test_exporter.gerrit = MockGerritAPI(host, 'gerrit-username', 'gerrit-token')
-        test_exporter.gerrit.query_exportable_open_cls = lambda: [
-            GerritCL(data={
-                'change_id': '1',
-                'subject': 'subject',
-                '_number': '1',
-                'current_revision': '1',
-                'revisions': {
-                    '1': {'commit_with_footers': 'a commit with footers'}
-                },
-                'owner': {'email': 'test@chromium.org'},
-            }, api=test_exporter.gerrit),
-        ]
-        test_exporter.run()
-        self.assertEqual(test_exporter.wpt_github.calls, [
-            'pr_with_change_id',
-            'create_pr',
-            'add_label',
-        ])
-        self.assertEqual(test_exporter.wpt_github.pull_requests_created, [
-            ('chromium-export-cl-1',
-             'subject',
-             'a commit with footers\nWPT-Export-Revision: 1'),
-        ])
-
-    def test_gerrit_cl_no_update_if_pr_with_same_revision(self):
-        host = MockHost()
-        test_exporter = TestExporter(host, 'gh-username', 'gh-token', gerrit_user=None,
-                                     gerrit_token=None, dry_run=False)
-        test_exporter.wpt_github = MockWPTGitHub(pull_requests=[
-            PullRequest(title='title1', number=1234,
-                        body='description\nWPT-Export-Revision: 1', state='open'),
-        ])
-        test_exporter.get_exportable_commits = lambda limit: []
-        test_exporter.gerrit = MockGerritAPI(host, 'gerrit-username', 'gerrit-token')
-        test_exporter.gerrit.query_exportable_open_cls = lambda: [
-            GerritCL(data={
-                'change_id': '1',
-                'subject': 'subject',
-                '_number': '1',
-                'current_revision': '1',
-                'revisions': {
-                    '1': {'commit_with_footers': 'a commit with footers'}
-                },
-                'owner': {'email': 'test@chromium.org'},
-            }, api=test_exporter.gerrit),
-        ]
-        test_exporter.run()
-        self.assertEqual(test_exporter.wpt_github.calls, [
-            'pr_with_change_id',
-        ])
-        self.assertEqual(test_exporter.wpt_github.pull_requests_created, [])
-
-    def test_gerrit_cl_updates_if_cl_has_new_revision(self):
-        host = MockHost()
-        test_exporter = TestExporter(host, 'gh-username', 'gh-token', gerrit_user=None,
-                                     gerrit_token=None, dry_run=False)
-        test_exporter.wpt_github = MockWPTGitHub(pull_requests=[
-            PullRequest(title='title1', number=1234,
-                        body='description\nWPT-Export-Revision: 1', state='open'),
-        ])
-        test_exporter.get_exportable_commits = lambda limit: []
-        test_exporter.gerrit = MockGerritAPI(host, 'gerrit-username', 'gerrit-token')
-        test_exporter.gerrit.query_exportable_open_cls = lambda: [
-            GerritCL(data={
-                'change_id': '1',
-                'subject': 'subject',
-                '_number': '1',
-                'current_revision': '2',
-                'revisions': {
-                    '1': {
-                        'commit_with_footers': 'a commit with footers 1',
-                        'description': 'subject 1',
-                    },
-                    '2': {
-                        'commit_with_footers': 'a commit with footers 2',
-                        'description': 'subject 2',
-                    },
-                },
-                'owner': {'email': 'test@chromium.org'},
-            }, api=test_exporter.gerrit),
-        ]
-        test_exporter.run()
-        self.assertEqual(test_exporter.wpt_github.calls, [
-            'pr_with_change_id',
-            'update_pr',
-        ])
-        self.assertEqual(test_exporter.wpt_github.pull_requests_created, [])
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_github.py b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_github.py
index b0f59ca..2c4c37ca 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_github.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_github.py
@@ -8,7 +8,6 @@
 import urllib2
 
 from collections import namedtuple
-from webkitpy.w3c.common import WPT_GH_ORG, WPT_GH_REPO_NAME
 from webkitpy.common.memoized import memoized
 
 
@@ -64,7 +63,7 @@
         assert desc_title
         assert body
 
-        path = '/repos/%s/%s/pulls' % (WPT_GH_ORG, WPT_GH_REPO_NAME)
+        path = '/repos/w3c/web-platform-tests/pulls'
         body = {
             'title': desc_title,
             'body': body,
@@ -78,45 +77,13 @@
 
         return data
 
-    def update_pr(self, pr_number, desc_title, body):
-        """Updates a PR on GitHub.
-
-        API doc: https://developer.github.com/v3/pulls/#update-a-pull-request
-
-        Returns:
-            A raw response object if successful, None if not.
-        """
-        path = '/repos/{}/{}/pulls/{}'.format(
-            WPT_GH_ORG,
-            WPT_GH_REPO_NAME,
-            pr_number
-        )
-        body = {
-            'title': desc_title,
-            'body': body,
-        }
-        data, status_code = self.request(path, method='PATCH', body=body)
-
-        if status_code != 201:
-            return None
-
-        return data
-
     def add_label(self, number):
-        path = '/repos/%s/%s/issues/%d/labels' % (
-            WPT_GH_ORG,
-            WPT_GH_REPO_NAME,
-            number
-        )
+        path = '/repos/w3c/web-platform-tests/issues/%d/labels' % number
         body = [EXPORT_LABEL]
         return self.request(path, method='POST', body=body)
 
     def in_flight_pull_requests(self):
-        path = '/search/issues?q=repo:{}/{}%20is:open%20type:pr%20label:{}'.format(
-            WPT_GH_ORG,
-            WPT_GH_REPO_NAME,
-            EXPORT_LABEL
-        )
+        path = '/search/issues?q=repo:w3c/web-platform-tests%20is:open%20type:pr%20label:{}'.format(EXPORT_LABEL)
         data, status_code = self.request(path, method='GET')
         if status_code == 200:
             return [self.make_pr_from_item(item) for item in data['items']]
@@ -134,17 +101,10 @@
     def all_pull_requests(self):
         # TODO(jeffcarp): Add pagination to fetch >99 PRs
         assert self._pr_history_window <= 100, 'Maximum GitHub page size exceeded.'
-        path = (
-            '/search/issues'
-            '?q=repo:{}/{}%20type:pr%20label:{}'
-            '&page=1'
-            '&per_page={}'
-        ).format(
-            WPT_GH_ORG,
-            WPT_GH_REPO_NAME,
-            EXPORT_LABEL,
-            self._pr_history_window
-        )
+        path = ('/search/issues'
+                '?q=repo:w3c/web-platform-tests%20type:pr%20label:{}'
+                '&page=1'
+                '&per_page={}').format(EXPORT_LABEL, self._pr_history_window)
         data, status_code = self.request(path, method='GET')
         if status_code == 200:
             return [self.make_pr_from_item(item) for item in data['items']]
@@ -152,11 +112,7 @@
             raise Exception('Non-200 status code (%s): %s' % (status_code, data))
 
     def get_pr_branch(self, pr_number):
-        path = '/repos/{}/{}/pulls/{}'.format(
-            WPT_GH_ORG,
-            WPT_GH_REPO_NAME,
-            pr_number
-        )
+        path = '/repos/w3c/web-platform-tests/pulls/{}'.format(pr_number)
         data, status_code = self.request(path, method='GET')
         if status_code == 200:
             return data['head']['ref']
@@ -164,11 +120,7 @@
             raise Exception('Non-200 status code (%s): %s' % (status_code, data))
 
     def merge_pull_request(self, pull_request_number):
-        path = '/repos/%s/%s/pulls/%d/merge' % (
-            WPT_GH_ORG,
-            WPT_GH_REPO_NAME,
-            pull_request_number
-        )
+        path = '/repos/w3c/web-platform-tests/pulls/%d/merge' % pull_request_number
         body = {
             # This currently will noop because the feature is in an opt-in beta.
             # Once it leaves beta this will start working.
@@ -190,11 +142,7 @@
 
     def delete_remote_branch(self, remote_branch_name):
         # TODO(jeffcarp): Unit test this method
-        path = '/repos/%s/%s/git/refs/heads/%s' % (
-            WPT_GH_ORG,
-            WPT_GH_REPO_NAME,
-            remote_branch_name
-        )
+        path = '/repos/w3c/web-platform-tests/git/refs/heads/%s' % remote_branch_name
         data, status_code = self.request(path, method='DELETE')
 
         if status_code != 204:
@@ -205,19 +153,19 @@
 
     def pr_with_change_id(self, target_change_id):
         for pull_request in self.all_pull_requests():
-            change_id = self.extract_metadata('Change-Id: ', pull_request.body)
+            change_id = self._extract_metadata('Change-Id: ', pull_request.body)
             if change_id == target_change_id:
                 return pull_request
         return None
 
     def pr_with_position(self, position):
         for pull_request in self.all_pull_requests():
-            pr_commit_position = self.extract_metadata('Cr-Commit-Position: ', pull_request.body)
+            pr_commit_position = self._extract_metadata('Cr-Commit-Position: ', pull_request.body)
             if position == pr_commit_position:
                 return pull_request
         return None
 
-    def extract_metadata(self, tag, commit_body):
+    def _extract_metadata(self, tag, commit_body):
         for line in commit_body.splitlines():
             if line.startswith(tag):
                 return line[len(tag):]
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_github_mock.py b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_github_mock.py
index 9060d206..69abba4 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_github_mock.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_github_mock.py
@@ -32,25 +32,20 @@
     def create_pr(self, remote_branch_name, desc_title, body):
         self.calls.append('create_pr')
 
+        assert remote_branch_name
+        assert desc_title
+        assert body
+
         if self.create_pr_fail_index != self.create_pr_index:
             self.pull_requests_created.append((remote_branch_name, desc_title, body))
 
         self.create_pr_index += 1
 
-        return {'number': 5678}
-
-    def update_pr(self, pr_number, desc_title, body):  # pylint: disable=unused-argument
-        self.calls.append('update_pr')
-
-        return {'number': 5678}
+        return {}
 
     def delete_remote_branch(self, _):
         self.calls.append('delete_remote_branch')
 
-    def add_label(self, _):
-        self.calls.append('add_label')
-        return {}, 200
-
     def get_pr_branch(self, number):
         self.calls.append('get_pr_branch')
         return 'fake branch for PR {}'.format(number)
@@ -66,9 +61,3 @@
         for pr in self.pull_requests:
             if change_id in pr.body:
                 return pr
-
-    def extract_metadata(self, tag, commit_body):
-        for line in commit_body.splitlines():
-            if line.startswith(tag):
-                return line[len(tag):]
-        return None
diff --git a/third_party/WebKit/Tools/Scripts/wpt-export b/third_party/WebKit/Tools/Scripts/wpt-export
index f2057d3..eb26a13 100755
--- a/third_party/WebKit/Tools/Scripts/wpt-export
+++ b/third_party/WebKit/Tools/Scripts/wpt-export
@@ -44,46 +44,34 @@
         help='Gerrit username (found on settings page or in .gitcookies).')
     parser.add_argument('--gerrit-token', default=None,
         help='Gerrit API key (found on settings page or in .gitcookies).')
-
-    # TODO(jeffcarp): Remove this after SSHing into wpt-exporter and updating file
     parser.add_argument(
         '--github-credentials-json',
-        help='Deprecated. Use --credentials-json.')
-
-    parser.add_argument(
-        '--credentials-json',
-        help='A JSON file with an object containing zero or more of the following '
-             'keys that can override command line flags: '
-             'GH_USER, GH_TOKEN, GERRIT_USER, GERRIT_TOKEN')
+        help='A JSON file with schema {"GH_USER": "", "GH_TOKEN": ""}. '
+             'This will override credentials that were passed via command line or env var.')
     args = parser.parse_args()
     host = Host()
-    credentials = {
-        'GH_USER': args.gh_user,
-        'GH_TOKEN': args.gh_token,
-    }
-    credentials_json = None
+    gh_user = args.gh_user
+    gh_token = args.gh_token
 
+    if not gh_user:
+        gh_user = host.environ.get('GH_USER')
+    if not gh_token:
+        gh_token = host.environ.get('GH_TOKEN')
     if args.github_credentials_json:
-        credentials_json = args.github_credentials_json
-    if args.credentials_json:
-        credentials_json = args.credentials_json
-
-    if credentials_json:
-        with open(credentials_json, 'r') as f:
+        with open(args.github_credentials_json, 'r') as f:
             contents = json.load(f)
-            for key in ('GH_USER', 'GH_TOKEN', 'GERRIT_USER', 'GERRIT_TOKEN'):
-                if key in contents:
-                    credentials[key] = contents[key]
+            gh_user = contents['GH_USER']
+            gh_token = contents['GH_TOKEN']
 
-    if not (credentials['GH_USER'] and credentials['GH_TOKEN']):
+    if not (gh_user and gh_token):
         parser.error('Must provide both gh_user and gh_token for GitHub.')
 
     TestExporter(
-        host=host,
-        gh_user=credentials['GH_USER'],
-        gh_token=credentials['GH_TOKEN'],
-        gerrit_user=credentials['GERRIT_USER'],
-        gerrit_token=credentials['GERRIT_TOKEN'],
+        host,
+        gh_user,
+        gh_token,
+        args.gerrit_user,
+        args.gerrit_token,
         dry_run=args.dry_run
     ).run()
 
diff --git a/tools/ipc_fuzzer/message_replay/replay_process.cc b/tools/ipc_fuzzer/message_replay/replay_process.cc
index d79da3f..10173728 100644
--- a/tools/ipc_fuzzer/message_replay/replay_process.cc
+++ b/tools/ipc_fuzzer/message_replay/replay_process.cc
@@ -50,7 +50,8 @@
 #endif
   CHECK(platform_channel.is_valid());
   return mojo::edk::IncomingBrokerClientInvitation::Accept(
-      mojo::edk::ConnectionParams(std::move(platform_channel)));
+      mojo::edk::ConnectionParams(mojo::edk::TransportProtocol::kLegacy,
+                                  std::move(platform_channel)));
 }
 
 ReplayProcess::ReplayProcess()
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index c478558..06a009a 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -11909,6 +11909,14 @@
   </summary>
 </histogram>
 
+<histogram name="Dialog.Create" enum="BooleanCreated">
+  <owner>pdyson@chromium.org</owner>
+  <summary>
+    Counts the number times dialog boxes are created using a particular parent
+    class.
+  </summary>
+</histogram>
+
 <histogram name="Dialog.Creation" enum="DialogName">
   <owner>pdyson@chromium.org</owner>
   <summary>
@@ -29594,6 +29602,14 @@
   </summary>
 </histogram>
 
+<histogram name="Memory.Experimental.Browser.PrivateMemoryFootprint.MacOS"
+    units="MB">
+  <owner>erikchen@chromium.org</owner>
+  <summary>
+    A rough estimate of the private memory footprint of the browser process.
+  </summary>
+</histogram>
+
 <histogram name="Memory.Experimental.Browser.PurgedMemory" units="MB">
   <owner>bashi@chromium.org</owner>
   <summary>
@@ -29620,6 +29636,14 @@
   </summary>
 </histogram>
 
+<histogram name="Memory.Experimental.Extension.PrivateMemoryFootprint.MacOS"
+    units="MB">
+  <owner>erikchen@chromium.org</owner>
+  <summary>
+    A rough estimate of the private memory footprint of an extension process.
+  </summary>
+</histogram>
+
 <histogram name="Memory.Experimental.Gpu.PhysicalFootprint.MacOS" units="MB">
   <owner>erikchen@chromium.org</owner>
   <summary>
@@ -29630,6 +29654,14 @@
   </summary>
 </histogram>
 
+<histogram name="Memory.Experimental.Gpu.PrivateMemoryFootprint.MacOS"
+    units="MB">
+  <owner>erikchen@chromium.org</owner>
+  <summary>
+    A rough estimate of the private memory footprint of the GPU process.
+  </summary>
+</histogram>
+
 <histogram base="true" name="Memory.Experimental.Renderer" units="MB">
 <!-- Name completed by histogram_suffixes name="RendererMemoryAllocator" -->
 
@@ -29646,6 +29678,14 @@
   </summary>
 </histogram>
 
+<histogram name="Memory.Experimental.Renderer.PrivateMemoryFootprint.MacOS"
+    units="MB">
+  <owner>erikchen@chromium.org</owner>
+  <summary>
+    A rough estimate of the private memory footprint of a renderer process.
+  </summary>
+</histogram>
+
 <histogram name="Memory.Experimental.Renderer.PurgedMemory" units="MB">
   <owner>bashi@chromium.org</owner>
   <summary>
@@ -42462,6 +42502,16 @@
   </summary>
 </histogram>
 
+<histogram name="NewTabPage.ContentSuggestions.Notifications.AutoOptOuts"
+    enum="ContentSuggestionsNotificationsOptOut">
+  <owner>sfiera@chromium.org</owner>
+  <summary>
+    Android: The number of times a user opted out, keyed by method: IMPLICIT
+    (user ignored enough notifications consecutively that we think they're not
+    interested), or EXPLICIT (via explicit setting).
+  </summary>
+</histogram>
+
 <histogram name="NewTabPage.ContentSuggestions.Notifications.Impressions"
     enum="ContentSuggestionsNotificationsImpression">
   <owner>sfiera@chromium.org</owner>
@@ -42472,16 +42522,6 @@
   </summary>
 </histogram>
 
-<histogram name="NewTabPage.ContentSuggestions.Notifications.OptOuts"
-    enum="ContentSuggestionsNotificationsOptOut">
-  <owner>sfiera@chromium.org</owner>
-  <summary>
-    Android: The number of times a user opted out, keyed by method: IMPLICIT
-    (user ignored enough notifications consecutively that we think they're not
-    interested), or EXPLICIT (via explicit setting).
-  </summary>
-</histogram>
-
 <histogram name="NewTabPage.ContentSuggestions.OpenDisposition"
     enum="WindowOpenDisposition">
   <owner>treib@chromium.org</owner>
@@ -85439,6 +85479,18 @@
   <affected-histogram name="DesktopIOSPromotion.VariationSigninReason"/>
 </histogram_suffixes>
 
+<histogram_suffixes name="DialogTypes" separator="." ordering="prefix">
+  <suffix name="DialogDelegateView"
+      label="Counts dialog boxes created using DialogDelegateView. These are
+             a subset of those created with DialogDelegate."/>
+  <suffix name="BubbleDialogDelegateView"
+      label="Counts dialog boxes created using BubbleDialogDelegateView.
+             These are a subset of those created with DialogDelegateView
+             (which, in turn, are a subset of those created with
+             DialogDelegate)."/>
+  <affected-histogram name="Dialog.Create"/>
+</histogram_suffixes>
+
 <histogram_suffixes name="DiskUsagePerUserCount" separator=".">
   <suffix name="1User" label="Only 1 user exists on device."/>
   <suffix name="2Users" label="2 users exist on device."/>
@@ -86629,6 +86681,8 @@
              backend database."/>
   <suffix name="BudgetManager"
       label="Database for storing budget information for origins."/>
+  <suffix name="FeatureEngagementTrackerStore"
+      label="Databases for FeatureEngagementTracker"/>
   <affected-histogram name="LevelDB.Open"/>
 </histogram_suffixes>
 
diff --git a/tools/perf/benchmarks/system_health_smoke_test.py b/tools/perf/benchmarks/system_health_smoke_test.py
index 2930e282..6b9841d8 100644
--- a/tools/perf/benchmarks/system_health_smoke_test.py
+++ b/tools/perf/benchmarks/system_health_smoke_test.py
@@ -32,6 +32,8 @@
 
 
 _DISABLED_TESTS = frozenset({
+  # cburg.com/721549
+  'benchmarks.system_health_smoke_test.SystemHealthBenchmarkSmokeTest.system_health.memory_mobile.browse:news:toi',  # pylint: disable=line-too-long
   # crbug.com/702455
   'benchmarks.system_health_smoke_test.SystemHealthBenchmarkSmokeTest.system_health.memory_desktop.browse:media:youtube',  # pylint: disable=line-too-long
   # crbug.com/637230
diff --git a/ui/android/delegated_frame_host_android.cc b/ui/android/delegated_frame_host_android.cc
index e33c8b4..3963a3a 100644
--- a/ui/android/delegated_frame_host_android.cc
+++ b/ui/android/delegated_frame_host_android.cc
@@ -127,7 +127,7 @@
 
   content_layer_->RemoveFromParent();
   content_layer_ = nullptr;
-  support_->EvictFrame();
+  support_->EvictCurrentSurface();
   surface_info_ = cc::SurfaceInfo();
 }
 
diff --git a/ui/aura/local/compositor_frame_sink_local.cc b/ui/aura/local/compositor_frame_sink_local.cc
index d859f92..96746896 100644
--- a/ui/aura/local/compositor_frame_sink_local.cc
+++ b/ui/aura/local/compositor_frame_sink_local.cc
@@ -51,7 +51,7 @@
   DCHECK(thread_checker_->CalledOnValidThread());
   client_->SetBeginFrameSource(nullptr);
   begin_frame_source_.reset();
-  support_->EvictFrame();
+  support_->EvictCurrentSurface();
   support_.reset();
   thread_checker_.reset();
   cc::CompositorFrameSink::DetachFromClient();
diff --git a/ui/views/bubble/bubble_dialog_delegate.cc b/ui/views/bubble/bubble_dialog_delegate.cc
index 0f23909..1e93981 100644
--- a/ui/views/bubble/bubble_dialog_delegate.cc
+++ b/ui/views/bubble/bubble_dialog_delegate.cc
@@ -4,6 +4,7 @@
 
 #include "ui/views/bubble/bubble_dialog_delegate.h"
 
+#include "base/metrics/histogram_macros.h"
 #include "build/build_config.h"
 #include "ui/accessibility/ax_node_data.h"
 #include "ui/base/default_style.h"
@@ -221,6 +222,7 @@
   if (anchor_view)
     SetAnchorView(anchor_view);
   UpdateColorsFromTheme(GetNativeTheme());
+  UMA_HISTOGRAM_BOOLEAN("Dialog.BubbleDialogDelegateView.Create", true);
 }
 
 gfx::Rect BubbleDialogDelegateView::GetBubbleBounds() {
diff --git a/ui/views/window/dialog_delegate.cc b/ui/views/window/dialog_delegate.cc
index d354353..0c62cdc 100644
--- a/ui/views/window/dialog_delegate.cc
+++ b/ui/views/window/dialog_delegate.cc
@@ -243,6 +243,7 @@
 DialogDelegateView::DialogDelegateView() {
   // A WidgetDelegate should be deleted on DeleteDelegate.
   set_owned_by_client();
+  UMA_HISTOGRAM_BOOLEAN("Dialog.DialogDelegateView.Create", true);
 }
 
 DialogDelegateView::~DialogDelegateView() {}